Académique Documents
Professionnel Documents
Culture Documents
Contenu du cours
Partie I: Programmation Orientée Objet
• Introduction
• Concepts de base
• UML
• Classes et Objets
• Méthodes et Opérations
• Liens et Associations
• Généralisation et Héritage
Programmation Orientée objet-JAVA: RxTel: S3 2
M. OULD BECHIR: mobechir@yahoo.fr
1
19/05/2013
Contenu du cours
Partie II: JAVA
• Instructions de base
• Types primitifs
• Opérateurs et expressions
• Structure d’un programme JAVA
• Structures de contrôles
• Classes et objets
• Héritage, Polymorphisme
• Interfaces, Paquetage
Programmation Orientée objet-JAVA: RxTel: S3 3
M. OULD BECHIR: mobechir@yahoo.fr
Déroulement du cours
• Volume horaire 40 heures (CM et TD)
• Cours sous forme de présentation ppt distribuée en fin
de chaque séance
• TD sous les stations de travail (JCreator , Eclipse, …)
• Samedi (10h-12h) & Mercredi (15h-17h)
• 2 CC (4ème semaine, 6ème semaine) sans les documents
• 1 Examen final, sans les documents
• NF=2/5 CC + 3/5 EF + PB
• Respect des horaires et attitude correcte
2
19/05/2013
Introduction
Définition#2 :
Conception de modèles permettant de représenter des entités du
monde physique par des objets qui possèdent une structure
interne et un comportement et qui réagissaient entre eux à
travers des relations en réalisant les fonctionnalités souhaitées
Introduction
3
19/05/2013
Introduction
Introduction
Historique de la POO
http://histoire.info.online.fr
4
19/05/2013
Objet
Classe
5
19/05/2013
Attributs
Classe
Méthodes
Classe
Instance
6
19/05/2013
Personne 3
Nom:
Date de naissance:
Taille:
Programmation Orientée objet-JAVA: RxTel: S3 13
M. OULD BECHIR: mobechir@yahoo.fr
Nom: Mohammed
Etudiant Date de naissance: 1990
Bac: C
Nom Note:14
Classe: RxTel: S1
Attributs Date de naissance
Bac Abdellahi Etudiant2
Note Nom: Abdellahi
Classe Date de naissance: 1990
Méthodes Bac: D
Note:12
DonnerNom() RxTel: S1 Classe: RxTel: S1
DonnerClasse()
Etudiant 3
CalculerNote()
Nom:
Date de naissance:
Programmation Orientée objet-JAVA: RxTel: S3 …
14
M. OULD BECHIR: mobechir@yahoo.fr
7
19/05/2013
1. Définition
Unified Modeling Language (UML) : Langage de Modélisation
Unifié, est une méthode de modélisation graphique orientée
objet.
Il s’agit d’un formalisme, permettant d’appréhender un
problème et de le modéliser
2. Historique
Lancé pour répondre à un besoin de standardisation
Hérite de OMT (Object Modeling Technics) et OOSE (Object
Orieted Software Engineering)
Auteurs: Grady Booch, Ivar Jacobson et Jim Rumbaugh
Programmation Orientée objet-JAVA: RxTel: S3 15
M. OULD BECHIR: mobechir@yahoo.fr
3. Modèles
Modèle des Classes: représente le concept usuel de la POO
Modèle des Etats : représente la dynamique des objets
Modèle des Cas d’Utilisation : décrit les besoins de
l’utilisateur
Modèle d’Interaction : représente les interactions entre les
objets
Modèle de Réalisation : phases terminales de
développement
Modèle de Déploiement : phases terminales de
développement
8
19/05/2013
Il utilise :
Le diagramme des classes
Modélisation des classes
le diagramme d’objets
Modélisation des instances
9
19/05/2013
iv) Attribut
Pour chaque instance d’une classe ayant un attribut, l’instance
possède cet attribut et cet attribut doit prendre une valeur pure et
non pas un autre objet
Programmation Orientée objet-JAVA: RxTel: S3 20
M. OULD BECHIR: mobechir@yahoo.fr
10
19/05/2013
Instance
Classe de la classe Etudiant
avec des valeurs
pures pour les
différents attributs
5. Méthodes
5.1 Définition
Une méthode/opération est une fonction ou une
transformation qui peut être appliquée aux objets/instances
d'une classe.
5.2 Propriétés
Une méthode peut s’appliquer sur plusieurs classes
Polymorphe.
Une opération peut avoir des paramètres fonction ou une procédure
en programmation classique
Une méthode doit avoir la même signature nombre et types de
paramètres
11
19/05/2013
5. Méthodes
5.3 Exemple
12
19/05/2013
EstInscritEn>
EstLaClasseDe<
ApourCapiatale>
EstLaCapitaleDe<
Pour éviter l’ambiguité, on remplace l’association ternaire par trois associations binaires
Programmation Orientée objet-JAVA: RxTel: S3 26
M. OULD BECHIR: mobechir@yahoo.fr
13
19/05/2013
1 EstInscritEn> ∞
La multiplicité est écrite du côté de la classe destination du rôle
Un à un (1,1)
Un à plusieurs (1, ∞)
Zéro à plusieurs (0, ∞)
Intervalle (a..b)
Valeurs (a, b, c)
Programmation Orientée objet-JAVA: RxTel: S3 27
M. OULD BECHIR: mobechir@yahoo.fr
1 EstInscritEn> ∞
Permission
de s’inscrire
14
19/05/2013
7. Généralisation / Héritage
7.1 Définition
La généralisation est la relation entre une classe et une ou
plusieurs versions affinées de la classe.
7. Généralisation / Héritage
7.1 Définition
15
19/05/2013
7. Généralisation / Héritage
7.2 Héritage
7. Généralisation / Héritage
7.2 Héritage
7.2.1 Redéfinition des méthodes
16
19/05/2013
Introduction
- Java est un ancien langage proche du C, amélioration du C++
- Indépendant de la plateforme
- Multithread
- Langage OO
- Plusieurs API (Application Program Interface)
- Les objets sont des pointeurs mais sans accès direct à la mémoire
- La gestion de la mémoire est implicite (garbage collector)
17
19/05/2013
Environnement de travail
18
19/05/2013
19
19/05/2013
1.2 Conventions
Tout nom de classe ou d’interface commence par une majuscule MaClasse
Tout nom de méthode ou de variable d’instance commence par une
getNom()
minuscule
Tout nom de constante (final) est écrit en majuscules avec underscore
PI_APRX
Commentaire sur une ligne //
Commentaire sur plusieurs lignes /* ………………………………..*/
20
19/05/2013
21
19/05/2013
22
19/05/2013
Exemple:
String texte;
Double d=Double.parseDouble(texte); // Converti le texte en réel flottant
int d=Integer.parseInt(texte); // Converti le texte en entier
23
19/05/2013
Opérateurs de comparaison
Egalité (==)
Supériorité /Infériorité (>, <, >=, <=)
Différence (!=)
Opérateurs d’affectation
Affectation : i=i+5;
Affectation élargie : i+=j; i=i+j; (pareil avec -=, *=, et/= )
Post incrémentation : i++ i=i+1 retourne i avant incrémentation
Pré incrémentation : ++i i=i+1 retourne i après incrémentation
24
19/05/2013
25
19/05/2013
SI If(condition) { instruction}
Default:{} break;
Tant que While(condition) {instruction}
Répéter Do{instructions;
}
While(condition);
Pour For(i=1;i<=k;i++){instruction}
26
19/05/2013
do {
System.out.println("Je compte "+i); // Boucle do while
i++;
}
while(i<=10);
} ProgrammationOrientée
évènementielle & réseau
Programmation objet-JAVA: RxTel::S3
RxTel: S3
53
} M. OULD BECHIR: mobechir@yahoo.fr
M. OULD BECHIR: mobechir@yahoo.fr
switch (choix)
{
case 1:
System.out.println("Entrez a:");
a=entree.nextDouble();
System.out.println("Entrez b:");
b=entree.nextDouble();
s=a+b;
System.out.println("La somme des deuxProgrammation
chiffres est:" +s);
évènementielle & réseau
Programmation Orientée objet-JAVA: RxTel::S3
RxTel: S3
54
break; M. OULD BECHIR: mobechir@yahoo.fr
M. OULD BECHIR: mobechir@yahoo.fr
27
19/05/2013
28
19/05/2013
Classes
Identificateurs
Constructeurs
Champs et méthodes
Spécificateurs
Affectation et comparaison d’objets
Héritage
Polymorphisme, Surcharge/Surdéfinition
Interfaces
Paquetage
29
19/05/2013
Exemple:
30
19/05/2013
31
19/05/2013
NB. La fonction principale de java (public static void main) est static car lorsqu'un programme Java est lancé,
il n'existe a priori aucun objet, donc aucun élément auquel appliquer une méthode. C'est pour cela que les
concepteurs du langage ont décidé que le corps d'un programme serait constitué par une méthode statique :
main.
32
19/05/2013
33
19/05/2013
Types de construction
Par constructeur par défaut
public MaClasse(type1 parm1, type2 parm2,…typen parmn){
champ1=parm1;
champ2=parm2;
…
champn=parmn;
}
Par copie
public MaClasse(MaClasse copie){
champ1=copie.champ1;
champ2=copie.champ2;
…
champn=copie.champn;
}
Programmation Orientée objet-JAVA: RxTel: S3 68
M. OULD BECHIR: mobechir@yahoo.fr
34
19/05/2013
Dans un programme java, le nom d’un paramètre peut cacher le nom d’un
champ de l’instance
Exemple
public class Etudiant {
String nom;
public Etudiant(String nom) {
}
}
Comment distinguer entre les deux ? utilisation de this
Méthode
Une méthode est une transformation appliqué sur des champs
Une méthode est typée (fonction ou procédure)
Une méthode possède un comportement
public static int Fact(int n); //retour de type entier
public static void initilisation(); //pas de retour
Programmation Orientée objet-JAVA: RxTel: S3 70
M. OULD BECHIR: mobechir@yahoo.fr
35
19/05/2013
O1=02 // affecte à O1 la référence de O2 donc O1 et O2 désigne le même objet et non pas deux objets de même valeur
Comparaison equals()
Soient trois objets O1 , O2 et O3
Objet O1=new Objet();
Objet O2=new objet(O1);
Objet O3=O1;
System.out.println(O2.equals(O1)); False
System.out.println(O3.equals(O1)); True
System.out.println(O3==O1); True
36
19/05/2013
Comparaison
Pour les classes qui veulent disposer d’une autre définition de l’égalité, il
faut définir la méthode equals()
Classes dérivées
Classes internes
Polymorphisme
Super classes
Classes abstraites
Surcharge
Surdéfinition
37
19/05/2013
DonnerNom():String
DonnerNom ():String DonnerNom():String
DonnerNom():String
Méthodes Ajouter() ChangerNote((N:int
ChangerNote N:int))
EstAdmis((N:int
EstAdmis N:int):
):bool
bool
Ajouter()
Propriétés
Etudiant possède toutes les caractéristiques de Personne
Etudiant possède des champs et des méthodes supplémentaires
Etudiant peut redéfinir, surcharger des méthodes de Personne plus loin
38
19/05/2013
Propriétés
Toutes les classes en Java héritent (dérivent) de la classe Object
Toute classe qui n'étend(hérite de) pas une autre en utilisant le mot réservé
extends, étend implicitement la classe Object (qui se trouve dans le package
java.lang). Ainsi, toutes les classes Java ont comme premier ancêtre la classe
Object.
Une classe peut avoir autant de sous-classes que nécessaires
Une classe peut avoir plus d’une super-classe
L’héritage est transitif, c'est-à-dire que tout ce qu'une classe a hérité de sa super-
classe, elle va le léguer à ses propres sous-classes
39
19/05/2013
40
19/05/2013
41
19/05/2013
2. Types
Surcharge (overloading)
Il s’agit d'utiliser le même nom pour des méthodes différentes dans des
classes différentes ou non
Si les méthodes se trouvent dans la même classe, elles seront distinguer
par leurs arguments
Exemple public class B{ public class C{
public class A{ Public void Afficher() { Public void Afficher() {
Public void Afficher() { } }
} } }
} Programmation Orientée objet-JAVA: RxTel: S3 83
M. OULD BECHIR: mobechir@yahoo.fr
42
19/05/2013
Exemple
public class Polymorphisme{
int Somme(int a, int b);
Double Somme(Double a, Double b);
Double Somme(Double a, Double b, Double c);
char Somme(char a, char b);
43
19/05/2013
44
19/05/2013
Afin d’inclure une classe dans un package, il faut écrire l’instruction suivante au
début du fichier java contenant la classe
package monpackage;
NB. Cette instruction permet de placer toutes les classes du fichier dans la package monpackage
Afin d’utiliser les classes d’un package, il faut importer le package les contenant:
import monpackage;
NB. Cette instruction ne va pas importer de manière récursive, les classes se trouvant dans les
sous packages de monpackage, il faut donc les importer
import monpackage.monsouspackage.*;
Programmation Orientée objet-JAVA: RxTel: S3 89
M. OULD BECHIR: mobechir@yahoo.fr
45
19/05/2013
Références
46