Survey
* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the work of 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