Programmation orientée objet – UML – PHP PDF

Summary

This document is a lecture or presentation on object-oriented programming (OOP), UML diagrams, and PHP programming. It covers topics such as class diagrams, aggregation, composition, inheritance, and object-oriented concepts in PHP. It appears to be a course or training material for programming.

Full Transcript

Programmation orientée objet – UML – PhP Séance 1 Antoine Vacavant IUT Le Puy-en-Velay [email protected] 1 Plan 1. Modélisation statique UML, diagramme de classes –Introduction –Représentation de classes et associations...

Programmation orientée objet – UML – PhP Séance 1 Antoine Vacavant IUT Le Puy-en-Velay [email protected] 1 Plan 1. Modélisation statique UML, diagramme de classes –Introduction –Représentation de classes et associations –Agrégation et composition –Héritage 2. Programmation objet en PhP –Objet et classe –Relations UML 3. Exercice 3 Plan 1. Modélisation statique UML, diagramme de classes –Introduction –Représentation de classes et associations –Agrégation et composition –Héritage 2. Programmation objet en PhP –Objet et classe –Relations UML 3. Exercice 4 Représentation de classes et association Définition : Programmation orientée objet Principe de programmation informatique consistant à définir et manipuler des briques logicielles : les objets. Définition : Objet Concept éventuellement issu du monde réel (voiture, personne, etc.), composé de 2 types d’ éléments propres : des attributs (variables) et des méthodes (fonctions) 5 Représentation de classes et associations ▪ Exemples d’objets – Une fenêtre logicielle ▪ Etat : Position, taille, style de bordure, titre, etc. ▪ Opérations : Déplacer, redimensionner, dessiner, etc. – Un personnage de JDR ▪ Etat : Argent, force, points de vie, armes, etc. ▪ Opérations : Aller au Nord, ouvrir porte, prendre objet, etc. 6 Représentation de classes et associations ▪ On parle de classe, description abstraite d’un ensemble d’objets ayant les mêmes caractéristiques –Exemples Classe « Personne » Classe « Voiture », etc. ▪ Un objet est une instance, un exemplaire de classe –Exemples Bruce Wayne est un objet de la classe « Personne » Citroën C4 est un objet de la classe « Voiture » 7 Représentation de classes et associations ▪ UML (Unified Modeling Langage) est un formalisme standard qui permet de représenter des éléments logiciels, informatiques ▪ Nous allons voir les différents liens possibles entre les classes, et comment les représenter en UML ▪ Modélisation logicielle globale ▪ Design patterns 8 Représentation de classes et associations ▪ Une classe est définie par ses propriétés ▪ En UML, on représente une classe par –Le nom de la classe –Les attributs –Les méthodes Voiture Personne +marque: string +nom: string +modele: string +prenom: string +vitesseMax: float -numSS: int +cylindrees: int -adresse: string +Voiture( ) +Personne( ) +accelerer(float) : void +marcher( ) : void +tourner(float) : void +calculMental(int, int) : int 9 Représentation de classes et associations ▪ Pour représenter une association entre 2 classes, on utilise une simple ligne droite entre elles –On doit indiquer Personne Voiture Le nom de l’association Le nombre d’objets impliqués de chaque côté : … 1 * … cardinalité Possède –Exemple … … Une personne possède 0, 1 ou plusieurs voitures Une voiture n’est possédée que par 1 seule personne 10 Représentation de classes et associations ▪ Table des différentes cardinalités Symboles Cardinalités Commentaires 1 1 exactement k k exactement 𝑘∈ℕ 0..* De 0 à plusieurs Ou * 1..* De 1 à plusieurs k..* De k à plusieurs 𝑘∈ℕ 𝑘1.. 𝑘2 De 𝑘1 à 𝑘2 𝑘1 , 𝑘2 ∈ ℕ; 𝑘1 < 𝑘2 11 Représentation de classes et associations ▪ Il est parfois utile de nommer le rôle de chaque partie de l’association Personne Voiture ▪ Dans ce cas, on ajouter le(s) rôle(s) à côté de la (des) classe(s) … 1 Possède * … concernée(s) Propriétaire ▪ Exemple … … –On peut préciser qu’une personne possédant une voiture en devient le propriétaire ▪ Sert à nommer les membres 12 Agrégation et composition ▪ Une agrégation est une association particulière, à sens unique, qui représente une contenance modulaire –Elle n’a pas besoin d’être nommée –On la représente par un losange vide pour l’agrégat ▪ Une composition représente une contenance structurelle –Elle n’a pas besoin d’être nommée –Un élément ne peut appartenir qu’à un seul composite –La destruction du composite entraîne la destruction de tous ses éléments –On la représente par un losange plein 13 Agrégation et composition Agrégat Partie ▪ Diagrammes * 1.. * NomMembre Composite Partie (1) * NomMembre 14 Agrégation et composition Train Wagon ▪ Exemples * 0.. * +listeWagons Gare Quai * 1.. +tableauQuais 15 Héritage ▪ Une super-classe est une classe plus générale à une ou plusieurs autres classes ▪ On parle alors d’héritage ou de généralisation ▪ Permet de factoriser des propriétés communes à plusieurs classes ▪ On la représente par un triangle du côté de la super-classe 16 Héritage ▪ Exemples –Les gorilles, les hommes et les baleines sont des mammifères –Les voitures et les avions sont des moyens de transport MoyenTransport +marque: string +accelerer( ) : void Voiture Avion +cylindrees: int +altitude: float +immatriculation: int +nombrePassagers: int 17 Plan 1. Modélisation statique UML, diagramme de classes –Introduction –Représentation de classes et associations –Agrégation et composition –Héritage 2. Programmation objet en PhP –Objet et classe –Relations UML 3. Exercice 18 Objet et classe ▪ En PhP, une classe peut être définie dans un fichier.php –Bonne règle de conduite : Nom de fichier = Nom de la classe // Dans un fichier MaClasse.php à part class MaClasse { // Contenu de la classes (attributs + méthodes) } 19 Objet et classe ▪ Pour ajouter des attributs dans une classe –On définit des variables –Pour le moment, on les définit en mode public (On verra plus loin d’autres visibilités) –On peut affecter une valeur par défaut ▪ Pour ajouter des méthodes dans une classe –On définit des fonctions –Avec le corps de la fonction 20 Objet et classe ▪ Petit code pour démarrer class MaClasse { public $nom; public $identifiant; public function salut() { echo 'Mon nom est '. $this->nom. ' et j'ai l\'id '. $this->identifiant; } } 21 Objet et classe ▪ Le constructeur est une méthode qui spécifie class MaClasse { comment initialiser un public $nom; objet lors de son public $identifiant; instanciation public function __construct($i) { $this->identifiant= $i; –Il porte le même nom que } la classe public function salut() { echo 'Mon nom est '. $this->nom. –Il n’admet pas de valeur de ' et j'ai l\'id '. $this->identifiant; retour } –Il prend un nombre } quelconque de paramètres 22 Objet et classe ▪ L’instanciation d’un objet se fait avec new ▪ Appelle le constructeur défini (si non défini, mettra des valeurs par défaut) ▪ Accès aux propriétés par « -> » // Dans un autre fichier PhP par exemple $objet= new MaClasse(2); // Cet objet aura donc identifiant= 2 $objet->nom= 'Objet235'; $objet->salut(); 23 Objet et classe ▪ Code plus cossu de création de classe // Dans le fichier Etudiant.php... class Etudiant { public $nom= ""; public function ajouterNote($n) { public $prenom= ""; $this->notes[]= $n; public $id= 0; } public $notes= array(); public function afficherNotes() { $n= count($this->notes); public function __construct($n, $p, $i) { echo 'Notes de l'étudiant '+ $this->nom= $n; $this->prenom. ' '. $this->nom.''; $this->prenom= $p; for ($i= 0; $i< $n; $i++) { $this->id= $i; echo '> Note '.$i.': '. } $this->notes[i].''; }... } } 24 Objet et classe ▪ Instanciation // Dans un autre fichier php $etu1= new Etudiant(); $etu1->nom= 'A'; $etu1->prenom= 'Jean'; $etu1->id= 189003; $etu2= new Etudiant('B', 'Mauricette', 256177); $etu1->ajouterNote(12.); $etu1->ajouterNote(5.); $etu2->ajouterNote(4.); $etu1->afficherNotes(); $etu2->afficherNotes(); 25 Relations UML ▪ Lorsqu’une classe en contient une autre, il y a composition –La destruction de la classe mère détruit l’enfant –Les objets sont dépendants de la classe mère class MaClasse { // La classe MaClasse contient deux autres objets public $I; public $V; public function __construct() { $this->I= new Image(); $this->V= new Vector(); } } 26 Relations UML ▪ L’héritage se réalise avec le mot-clé extends ▪ La visibilité des propriétés peut être modifiée –public : Visible par toutes les classes, y compris les enfants –protected : Visible seulement par les enfants –private : Visible par la classe elle-même en interne ▪ Pour accéder à l’objet actuel, on utilise le mot-clé $this ▪ Pour accéder au parent, le mot-clé $parent 27 Relations UML ▪ Exemple d’héritage // Dans un fichier ClasseFille.php class ClasseFille extends MaClasse { // La classe ClasseFille hérite de MaClasse // Les propriétés ci-dessous seront en plus de celles de MaClasse public $i; public function __construct($i) { $this->i= $i; } } 28 Plan 1. Modélisation statique UML, diagramme de classes –Introduction –Représentation de classes et associations –Agrégation et composition –Héritage 2. Programmation objet en PhP –Objet et classe –Relations UML 3. Exercice 29 Exercice Compte #login: string ▪ Comment coder ce cas de #mdp: string +nom: string modélisation ? +prenom: string ▪ Tester avec un exemple +Compte( ) simple Album CompteUser CompteAdmin +nom : string +chansons : string[ ] +annee : int +CompteUser( ) +CompteAdmin( ) +Album( ) * +rechercherAlbumParNom(string) : Album +rechercherAlbumParDate(int) : Album +creerCompte(CompteUser) : void +supprimerCompte(CompteUser) : void +lirePiste(int) : void -listeAlbums +lireAlbum() : void +ajouterAlbum(Album) : void +ajouterChanson(string) : void 30

Use Quizgecko on...
Browser
Browser