Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Programmation par Objets et Java Concepts de base Objectifs Apprendre les rudiments de Java – Concepts – Le language comme tel – Idiosyncrasies Partager des – Concepts – Vocabulaire – Expertise Vers – – – – JavaBeans La programmation visuelle Les schémas de conception La refactorisation Contenu La programmation par objets Le langage Java Les classes et opérations de base en Java Interfaces graphiques Construire et déployer des applications Stocker et manipuler des groupes d’objets Documentation en Java Concepts de base en programmation par objets – – – – – Classe Instance Message Méthode Héritage – Interface (Java) Classe Comportement d’une classe – Création des objects (instance) – java.lang.Class Une classe est un moule – Structure de l’état de ses instance – Comportement de ses instances Point.class State int x int y Methods getX setX(int newX) getY setY(int newY) toString() Instance Créée par les classes – Forme spéciale : constructeur Activée par les messages Point.class State aPoint int x int y Methods getX() setX(int newX) getY() setY(int newY) toString() new x=5 y = 10 Messages et Méthodes Les comportements d’une instance sont activés par transmission de messages Une méthode spécifie et implémente ce comportement Point.class State int x int y Methods getX() setX(int newX) getY() setY(int newY) toString() aPoint.getClass() aPoint setX(20) x=5 y = 10 getClass() Ma classe connaît mon comportement Héritage Pour spécialiser une classe setX( 5) – en ajoutant une méthode – en spécialisant une méthode setDir(0) Pour factoriser les structures et les comportements communs Point.class State int x int y Turtle.class inheritsFrom State int dir int hop Methods getX() setX(int newX) getY() setY(int newY) toString() Methods getDir() setDir (int newDir) getHop() moveTo(Point aPoint) toString() toString() aTurtle x=5 y = 10 dir = 90 hop = 5 Héritage multiple ? L’héritage multiple est très difficile à gérer en Java, – héritage simple Pour obtenir un comportement équivalent à l’héritage multiple – Interface • • • • un ensemble de signatures de méthode c’est une spécification plus facile à gérer Vérification de type Interface Une classe doit implanter les méthodes spécifiées par l’interface Un moyen de retarder le choix de l’implémentation réelle d’un objet à l’exécution Questions fondamentales des langages à objets Est-ce que tout est objet ? – en Java, non • Il existe des types primitifs: int… Est-ce qu’une classe est un objet ? – En Java, “pas aussi flexible” – En Smalltalk, complètement modifiable dynamiquement Héritage simple versus multiple – En Java, héritage simple + interfaces Le Langage Java Syntaxe Types primitifs Structures de contrôle Definition de classes Création d’instances Exécution de programmes Définition d’une classe package examples; import java.util.*; /** * This type was created in VisualAge. */ public class Point { protected int x = 5; private int y; // comments public Point() { super(); } public public public public int getX() { return x;} int getY() { return y;} void setX(int newValue) { this.x = newValue;} void setY(int newValue) { this.y = newValue;} public String toString() { return "Point(" + this.getX() + ", " + this.getY();} } Types de données primitifs Mot-clé byte short int long float double char boolean Description Taille/Format (integers) Byte-length 8-bit two's complement integer Short integer 16-bit two's complement Integer 32-bit two's complement Long integer 64-bit two's complement (real numbers) Single-precision 32-bit IEEE 754 floating point Double-precision 64-bit IEEE 754 floating point (other types) A single character 16-bit Unicode character A boolean value true or false (true or false) Portée des variables Opérateurs Arithmétiques (+, -…) Relationels (<…) et conditionnels ( &&…) Décalages (>>…) et Logiques (&…) affectations (=…) Autres – Raccourci if-else • op1 ? op2 : op3 – Opérateur de vecteur [] • float[] arrayOfFloats = new float[10]; – Opérateur “.” • pour accéder aux variables d’instance et aux variables de classe – Operateur de typage (type) – Opérateur de création new – Opérateur instanceof cast http://java.sun.com/docs/books/tutorial/java/nutsandbolts/operators.html Enoncés de contrôle for while if then else switch Exemple d’énoncé de contrôle boucle for public static void exampleFor() { //example 1 int[] arrayOfInts = {32, 87, 3, 589, 12, 1076, 2000, 8, 622, 127}; for (int i = arrayOfInts.length; i >= 0; i = i - 1) // { System.out.println(arrayOfInts[i]); } //example 2 Vector v = new Vector(); v.addElement(new Point(1, 2)); v.addElement(new Point(3, 4)); v.addElement(new Point(5, 6)); for (Enumeration enum = v.elements(); enum.hasMoreElements();) { System.out.println(enum.nextElement()); } for (int i = arrayOfInts.length; --i >= 0;) } Création d’instances /** * Tortue constructor comment. */ public Tortue(int x, int y) { this(); // // this.setX(x); // this.setY(y); } super(); this.x = x; setX(x); Enoncé de branchement break continue return Gestion des exceptions public void writeList() { PrintWriter out = null; try { System.out.println("Entering try statement"); out = new PrintWriter(new FileWriter("OutFile.txt")); for (int i = 0; i < size; i++) out.println("Value at: " + i + " = " + victor.elementAt(i)); } catch (ArrayIndexOutOfBoundsException e) { System.err.println("Caught ArrayIndexOutOfBoundsException: " + e.getMessage()); } catch (IOException e) { System.err.println("Caught IOException: " + e.getMessage()); } finally { if (out != null) { System.out.println("Closing PrintWriter"); out.close(); } else { System.out.println("PrintWriter not open"); } } } Exécution d’un programme /** * Starts the application. * @param args an array of command-line arguments */ public static void main(java.lang.String[] args) { PieceExamples.exampleFor(); } Programmes Java Éléments d’un programme Java JDK / JRE – – – – – – JDK 1.0 (inspiré de C++) JDK 1.1 (inspiré de Smalltalk) JDK 1.2 (Intégration de JFC (Swing, Collections), Security…) JDK 1.3 (Optimization…) JDK 1.4 (Libraires…) JDK 1.5 (contrôle et gestion de la JVM, performance, look and feel…) Code Java – – – – Packages Fichiers: .java, .class, .jar, .manifest Autres ressources: .properties Classpath Compilation d’un programme Java Exécution d’un programme Java – Stand-alone – browsers Ressources en Java http://java.sun.com – Tutoriel – JavaDoc: APIs www.javaworld.com