Introduction POO Java Syntaxe Classes et objets Cours Java Jean-Baptiste Mouret

Introduction POO Java Syntaxe Classes et objets Cours Java Jean-Baptiste Mouret mouret@isir.fr ISIR - Université Paris 6 http://www.isir.fr Cours 1 - ROB4 Jean-Baptiste Mouret Cours Java Introduction POO Java Syntaxe Classes et objets Programmation orientée objet : introduction Jean-Baptiste Mouret Cours Java Introduction POO Java Syntaxe Classes et objets Déroulement 10 cours/TD (2h), 10 TP (4h) : 60h 6 cours de Java Interro (1h) au dernier cours de Java : 25% 4 cours de c++ Interro (1h) au dernier cours de c++ : 25% TP notés (A,B,C,D,E) : 10% Un micro-projet en Java (simulateur de Roomba) : 20% Un micro-projet en C++ (simulateur dynamique) : 20% Jean-Baptiste Mouret Cours Java Introduction POO Java Syntaxe Classes et objets Programmation orientée objet Programmation orientée objet = POO « Manière de programmer »pour des logiciels : complexes extensibles Concept large : manière de penser, d’exprimer des concepts manière d’organiser le code source penser un logiciel « pour l’avenir »en plus du présent toute une philosophie avec un sens esthétique Jean-Baptiste Mouret Cours Java Introduction POO Java Syntaxe Classes et objets Langages objets Langages orientés objets Modula 3 (le précurseur) SmallTalk (pur objet) Java C++ Python (scripts) Ruby (scripts) Eiffel (applications fiables) C# (Microsoft .NET) Objective C (NEXT/Apple, dérivé du C) Langages non orientés objets C Assembleur LISP & Scheme (fonct.) Haskell (fonct.) Shell Unix Pascal Langages permettant la POO Php, Ada, Objective Caml, Perl, Delphi Connaître les concepts de la POO est requis pour programmer dans la plupart des langages modernes Jean-Baptiste Mouret Cours Java Introduction POO Java Syntaxe Classes et objets Programmation structurée (1) Imaginons que l’on programme sur un logiciel de dessin de schémas (i.e. Adobe Illustrator, Microsoft Visio, ...) Plusieurs types de formes : rectangles cercles flèches lignes courbes annotation textuelle Chaque forme à des caractéristiques : Cercle : centre, rayon, couleur Rectangle : centre, coté1, coté2 Flèche : point de départ, point d’arrivée ... Jean-Baptiste Mouret Cours Java Introduction POO Java Syntaxe Classes et objets Programmation structurée (2) Regrouper les informations qui vont ensemble (exemple EN C) : typedef struct { int x ; int y ; } poi n t _t ; typedef struct { po in t _ t center ; int radius ; } c i r c l e _ t ; typedef struct { po in t _ t center ; int c1 , c2 ; } r e c t _ t ; Jean-Baptiste Mouret Cours Java Introduction POO Java Syntaxe Classes et objets Programmation structurée (2) Exemple de fonction : déplacer une forme (en C) : void move_circle ( c i r c l e _ t ∗c , int x , int y ) { c−>point . x += x ; c−>point . y += y ; } void move_rect ( r e c t _ t ∗r , int x , int y ) { r−>point . x += x ; r−>point . y += y ; } Ne diffère que par le type de forme Obligé à chaque ligne de préciser “c->” ou “r->” etc.. On doit tout réécrire si on ajoute une forme Jean-Baptiste Mouret Cours Java Introduction POO Java Syntaxe Classes et objets Conclusion Ce code va vite devenir difficile à écrire et à maintenir Ce problème se pose pour la plupart des logiciels complexes La programmation objet essaye de remédier à ce type problèmes Modéliser des concepts abstraits sous formes de familles de classes d’objets Forme = une classe « abstraite » Cercle = une classe « plus concrête », dérivée de forme Rectangle = une classe « plus concrête », dérivée de forme Jean-Baptiste Mouret Cours Java Introduction POO Java Syntaxe Classes et objets Java Jean-Baptiste Mouret Cours Java Introduction POO Java Syntaxe Classes et objets Historique Proposé par Sun Microsystem en 1995 Maintenant « Open Source » (2006) Objectifs initiaux : simple, orienté objet et familier robuste et sécurisé neutre au niveau de l’architecture et portable performant interpété, multi-thread et dynamique Langage généraliste (vs JavaScript, html, ...) « n’importe quel programme » Jean-Baptiste Mouret Cours Java Introduction POO Java Syntaxe Classes et objets Concept : la JVM Java repose sur : une machine virtuelle (Java Virtual Machine) un compilateur vers le bytecode de la machine virtuelle Développeur : Code source.java Compilateur (javac) int a; Sys te m . ou t. print ln ... for (int i = 0 ; . ..) .... 0 01 00 10 aea 21 00 2 13 21 a21 0 0 01 31 21 31 31 0 31 2aae21 31 2 1 23 12 33 24 23 0 31 23 1ooeu Bytecode (.class) Jean-Baptiste Mouret Cours Java Introduction POO Java Syntaxe Classes et objets Concept : la JVM Utilisateur / client : 0 01 00 10 aea 21 00 2 13 21 a21 0 0 01 31 21 31 31 0 31 2aae21 31 2 1 23 12 33 24 23 0 31 23 1ooeu Jean-Baptiste Mouret Cours Java Introduction POO Java Syntaxe Classes et objets Particulartés principales Machine virtuelle Langage compilé (vs Python, Ruby, Perl, etc...) Typage statique (vs Python, Ruby, Perl, etc...) Langage orienté objet (cf 2ème partie du cours) Ramasse miette libération automatique de la mémoire Exceptions gestion des erreurs Bibliothèque standard couvrant de nombreux domaines (vs C) Depuis Java 1.5 : generics (conteneurs capables de contenir des objets de n’importe quel type « proprement ») Jean-Baptiste Mouret Cours Java Introduction POO Java Syntaxe Classes et objets Pourquoi utiliser Java ? Portabilité très bonne (vs C#) Plus moderne que le C (et le C++) Code de plus haut niveau que le C/C++ ramasse-miette (garbage collector) programmation objet ... Bons outils (éditeurs, refactoring, ...) Bonne bibliothèque standard réseau threads conteneurs (listes, tables de hachage, ...) Adapté au web : coté serveur : JSP coté client : applets java Jean-Baptiste Mouret Cours Java Introduction POO Java Syntaxe Classes et objets Pourquoi ne pas utiliser Java ? Peu adapté à la programmation bas niveau & système pas de timing précis (OS temps réel) pas d’interaction fine avec le système (noyaux, drivers, etc.) Plus lent que du C (mais plus beaucoup) peu de contrôle fin de la performance peu adapté au calcul de très haute performance ex. simulation météo, mécanique des fluides, ... Jean-Baptiste Mouret Cours Java Introduction POO Java Syntaxe Classes et objets Applications codées en en java : exemple Opéra Mini (tel. portable) http ://meteofrance.com (jsp) Des milliers (millions ?) de programmes pour PC & tel. portable Jean-Baptiste Mouret Cours Java Introduction POO Java Syntaxe Classes et objets Syntaxe de base Jean-Baptiste Mouret Cours Java Introduction POO Java Syntaxe Classes et objets Hello world public class HelloWorld { public static void main ( String [ ] args ) { System . out . p r i n t l n ( ‘ ‘ Hello world’’ ) ; } } Fichier HelloWorld.java (nom de la classe) Jean-Baptiste Mouret Cours Java Introduction POO Java Syntaxe Classes et objets Compilation & execution Compilation javac HelloWorld.java création HelloWorld.class Execution java HelloWorld Jean-Baptiste Mouret Cours Java Introduction POO Java Syntaxe Classes et objets Types de base boolean (true ou false) byte (8 bits) short (16 bits), int (32 bits) long (64 bits) float double char (16 bits, unicode) cast (transtypage) : int b = (int) a ; Jean-Baptiste Mouret Cours Java Introduction POO Java Syntaxe Classes et objets Tableaux simples déclaration : int[] mon_tableau ; allocation : mon_tableau = new int[6] ; affectation : int mon_tableau[] = {1, 2, 3, 4, 5, 6 } taille du tableau : mon_tableau.length ; les index commencent à 0 (comme en C) Jean-Baptiste Mouret Cours Java Introduction POO Java Syntaxe Classes et objets Syntaxe de base Très proche du C : Affectation : = Arithmétique : +, -, *,/ ,%, ++, –, +=, -=, *=, /=,%= Logique : ||, && Comparaison : <, >,<=, >=, ==, != Commentaires : // /* .... */ Jean-Baptiste Mouret Cours Java Introduction POO Java Syntaxe Classes et objets Structure de contrôle Comme en C. i f ( condition1 ) { i n s t r u c t i o n 1 ; i n s t r u c t i o n 2 ; / / . . . } else { i n s t r u c t i o n 3 ; i n s t r u c t i o n 4 ; / / . . . } switch ( expression ) { case const1 : i n s t r u c t i o n 1 ; i n s t r u c t i o n 2 ; break ; case const2 : i n s t r u c t i o n 1 ; break ; default : i n s t r u c t i o n 1 ; } Jean-Baptiste Mouret Cours Java Introduction POO Java Syntaxe Classes et objets Boucles Comme en c++ et en C99. for ( int i = 0; i < 10; ++ i ) { i n s t r uploads/Philosophie/ java.pdf

  • 6
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager