POO, documentation et tests - TD1

Héritages, relations, UML, modélisation
Author

Ludovic Deneuville

1 UML

1.1 Dépendance

  • Lorsqu’un changement dans une classe implique la modification du comportement d’une autre classe
  • Dans l’exemple, l’état de la fenêtre va dépendre de l’attribut outils de la personne

classDiagram
    direction LR
    class Personne {
        - nom: string
        - age: int
    }

    class Fenetre {
        + etat: string
        + opération(p : Personne)
    }

    Personne ..> Fenetre

1.2 Association

  • relation structurelle entre deux classes
  • il est possible de naviguer d’un objet d’une classe, à un ou plusieurs objets de l’autre classe

classDiagram
    direction LR
    class Entreprise {
        - nom: string
        - adresse: string
    }
    
    class Personne {
        - nom: string
        - age: int
    }
    
    Entreprise "*" -- "*" Personne : emploie

1.3 Agrégation

  • lorsqu’un élément est constitué d’un autre
  • Supprimer l’agrégat (vélo) ne supprime pas le composant (roue)
    • ici on peut imaginer retirer la roue d’un vélo pour la mettre sur un autre vélo

classDiagram
    direction LR
    class Velo {
        - couleur: string
    }
    
    class Roue {
        - taille: int
    }
    
    Velo "1" o-- "2" Roue : posséde

1.4 Composition

  • le composant est détruit lorsque l’agrégat est détruit

classDiagram
    direction LR
    class Entreprise {
        - nom: string
        - adresse: string
    }
    
    class Departement {
        - nom: string
    }
    
    Entreprise "1" *-- "*" Departement : a

1.5 Généralisation

  • Héritage

classDiagram
    direction TB
    class Animal{
        + age: int
        + gender: String
        + isMammal() : bool
        + mate()
    }
    class Duck{
        + beakColor: String
        + swim()
        + quack()
    }
    Animal <|-- Duck