public class

publicité
Développement Orienté Objet
●
●
●
Analyse OO
Conception OO
Programmation OO
2
Analyse Orientée Objet
●
●
●
●
Identifier les objets du domaine
d'application
Décrire les différents attributs
Établir les relations entre les différents
objets
Former les groupes d'objets
3
Diagramme de classe
PolygoneRegulier
-nbCotes:int
-longueur:double
+perimetre():double
+surface():double
4
Diagramme d'objet
pr1:PolygoneRegulier
pr1:PolygoneRegulier
nbCotes=6
longueur=8.7
nbCotes=4
longueur=12.8
5
Diagramme de package
figures
6
Association 1-1
Personne
1
propriétaire
1
outil
Téléphone
class Personne{
Telephone outil;
Personne(){
outil = new Telephone();
}
}
class Telephone{
Personne proprio;
Telephone(){
proprio = new Personne();
}
}
7
Association
0..300
Personne
réserve
0..*
passager
public class Personne{
private String nom;
private ArrayList<Vol> lesVols;
public Personne( String nom ){
lesVols = new ArrayList<Vol>();
this.nom = nom;
}
public void reserve( Vol v ){
lesVols.addElement( v ); }
public boolean passager( Vol v ){
return lesVols.contains( v );}
...
}
Vol
8
Association d'une classe sur ellemême
1
Personne
0..1
marié à
public class Personne{
private String nom;
private Personne epoux = null;
private boolean marie = false;
public Personne( String nom ){
this.nom = nom; }
public void marie( Personne p ){
epoux = p; marie = true; }
public boolean marie(){
return marie; }
...
}
9
Agrégation
Personne
0..*
client
inclus
0..*
ListeDeClients
10
Agrégation : traduction Java
public class ListeClients{
private ArrayList<Personne> laListe;
public ListeClients(){
laListe = new ArrayList<Personne>(); }
public void inclus( Personne p ){
laListe.add( p );
}
public Vector<Personne> laListe(){
return laListe; }
}
11
Agrégation : traduction Java
public class Personne{
private String nom;
public Personne( String nom ){
this.nom=nom;
}
}
public boolean client( ListeClients<Personne> l ){
return (l.laListe()).contains( this );
}
12
Association+agrégation
1
Personne
0..*
client 0..1
marié à
inclus
0..*
ListeDeClients
13
Traduction Java
public class Personne{
private String nom;
private Personne epoux = null;
private boolean marie = false;
public Personne( String nom ){
this.nom=nom;
}
public void marie( Personne p ){
epoux = p; marie = true;
}
public boolean marie(){
return marie;
}
public boolean client( ListeClients<Personne> l ){
return (l.laListe()).contains( this );
}
}
14
Traduction Java
public class ListeClients{
private ArrayList<Personne> laListe;
public ListeClients(){
laListe = new ArrayList<Personne>();
}
public void inclus( Personne p ){
laListe.add( p ); }
public Vector<Personne> laListe(){
return laListe;}
}
15
Composition
1
Moteur
1..8
Cylindre
public class Moteur{
private Cylindre[] lesCylindres;
public Moteur(){
lesCylindres = new Cylindre[8];
}
...
}
16
Composition multiple
Vehicule
1
Moteur
4
Roue
1
Caisse
1
Habitacle
17
Composition multiple : traduction
Java
public class Vehicule
{
private Moteur moteur;private Roue[] roues;
private Caisse caisse;private Habitacle habitacle;
public Vehicule(){
moteur = new Moteur();roues = new Roue[4];
caisse = new Caisse();habitacle = new Habitacle();}
public Vehicule( Moteur moteur,Roue[] roues,
Caisse caisse,Habitacle habitacle){
this.moteur = moteur;
this.roues = roues;
this.caisse = caisse;
this.habitacle = habitacle;
}
...
}
18
Héritage
Vehicule
Voiture
Bateau
Train
Velo
19
Héritage : traduction Java
public class Voiture extends Vehicule
{...}
public class Bateau extends Vehicule
{...}
public class Train extends Vehicule
{...}
public class Velo extends Vehicule
{...}
20
Diagramme mixte
Personne
Etudiant
Enseignant
1..*
1
suit
enseigne
1..*
1..*
Cours
21
Traduction Java
public class Personne {
protected String nom;
...
}
public class Cours{ ... }
public class Etudiant extends Personne{
private Vector<Cours> lesCours;
public Etudiant( String nom ){
lesCours = new Vector<Cours>();
this.nom = nom;
}
public void suit( Cours cours ){
lesCours.addElement( cours );
}
}
22
Traduction Java
public class Enseignant extends Personne{
private ArrayList<Cours> lesCours;
public Enseignant( String nom ){
lesCours = new ArrayList<Cours>();
this.nom = nom;
}
public void enseigne( Cours cours ){
lesCours.addElement( cours );
}
}
23
Modèle dynamique
Diagramme état-transition
fenêtre fermée
click bouton/
ouvrir
click bouton/
fermer
click Bureau/
désactiver
fenêtre ouverte/active
fenêtre ouverte/inactive
click fenêtre/
activer
24
Use Case
●
●
Un " Use case " décrit comment un type d'utilisateur utilise un système pour
accomplir un objectif
3 entités :
●
L'Acteur décrit le rôle joué par l'utilisateur en relation avec le système. Il
est extérieur au système et n'est pas obligatoirement une personne.
Exemple : l'acteur peut être le distributeur de billets en relation avec une
banque
●
Le système utilisé
●
L'objectif que l'utilisateur souhaite atteindre
25
Use case et UML
communique
distributeur
retrait de
billets
client
acteur
limite du système
Use case
26
Relations entre Use case
aller au
travail
<<includes>>
prendre
le train
Pour aller au travail on doit prendre le train
aller au
travail
<<extends>>
prendre
le bus
Si les trains ne fonctionnent pas, prendre le bus
27
Exemple
●
" Use case " pour le retrait d'argent à partir d'un distributeur
commander
chèques
annuler
transaction
consulter
solde
client
retirer
billets
vérifier
solde
<<includes>>
authentification<<extends>>
refuser
carte
distributeur
désactiver
distributeur
afficher
log
Employé
banque
28
Diagrammes de séquences
B
les objets A
m1
C
D
m2
m3
m4
29
Exemple
client
distributeur
sélection d'une option de retrait
affichage des options
spécifier un montant
vérification du solde
invite le client à retire la carte
éjection de la carte
retrait de la carte
invite le client à retirer les billets
fournir les billets
retrait des billets
remercier le client
débiter le compte
affichage de l'écran de
30
bienvenue
ED n°5
Des personnes définies par leur nom peuvent acheter une ou plusieurs
voitures (définies par leur modèle). Chaque voiture peut posséder un
autoradio (avec ou sans lecteur de CD). Cet autoradio est extractible.
Son propriétaire est une personne qui n'est pas obligatoirement celui
de la voiture.
●
●
Tracer le diagramme UML correspondant
Implanter ce diagramme en Java
31
Personne
nom:String
achète
1..*
1..*
Voiture
modele:String
1
1
installé
possède
0..1
0..*
Radio
RadioCD
32
Exercice (1/3)
public class Personne
{
private String nom;
private Vector<Radio> radios;
private boolean possede = false;
private Vector<Voiture> voitures;
public Personne( String nom )
{ this.nom = nom; voitures = new Vector<Voiture>(); }
public void possede( Radio radio )
{ radios.addElement(radio); possede = true;}
public boolean possedeRadio(){ return possede;}
public void achete( Voiture voiture )
{ voitures.addElement( voiture ); }
}
33
Exercice (2/3)
public class Voiture{
private String modele;
private Radio radio = null;
private boolean radioDispo = false;
public Voiture( String modele ){
this.modele = modele;
}
public void installe( Radio radio ){
this.radio = radio; radioDispo = true;
}
public boolean radioDispo() {
return radioDispo;
}
public Radio getRadio(){
return radio;
}
}
34
Exercice (3/3)
public class Client{
public static void main ( String[] args ){
Personne personne = new Personne( "Ledoux" );
Voiture voiture
= new Voiture( "Renault" );
Radio radio
= new Radio();
voiture.installe( radio );
personne.achete( voiture );
personne.possede( voiture.getRadio() );
}
}
35
Téléchargement