Software">
Programmation Orientee Objet
Programmation Orientee Objet
Programmation Orientee Objet
1
Chapitre 1: Introduction
2
PROBLÉMATIQUES
Un Logiciel est ensemble de programmes, de
procédés, de règles, et des documentations
relatifs au fonctionnement de l’ensemble des
traitements d’un système d’information.
Le principal rôle d’un logiciel est d’automatiser un
processus d’information dans un système d’information.
L’automatisation de ce processus permettra de faciliter
les tâches des utilisateurs.
La construction de logiciel est alors une activité
importante qui nécessite l’implication de plusieurs
ressources (financières, humaines) et nécessitent un
temps considérable.
La durée de vie du logiciel ne s’arrête pas au moment de
3
son intégration en le rendant accessible et fonctionnel
aux utilisateurs.
PROBLÉMATIQUES
Un logiciel doit être maintenu et peut évoluer et
survivre des années et des années.
Garantir la Fiabilité
4
SOLUTIONS
Pour construire des logiciels de qualité il faut appliquer
des méthodes et des principes connus de l’ingénieur
au domaine du logiciel et qui seront la base de
construction d’une industrie de logiciel.
6
SOLUTIONS
La modularité
C’est une instance cruciale du principe de décomposition
des problèmes. Il s’agit de partitionner le logiciel en
modules qui :
ont une cohérence interne (des invariants).
possèdent une interface ne divulguant sur le contenu
du module que ce qui est strictement nécessaire aux
modules clients.
L’évolution de l’interface est indépendante de celle de
l’implémentation du module.
Les choix d’implémentation sont indépendants de
l’utilisation du module.
Ce mécanisme s’appelle le camouflage de 7
9
SOLUTIONS
La construction incrémentale
Un développement logiciel a plus de chances d’aboutir s’il
suit une construction incrémental (babysteps).
Exemple 1 :
Laquelle de ses deux méthodes de programmation est la
plus efficace ?
1. Écrire l’ensemble du code source d’un programme et
compiler.
2. Écrire le code source d’une fonction, le compiler et
passer à la suivante.
Exemple 2 :
12
PROGRAMMATION PROCÉDURALES
13
PROGRAMMATION PROCÉDURALES
Les limites d’un programme en programmation
procédurale :
Il n’y a pas de méthode ou de cadre pour bien
organiser les fonctions.
Les modifications d’une fonction entraînent d’autres
modifications dans d’autres fonctions, etc.
La portée d’une modification est trop grande et
difficile à gérer.
Difficulté de faire évoluer le code
Redondance dans le code (la même chose est codé
plusieurs fois)
Propagation des erreurs – déboggage difficile
14
PASSAGE DE LA PROGRAMMATION
PROCÉDURALE À LA PROGRAMMATION
OBJETS
15
PASSAGE DE LA PROGRAMMATION
PROCÉDURALE À LA PROGRAMMATION
OBJETS
La POO inverse cet ordre et place les données au premier
plan avant de déterminer l’algorithme qui sera employé
pour opérer sur ces données.
En POO, la clé de la productivité consiste à rendre
chaque objet responsable de l’accomplissement de
quelques tâches associées.
Si un objet dépend d’une tâche qui n’est pas de sa
responsabilité, il doit avoir accès à un autre objet capable
d’accomplir cette tâche.
Le premier objet demande alors au second d’exécuter la
tâche en question. Cela s’effectue grâce à une version 16
plus généralisée des appels de fonctions auxquels vous
êtes habitués en programmation traditionnelle.
PASSAGE DE LA PROGRAMMATION
PROCÉDURALE À LA PROGRAMMATION
OBJETS
17
PASSAGE DE LA PROGRAMMATION
PROCÉDURALE À LA PROGRAMMATION
OBJETS
20
PRINCIPES DE LA PROGRAMMATION
ORIENTÉE OBJETS
Exemple d’application :
Ecrire un programme qui permet de gérer le calcul des
moyennes d’une institution (contenant 10 élèves) sachant
que le calcul des moyennes pour :
Exemple d’application :
Ingrédient Programmation procédurale : variable,
test(if..), boucle, fonctions, passage de paramètres
Ingrédient Programmation orientée objet : Classe, objet,
méthodes, attribut, héritage, encapsulation, instance,
- Classe Etudiant
Attributs/Méthodes(traitements ou bien opérations)
- Classe Etudiant 3 eme
Attributs/Méthodes
22
-Classe Etudiant 1 et 2 eme
Attributs/Méthodes
OBJECTIFS DE LA PROGRAMMATION
ORIENTÉE OBJETS
23
OBJECTIFS DE LA PROGRAMMATION
ORIENTÉE OBJETS
24
Chapitre 2: Java-
Présentation de
l’environnement/Éléments
de base
25
QU’EST-CE QUE JAVA ?
Java est un langage de programmation OO.
Il a été développé par SUN.
Objectif:
Exécution standardisé des programmes.
Maintenance simplifié.
Indépendance vis-à-vis des plateformes.
Distribué
de la même façon.
Interprété
La portabilité:
o Le compilateur Java génère
30
DÉPLOIEMENT D’UN PROGRAMME
PARADIGME CLASSIQUE DE LA
COMPILATION
31
LA PLATEFORME JAVA
Plateforme = environnement hardware ou software sur
lequel le programme est exécuté.
Swing, Awt…)
VERSIONS DE JAVA
33
ÉLÉMENTS DE BASE DE LANGAGE JAVA
Commentaires:
34
ÉLÉMENTS DE BASE DE LANGAGE JAVA
Identificateurs
Un identificateur désigne tout objet que le programmeur
souhaite manipuler.
Un identificateur java commence par une lettre, un trait
de soulignement « _ » ou le signe dollars « $ ».
Les caractères suivant de l’identificateur peuvent
contenir des chiffres.
Il y a une distinction entre majuscule et minuscule.
Exemple:
MaClasse, _maVariable, $maFonction, C1, … (Valide)
36
1var, -maclasse, fonction-recherche, … (non valide)
ÉLÉMENTS DE BASE DE LANGAGE JAVA
37
ÉLÉMENTS DE BASE DE LANGAGE JAVA
Types de données
Java prend en comptes les types de données suivant :
1. Les types primitifs
2. Les chaînes de caractères : Pour manipuler les chaînes
de caractères, Java offre une classe appelée String. Une
constante chaîne de caractères est placée entre doubles
cotes.
3. Les types par références : Contrairement aux types
primitifs qui possèdent des tailles standard et fixes, un
type tableau ou un type classe ne peut pas avoir une
taille standard. Au lieu de manipuler directement un
objet de la classe ou un objet tableau, Java manipule
une autre donnée qui représente une référence à l’objet38
manipulé. Pour cela classes ou types tableau sont
appelés des types références.
ÉLÉMENTS DE BASE DE LANGAGE JAVA
Types primitifs
Catégorie logique : Type boolean
En java, un boolean n’est pas considéré comme une valeur
numérique. Seules valeurs possibles sont true ou false.
exemples: boolean trouve=true;
Exemple:
Int x=2; 40
Long y=3L;
ÉLÉMENTS DE BASE DE LANGAGE JAVA
Types primitifs
Catégorie flottant : type float et double
une constante numérique est flottante si elle contient un
point décimal, une partie exponentielle lettre E ou si elle
sont suivit par la lettre F ou D.
Exemple :
2.3F
2.3
2.3E4
4F
float z=2.3F;
double t=2.3;
char c=‘r’;
43
ÉLÉMENTS DE BASE DE LANGAGE JAVA
Les expressions en java: Les opérateurs
d’incrémentation
Ce type d'opérateur permet de facilement augmenter ou
diminuer d'une unité une variable.
Ces opérateurs sont très utiles pour des structures telles
que des boucles, qui ont besoin d'un compteur (variable qui
augmente de un en un).
Un opérateur de type x++ permet de remplacer des
notations lourdes telles que x=x+1 ou bien x+=1
44
ÉLÉMENTS DE BASE DE LANGAGE JAVA
Les expressions en java: Les opérateurs de
comparaison
45
ÉLÉMENTS DE BASE DE LANGAGE JAVA
Conversion
Si dans une expression les opérandes sont de différents type
le résultat est alors convertis vers le type le plus grand.
Exemple :
int x=2; long y=4, z;
Exemple :
float z; z=(float) 14.33;
int x; x=(int) z; //x contient la valeur 14
47
LES STRUCTURES DE BASE
STRUCTURE ALTERNATIVE : IF..ELSE
if (<expression booléenne>)
{
//instruction ou bloc d’instruction a exécuter si
condition= vrai.
}
else
{
//instruction ou bloc d’instruction a exécuter si
condition= faux.
} 48
LES STRUCTURES DE BASE
STRUCTURE ALTERNATIVE : IF..ELSE
La partie else est optionnelle et peut être omise s’il n’y a
pas d’actions à effectuer lorsque la condition est fausse.
Exemple :
int i=2; boolean fin;
if(i<0)
{fin=true; i=0;}
else i++;
49
LES STRUCTURES DE BASE
STRUCTURE ALTERNATIVE : SWITCH
switch (<expression >)
{
case <valeur 1> : <bloc 1> break;
case <valeur 2> : <bloc 2> break;
……
case <valeur n> : <bloc n> break;
default : <bloc n+1>
}
l’expression du switch doit être de type compatible avec
un entier. Les expression en flottant ou en double ne sont
pas permises. 50
la spécification du break sont nécessaire pour gérer les
ruptures de séquences.
LES STRUCTURES DE BASE
STRUCTURE ALTERNATIVE : SWITCH
Exemple :
int k=0, i=2;
switch(i)
{
case 1: k+=20; break;
case 2: k+=2; break;
case 3: k+=10; break;
}
51
LES STRUCTURES DE BASE
OPÉRATEUR TERNAIRE
variable = condition ? si_test_vrai : si_test_faux ;
C’est équivalent à :
If(codition)
si_test_vrai
Else
si_test_faux
Exemple:
int a=1,b=3;
int min=(a<b)?a:b; //parenthèse facultatives}
52
LES STRUCTURES DE BASE
STRUCTURE RÉPÉTITIVE : WHILE
while (<expression_booléenne>)
{
<instruction ou bloc>
}
Exemple:
int i=0;
System.out.println(‘‘je sais compter jusqu’a 10’’);
while (i<10)
{ System.out.println(i);
i++; 53
}
LES STRUCTURES DE BASE
STRUCTURE RÉPÉTITIVE : DO .. WHILE
do
{
<instruction ou bloc>
}
while (<expression_booléenne>);
Exemple:
int i=10;
System.out.println(‘‘je sais compter jusqu’a 10 a l’envers’’);
do
{ System.out.println(i);
i--; } 54
while(i>=0);
LES STRUCTURES DE BASE
STRUCTURE RÉPÉTITIVE : FOR…
for (
<initialisation> ; <expression_booléenne> ;
<incrémentation> )
{
<instruction ou bloc d’instruction>
}
Exemple:
for (int i=0;i<=10;i++)
System.out.println(i);
for ( ; ; ) boucle infinie 55
PREMIER PROGRAMME JAVA
Comment développer une application?
Deux façons d’écrire des programmes Java:
En écrivant le code dans un simple éditeur de texte
Netbeans (http://www.netbeans.com )
(http://www.ibm.com/software/awdtools )
Sun ONE Studio (http://wwws.sun.com/software/sundev)
Jcreator 56
…
PREMIER PROGRAMME JAVA
Créer un fichier : HelloWorld.java
59
NOTION D’OBJET
C’est une notion très proche de celle de la vie courante
On représente en permanence le monde qui nous entour
sous forme d’objet plus ou moins abstrait (chaise,
table,stylo, voiture, animaux...).
Cette vision d’un objet peut être différente en fonction de
nos besoins :
Un conducteur voit une voiture comme un ensemble
complexe de commande pour la faire avancer, diriger
et interagir avec d’autres véhicules.
Un policier voit un ensemble de véhicule comme un
ensemble d’objet qui doivent respecter des règles de
circulation. (camion ou voiture sont de même type)
Un garagiste voit un véhicule comme étant un 60
61
ENCAPSULATION, MÉTHODES ET
INVOCATION
Un objet est une boite noire qui offre un certain nombre
de fonctions ou méthodes permettant d’interagir avec lui
peut importe comment il est construit de manière
interne.
La seule chose nécessaire pour pouvoir utiliser un objet
est savoir ce qu’il peut faire et surtout comment le lui
demander.
Ex: un poste de télé est une boite noir ayant pour
interface : une télécommande , écran, haut parleurs.
Pour changer de chaîne il suffit de demander à la boite
noire de le faire pour nous en appuyant sur un bouton.
L’ensemble des méthodes proposées par un objet est
62
appelé interface de l’objet.
ENCAPSULATION, MÉTHODES ET
INVOCATION
On dit qu’un objet est encapsuler par son interface
la seule façon de communiquer avec cet objet est
d’invoquer une des méthodes de son interface.
64
NIVEAU D’ABSTRACTION ET CLASSES
D’OBJETS
Plusieurs niveaux d’abstractions sont possibles lorsque l’on
représente un certain objet réel.
Exemple:
66
POLYMORPHISME
C’est un mot Greg « plusieurs formes ».
Exemple:
On peut modéliser une personne par l’objet Personne. Les
attribut sont alors les information concernant la personne
(nom, prénom, DN,…). Et comme méthode on aurait par
exemple calcul_Age, calcul_salaire…
69
OBJETS, CLASSES
Qu’est ce qu’une classe?
C’est une description d’un ensemble d’objets ayant des
propriétés et des comportements commun.
Les objets sont alors des représentations dynamiques (ou «
instanciation » ) vivantes du modèle définit pour eux au
travers de la classe.
Une classe en java est définie en précisant son nom, en
déclarant ces attributs et en définissant ses méthodes.
Syntaxe:
Class nom_classe
{
// déclaration des attributs
// déclaration des méthodes 70
}
OBJETS, CLASSES
Exemple:
Class Rectangle
{
//declaration attributs
int long;
int larg;
// autres attributs eventuels
//declartion des fonctions
void allongerRectangle(int lg)
{ long+=lg;}
//… autres méthodes
} 71
OBJETS, CLASSES
Déclaration des attributs
[<modificateur_visiblité>] <type> <nom>[=<expression>]
public int x;
public int y=34;
private int z=2;
Exemple:
Rectangle(int lg,int larg)
{
longueur=lg; largeur=larg;
74
}
OBJETS, CLASSES
Constructeur de classe
Une classe peut avoir plus qu’un constructeur
Exemple:
Rectangle (int lg,int larg) {
longueur=lg; largeur=larg;
}
Rectangle () {
longueur=0; largeur=0;
}
objet
instanceof : retourne true si l’objet à gauche est une
constructeur.
80
OBJETS, CLASSES
Les références :.
Exemple :
Class Date
{int jour=1, mois=1, an=1990;
Date()
{an=2000; /* peut s’écrire : this.an=2000*/}
Date(int an)
{this.an=an; /* le paramètre en cache l’attribut an*/}
Date(int an, int mois, int jour)
{this.jour=jour;
this.mois=mois;
this(an); /* Appel du deuxième constructeur*/} 81
}
OBJETS, CLASSES
La référence this :
constructeur.
82
OBJETS, CLASSES
La référence this :
Exemple :
Class Date
{int jour=1, mois=1, an=1990;
Date()
{an=2000; /* peut s’écrire : this.an=2000*/}
Date(int an)
{this.an=an; /* le paramètre en cache l’attribut an*/}
Date(int an, int mois, int jour)
{this.jour=jour;
this.mois=mois; 83
Class Test
{
Voiture v1; //initialisation à null par défault.
void methode()
84
{…
if (v1==null) v1=new Voiture();…}}
OBJETS, CLASSES
Exemple :
Une méthode qui permet l’affichage de son argument.
void print(int)
void print(float)
void print (double)
85
OBJETS, CLASSES
86
OBJETS, CLASSES
Passage de paramètre des méthodes:
Exemple
class Test
{ int val=11;
public void modif(int n)
{ n=22; }
public void modifObj(Test obj)
{ obj.val=22; }
public static void main(String a[])
{ Test t=new Test();
int n=0;
t.modif(n); System.out.println(n); //n=0;
87
t.modifObj(t); System.out.println(t.val); //val=22}
}
OBJETS, CLASSES
Attributs de classe:
C’est un attribut marqué par le mot clé static.
88
OBJETS, CLASSES
Attributs de classe:
89
OBJETS, CLASSES
Méthodes de classe:
90
OBJETS, CLASSES
Méthodes de classe:
Exemple
91
OBJETS, CLASSES
Méthodes de classe:
94
LES TABLEAUX
En java le type tableau est assimilable à une classe et un
tableau est un objet référencé.
95
LES TABLEAUX
– Exemples:
Int notes[]; // tableau entiers
– Exemple :
notes = new int[3];
97
LES TABLEAUX
Tableau à une dimension
– Initialisation:
Lorsqu’un tableau est créé. Chacun de ces éléments est
initialisé.
Cette initialisation se fait a 0 si les éléments sont des
entiers ou des réels. A false s’ils sont des booléens et a null
sinon.
– Exemples:
int tab={3, 5, 7}; // c’est équivalent a faire
<nomTableau>.length
LES TABLEAUX
– Utilisation:
le premier élément d’un tableau commence a l’indice 0 et le
dernier élément a l’indice n-1 (n le nombre d’éléments du
tableau).
l’accès à un éléments du tableau se fait en mettant l’indice
de cet élément entre crochets. Par ailleurs si on essaie
d’accédé à un élément qui ce trouve en dehors des bornes
du tableau une erreur sera générée.
– Utilisation:
in[] tab=new int[10];
tab[0]=1;
– Exemples:
Int[][] notes=new int[3][];
notes[0]=new int[3];
100
notes[1]=new int[2];
notes[2]=new int[1];
LES TABLEAUX
Tableau à deux dimensions
– Déclaration & création:
si le tableau a deux dimension est rectangulaire, on peut le
créer comme suit :
<type>[][]<nomtableau>=new<type>[N1][N2];
N1: nombre de tableau-élément.
N2: nombre d’élément de chaque tableau-élément.
– Exemple :
créer une matrice carré :
int [][] matrice= new int[2][2];
matrice[0][0]=1; matrice[0][1]=1;
101
matrice[1][0]=1; matrice[1][1]=1;
LES TABLEAUX
– Exemple:
int[][] tab={{1,0,9},{2,8},{8,5,7}};
tab.length3
tab[1].length2
102
LES CHAÎNES DE CARACTÈRES
String est une classe qui est fourni avec l’API Java, elle
décrit des objets qui contiennent une chaîne de caractère
constante et permet un traitement très riches des chaînes
de caractères.
Elle dispose des opérateurs + ou += pour concaténation des
chaînes de caractères.
Exemple: