Transcript Java and Object-Oriented Programming
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 int x int y Methods getX() setX(int newX) getY() setY(int newY) toString() new aPoint 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 State Point.class
int x int y Methods getX() setX(int newX) getY() setY(int newY) toString() aPoint.getClass() aPoint x = 5 y = 10 setX(20) getClass() Ma classe connaît mon comportement
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 setDir(0) setX( 5) toString() State Point.class
int x int y Methods getX() setX(int newX) getY() setY(int newY) toString() inheritsFrom 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
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é
byte short int long float double char boolean
Description Taille/Format
Byte-length integer Short integer
(integers)
8-bit two's complement 16-bit two's complement Integer Long integer 32-bit two's complement 64-bit two's complement
(real numbers)
Single-precision floating point Double-precision floating point 32-bit IEEE 754 64-bit IEEE 754
(other types)
A single character A boolean value ( true or false ) 16-bit Unicode character 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
(); // 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