Programmation par Objets et Java

Slides:



Advertisements
Présentations similaires
Bratec Martin ..
Advertisements

NOTIFICATION ÉLECTRONIQUE
Fragilité : une notion fragile ?
SEMINAIRE DU 10 AVRIL 2010 programmation du futur Hôtel de Ville
Phono-sémantique différentielle des monosyllabes italiens
MAGGIO 1967 BOLOGNA - CERVIA ANOMALIES DU SOMMEIL CHEZ L'HOMME
droit + pub = ? vincent gautrais professeur agrégé – avocat
Transcription de la présentation:

Programmation par Objets et Java Concepts de base

Objectifs Apprendre les rudiments de Java Partager des Vers Concepts Le language comme tel Idiosyncrasies Partager des 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 Une classe est un moule 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 Activée par les messages Forme spéciale : constructeur Activée par les messages Point.class State int x int y Methods getX() setX(int newX) getY() setY(int newY) toString() aPoint x = 5 y = 10 new

Messages et Méthodes Ma classe connaît mon comportement 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 x = 5 y = 10 aPoint.getClass() setX(20) getClass() Ma classe connaît mon comportement

Héritage inheritsFrom Pour spécialiser une classe setDir(0) Pour spécialiser une classe en ajoutant une méthode en spécialisant une méthode Pour factoriser les structures et les comportements communs setX( 5) toString() Point.class State int x int y Methods getX() setX(int newX) getY() setY(int newY) toString() Turtle.class State int dir int hop Methods getDir() setDir (int newDir) getHop() moveTo(Point aPoint) toString() aTurtle x = 5 y = 10 dir = 90 hop = 5 inheritsFrom

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 int getX() { return x;} public int getY() { return y;} public void setX(int newValue) { this.x = newValue;} public void setY(int newValue) { this.y = newValue;} public String toString() { return "Point(" + this.getX() + ", " + this.getY();} }

Types de données primitifs Mot-clé Description Taille/Format (integers) byte Byte-length integer 8-bit two's complement short Short integer 16-bit two's complement int Integer 32-bit two's complement long Long integer 64-bit two's complement (real numbers) float Single-precision floating point 32-bit IEEE 754 double Double-precision floating point 64-bit IEEE 754 (other types) char A single character 16-bit Unicode character boolean 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) cast Opérateur de création new Opérateur instanceof 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) // for (int i = arrayOfInts.length; --i >= 0;) 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());

Création d’instances /** * Tortue constructor comment. */ public Tortue(int x, int y) { this(); // super(); // this.x = x; this.setX(x); // setX(x); this.setY(y); }

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 www.javaworld.com Tutoriel JavaDoc: APIs www.javaworld.com