Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
Département d'Informatique
Support de Cours
Programmation Orientée Objet
Auditoire
2ème Année Master de Recherche
Ingénierie de l’Optimisation et d’Aide à la Décision
Enseignant
Bilel GARGOURI
Introduction Générale
1. Les fondements de la
Programmation Orientée Objet
Etudiant
matricule
nom
prenom
filiere
niveau
groupe Classe Etudiant
changerFiliere ()
changerNiveau ()
changerGroupe ()
Cours de Programmation Orientée Objet 9
Exercice
xxxxxxxxx
Exemple:
La classe Etudiant hérite de la classe Personne.
fonction de l’objet
fonction données
globales Attributs
fonction de l’objet
Méthodee
fonction de l’objet
Attributs
Méthodes de l’objet
de l’objet
JVM Sun
(1) (2)
Code Source Byte-code JVM Mac
Cours de POO 26
1.2.Points virgules, blocs et blancs
Les instructions se terminent par un point virgule ";"
Un bloc d'instructions est délimité par des accolades "{"
et "}"
Les blancs (espaces, tabulations et sauts de lignes) sont
utilisés entre les éléments du code source
1.3.Identificateurs
Un identificateur (d'objet, de variable, …) commence par
une lettre, un trait de soulignement "_" ou un signe dollar
"$". Les caractères qui suivent peuvent contenir des
chiffres. Les identificateurs n'ont pas de longueurs
maximales et opèrent une distinction entre majuscule et
minuscule.
Cours de POO 27
1.4.Mots réservés
abstract boolean break byte case
catch char class continue default
do double else extends false
final finally float for
implements import instanceof int interface
long native new null package
private protected public return short
static super switch synchronized this
throw throws transient true try
void volatile while const goto
Cours de POO 28
2.Types élémentaires
Les types élémentaires (de base ou encore primitifs) sont :
Type Taille Codage V. Inf. V. Sup.
byte 1 octet signé -256 255
short 2 octets signé -32768 32767
2147483647
int 4 octets signé -2147483648
Cours de POO 30
3.Variables et constantes
3.1.Variables
La déclaration des variables et leur affectation
s'effectue de façon similaire au langage C.
Exemples :
byte i=5;
int x=320;
long l = 36600040;
float f = 253.56;
double d=23.9 e31;
char c='a';
boolean b= true;
Cours de POO 31
3.2.Constantes
Une constante est déclarée avec le modificateur
"final". Il est obligatoire de l'initialiser au moment de
la déclaration. Les identificateurs des constantes
sont (par convention) en majuscule.
Exemple : final double PI = 3.141592;
Cours de POO 32
4.Les expressions
4.1.Rappel
Une constante ou une variable forme ce qu'on
appelle une expression. Les expressions peuvent
être combinées entre elles par des opérateurs et
former ainsi des expressions plus complexes.
Cours de POO 33
4.2.Les principaux opérateurs
Type des opérateurs Opérateurs Types des opérandes
binaire +, -, *, /, % Entiers et réels
Arithmétiques unaire -, --, ++
étendus +=, -=, *=, /=
Logiques !, &&, || Booléens
De comparaison (le ==, !=, <, <=, >, >= Tout type (y compris
résultat est booléen) les références d'objets)
Cours de POO 34
4.3.Conversion de types
Il existe quatre conversions de types :
Conversion explicite (casting)
Conversion implicite lors d'une affectation
Conversion implicite lors d'une promotion arithmétique. C'est
le cas où les opérandes d'un opérateur ne sont pas du même
type. Le choix de l'opérande à convertir se fait du type le plus
restreint vers le type le plus large.
Conversion implicite lors d'un passage de paramètres
Cours de POO 35
Les conversions pouvant provoquer une perte de valeur ne sont
pas autorisées de manière implicite. Elles doivent être
demandées explicitement (exemple : de float vers int).
Exemples de conversion :
int i,j;
short s = 2;
float f = 1.5;
i = (int) f; // conversion explicite obligatoire avec perte
i = s; // conversion implicite
f = i / 2.0; //conversion par promotion arithmétique
// soit la méthode : int meth(int arg)
j=objet.meth(s); // conversion lors d'un passage de
//paramètres
Cours de POO 36
5.Les structures de contrôle
Utilisation des même structures de contrôle que le langage C tout
en gardant la même syntaxe : if, ? :, switch, while, do while, for.
Utilisation des blocs labellisés
UN: while(...) {
DEUX: for(...) {
TROIS: while(...) {
if (...) continue DEUX; // Boucle for
if (...) break UN; // Quitte la 1ère boucle while
continue; // 2ème boucle while
…
} } }
Cours de POO 37
5.1.La structure if
class IfApp {
public static void main(String args[ ]) {
int c = 0 ;
if ( c == 1 )
System.out.println( " Jamais imprimé " ) ;
else
System.out.println( " Ceci sera imprimé" ) ;
} }
Remarque : L'évaluation de l'expression de la condition
est obligatoirement de type booléen.
Cours de POO 38
5.2.La structure switch
char c = (char) System.in.read( );
switch ( c )
{ case 'a' : case 'A' :
System.out.println( " A " ) ;
break ;
case 'b' : case 'B' :
System.out.println( " B " ) ;
break ;
default :
System.out.println( " Erreur " ) ;
break ;
}
Cours de POO 39
5.3.La structure while
class WhileApp
{ public static void main(String args[ ])
{ int c ;
do {
System.out.println("Entrez un nombre positif <= 5") ;
c = Clavier.lireInt( ) ;
} while ( c <= 0 || c > 5 );
while ( c > 0 )
System.out.println( c-- );
}
}
Cours de POO 40
5.4.La structure for
class ForApp
{
public static void main(String args[ ])
{
int i ;
for ( i=0 ; i<=5 ; i++ )
System.out.println( i ) ;
for ( int j=0 ; j<=5 ; j++ )
System.out.println( j ) ;
j = 2 ; // ERREUR : j est local à la boucle for
}
}
Cours de POO 41
5.Les tableaux
Déclaration :
int[ ] T; // équivalent à : int T[ ];
float cube [ ][ ][ ];
Création et initialisation :
int[ ] tab = {1, 2, 3, 5, 7, 7+4};
T = new int[42];
cube = new float[256][256][256];
T[0] = 3;
Cours de POO 42
Pour les tableaux dont le type de données est primitif,
chaque élément est initialisé par la valeur nulle du type
Pour les tableaux dont les éléments sont des objets
chaque élément est initialisé à null
Les indices des tableaux commencent par 0
Utilisation des tableaux
int l = T.length; // l = 42
int e = T[50];
//Lève l’exception //ArrayIndexOutOfBoundsException
Cours de POO 43
Chapitre 3 :
L'objet peut se comporter comme une boîte noire (le contenu est
masqué par des contrôles d'accès). Dans ce cas, quelques
méthodes doivent assurer son intégration dans le système. Ces
méthodes représentent une interface de service
Le contrôle d'utilisation d'une classe et celui d'accès aux
membres d'une classe sont deux concepts différents
Exemple :
public class TestEtudiant
{
public static void main(String [] args)
{Etudiant e1;
e1 = new Etudiant();
}
}
class Etudiant
{ private int matricule;
public String nom, prenom;
…
public Etudiant(int matricule, String nom, String prenom)
{this.matricule = matricule;
this.nom = nom;
this.prenom = prenom;
filiere = "LFIG"; niveau=1; groupe =1; }
…
}
Exemple :
…
if (e1 instanceof Etudiant)
// résultat vrai ou faux
…
1.1. Déclaration
Pour les tableaux dont les éléments sont des objets chaque
élément est initialisé à null
class TableauChar
{
public static void main(String[] arg)
{
char[] tableau;
tableau = new char[4];
tableau[0] = 'J';
tableau[1] = 'A';
tableau[2] = 'V';
tableau[3] = 'A';
System.out.println(tableau); //affiche : JAVA
}
}
L'héritage et le polymorphisme
1. Le concept de l’héritage
Il s’agit, dans tous les cas d’une solution à éviter car elle
présente beaucoup d’ambiguïté, surtout avec plusieurs niveaux
d’héritage.
public X X X X X
protected X X X X
par défaut X X X
(friendly)
Private X
Exemple :
A a = meth.creationObjet();
// meth renvoie un objet de type A ou d’un type dérivé de A
a.m();
//peut appeler la méthode m() de A ou de n’importe
//quelle sous-classe de A
Cours de Programmation Orientée Objet 149
8.2.1. Mécanisme du polymorphisme
Exemples :
interface Edition
{void editer();}
interface Affichage
{int MIN = 0;
int MAX=100;
void afficher();
}