Transcript
Page 1: Programmation par Objets et Java

Programmation par Objetset

Java

Concepts de base

Page 2: Programmation par Objets et Java

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

Page 3: Programmation par Objets et Java

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

Page 4: Programmation par Objets et Java

Concepts de base en programmation par objets

– Classe– Instance– Message– Méthode– Héritage

– Interface (Java)

Page 5: Programmation par Objets et 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 xint y

MethodsgetXsetX(int newX)getYsetY(int newY)toString()

Page 6: Programmation par Objets et Java

Instance Créée par les classes

– Forme spéciale : constructeur Activée par les messages

new

aPoint

x = 5y = 10

Point.class

State int xint y

MethodsgetX()setX(int newX)getY()setY(int newY)toString()

Page 7: Programmation par Objets et Java

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

aPoint

x = 5y = 10

Point.class

State int xint y

MethodsgetX()setX(int newX)getY()setY(int newY)toString()

aPoint.getClass()setX(20)

Ma classe connaît mon comportement

getClass()

Page 8: Programmation par Objets et Java

Héritage Pour spécialiser une classe

– en ajoutant une méthode

– en spécialisant une méthode

Pour factoriser les structures et les comportements communs

Point.class

State int xint y

MethodsgetX()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()

inheritsFrom

aTurtle

x = 5y = 10dir = 90hop = 5

setX( 5)

setDir(0)

toString()

Page 9: Programmation par Objets et Java

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

Page 10: Programmation par Objets et Java

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

Page 11: Programmation par Objets et Java

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

Page 12: Programmation par Objets et Java

Le Langage Java

Syntaxe Types primitifs Structures de contrôle Definition de classes Création d’instances Exécution de programmes

Page 13: Programmation par Objets et Java

Définition d’une classepackage examples;import java.util.*;/** * This type was created in VisualAge. */ public class Point {

protected int x = 5;private int y;

// commentspublic 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();}}

Page 14: Programmation par Objets et Java

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 complementint Integer 32-bit two's complementlong Long integer 64-bit two's complement

(real numbers)float

Single-precision floating point 32-bit IEEE 754

doubleDouble-precision floating point 64-bit IEEE 754

(other types)char A single character

16-bit Unicode character

booleanA boolean value (true or false) true or false

Page 15: Programmation par Objets et Java

Portée des variables

Page 16: Programmation par Objets et Java

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

Page 17: Programmation par Objets et Java

Enoncés de contrôle

for while if then else switch

Page 18: Programmation par Objets et Java

Exemple d’énoncé de contrôleboucle 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()); } }

Page 19: Programmation par Objets et Java

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); }

Page 20: Programmation par Objets et Java

Enoncé de branchement

break continue return

Page 21: Programmation par Objets et Java

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"); } } }

Page 22: Programmation par Objets et Java

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(); }

Page 23: Programmation par Objets et Java

Programmes Java

Page 24: Programmation par Objets et 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

Page 25: Programmation par Objets et Java

Ressources en Java

http://java.sun.com– Tutoriel– JavaDoc: APIs

www.javaworld.com


Recommended