Fiche de révision : POO C++ et encapsulation

Plan du Cours

  1. Classe et encapsulation
  2. Objets et cycle de vie
  3. Accès et organisation du code
  4. Accesseurs et membres statiques
  5. Classe Fenetre et validation
  6. Dépendance entre classes
  7. Composition des objets
  8. Association et application complète

1. Classe et encapsulation

Notions clés & Définitions

  • Encapsulation : Fusionne les données d’une structure avec le code, notamment les fonctions, qui les manipule dans une classe.
  • Classe : Définit des membres de données, appelés attributs, et des méthodes, qui sont ses fonctions membres, sans contenir elle-même les données d’un objet.

★ À maîtriser

📌 Le statut public rend un membre accessible depuis l’extérieur, protected le rend accessible depuis la classe et ses classes dérivées, tandis que private le limite à la classe elle-même.

📌 Le contrôle d’accès non public interdit l’accès direct aux données et permet à des méthodes publiques de vérifier leur validité avant écriture.

Compléments

  • En UML, les symboles +, # et - représentent respectivement les statuts public, protected et private, tandis que le statut package n’est pas disponible en C++.

  • Le mot-clé friend permet d’accorder des droits particuliers à une classe ou à une méthode malgré les statuts private, protected et public.

Astuce mémo

Public ouvre l’accès, protected le réserve aux héritiers, private le ferme aux héritiers.

2. Objets et cycle de vie

Notions clés & Définitions

  • Constructeur : Méthode particulière portant le nom de la classe, sans valeur de retour définie, qui construit et initialise un objet.
  • Pointeur this : Attribut caché propre à chaque classe qui pointe vers l’objet lui-même et distingue notamment un attribut d’un paramètre de même nom.
  • Constructeur de copie : Possède un paramètre unique qui est une référence vers la classe elle-même et est appelé lors de la copie d’un objet.
  • Destructeur : Méthode unique nommée avec le nom de la classe précédé de ~, sans paramètre, qui détruit l’objet et peut libérer la mémoire ou fermer des fichiers.

★ À maîtriser

📌 Une classe est un type ou un modèle, tandis qu’un objet est une instance représentant cette classe et contenant ses données.

  • Une classe peut posséder plusieurs constructeurs si leurs listes de paramètres sont différentes.

Compléments

📌 Si aucun constructeur par défaut n’est écrit, le compilateur en génère automatiquement un ; un constructeur écrit par le programmeur surcharge cette version générée.

Astuce mémo

Construire, utiliser, copier, détruire.

3. Accès et organisation du code

Points essentiels

📌 L’opérateur . permet d’accéder aux attributs et aux méthodes d’un objet lorsque le membre est accessible selon son statut.

📌 La définition immédiate regroupe les données et le code des méthodes dans un seul fichier, tandis que la définition différée place les déclarations dans un fichier .h et les définitions dans un fichier .cpp.

Astuce mémo

Définition immédiate = simple mais limitée ; définition différée = adaptée aux projets.

4. Accesseurs et membres statiques

Notions clés & Définitions

  • Setter : Méthode qui modifie une donnée en pouvant vérifier que la nouvelle valeur est valide.
  • Getter : Méthode qui lit et retourne une donnée masquée.
  • Attribut static : Donnée unique partagée par tous les objets d’une même classe au lieu d’être copiée dans chaque objet.
  • Méthode static : Méthode de classe indépendante des attributs propres à un objet et pouvant être appelée sans objet défini.

Points essentiels

📌 Les setters doivent être utilisés à chaque écriture d’une donnée afin de maintenir sa validité, et les getters permettent d’interdire la lecture directe de l’attribut.

Astuce mémo

Données masquées → getters/setters ; données partagées → static.

5. Classe Fenetre et validation

Points essentiels

  • La classe Fenetre représente une fenêtre console définie par les coordonnées x et y de son coin supérieur gauche, ainsi que par sa largeur lar et sa hauteur hau.

📌 Les paramètres d’une Fenetre doivent respecter les limites d’une console de 80 colonnes et 25 lignes, notamment x compris entre 0 et 79.

  • 🔄 La réalisation de Fenetre suit plusieurs opérations.:
    1. Utiliser des setters pour valider les paramètres
    2. Utiliser des getters pour afficher les informations
    3. Dessiner le cadre
    4. Effacer le cadre et son contenu dans le destructeur

6. Dépendance entre classes

Notions clés & Définitions

  • Relation de dépendance : Existe lorsqu’une classe utilise une autre classe, par exemple Fenetre qui utilise Position dans une méthode, ce qui rend Fenetre dépendante de Position.

Points essentiels

  • Une dépendance unidirectionnelle se représente en UML par un trait en pointillé orienté par une flèche vers la classe utilisée.

Astuce mémo

Fenetre utilise Position → Fenetre dépend de Position.

7. Composition des objets

Notions clés & Définitions

  • Composition : Agrégation forte dans laquelle une classe contient un attribut appartenant à une autre classe, comme Fenetre contenant une Position.

★ À maîtriser

  • Une liste d’initialisation telle que posHauGau(x, y) permet d’appeler directement le constructeur surchargé de Position lors de la construction de Fenetre.

Compléments

📌 Lors de la création d’une Fenetre, son attribut Position est construit par défaut avec le constructeur par défaut de Position si aucun constructeur spécifique n’est appelé.

Astuce mémo

Une Fenetre contient une Position comme un cadre contient son coin d’ancrage.

8. Association et application complète

Notions clés & Définitions

  • Relation d’association : Crée un lien permanent entre deux classes et se code en C++ par un pointeur ou une référence, comme le lien entre Fenetre et ListePersonnes.
  • Classe Personne : Représente chaque personne de la liste avec un nom nomPersonne et un identifiant numérique idPersonne.

★ À maîtriser

📌 Une association doit être instanciée explicitement, par exemple en affectant à Fenetre l’adresse d’un objet ListePersonnes avec setPtrListePersonnes(&listepersonnes).

Compléments

  • La classe ListePersonnes peut contenir de 0 à 20 noms et doit proposer notamment un constructeur par défaut, ajouterPersonne et afficherPersonnes.

Astuce mémo

Personne → ListePersonnes → Fenetre.

Tableaux de synthèse

Relations entre classes

RelationImplémentation C++Représentation UMLSens
DépendanceUtilisation d’une autre classe dans une méthodeTrait pointillé avec flècheUnidirectionnel
CompositionAttribut objet contenuRelation de compositionContenant vers contenu
AssociationPointeur ou référenceTrait plein avec flècheLien permanent

Teste tes connaissances

Teste tes connaissances sur POO C++ et encapsulation avec 24 questions à choix multiples et corrections détaillées.

1. Que réalise principalement l’encapsulation dans une classe ?

2. Quelle distinction décrit correctement une classe et les données d’un objet ?

Faire le QCM →

Révisez avec les flashcards

Mémorisez les concepts clés de POO C++ et encapsulation avec 43 flashcards interactives.

Qu'est-ce que l'encapsulation en programmation orientée objet ?

L'encapsulation fusionne données et fonctions dans une classe.

Que définit une classe en programmation orientée objet ?

Une classe définit des attributs et des méthodes sans contenir les données d'un objet.

Que signifie le statut public pour un membre d'une classe ?

Il rend le membre accessible depuis l'extérieur.

Voir les flashcards →

Cours similaires

Crée tes propres fiches de révision

Importe ton cours et l'IA génère fiches, QCM et flashcards en 30 secondes.

Générateur de fiches