Module 4 : Implantation de hiérarchies de classes Flashcards

1
Q

classe – hérite de—

A

la dérivée hérite de la classe de base

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Si la classe de base dispose d’un constructeur par défaut

A

oappelé automatiquement lors de la création de l’objet de la classe dérivée

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Si la classe de base ne dispose pas d’un constructeur par défaut

A

oappeler le constructeur de la classe de base de façon explicite pour lui passer les paramètres requis

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Construction et destruction : Ordre d’appel

A

Construction des objets de la hiérarchie
ode la classe de base tout en haut jusqu’à la classe dérivée.

Destruction des objets de la hiérarchie
ode la classe dérivée jusqu’à la classe de base

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Visibilités

A

oPrivée : Accès interne de la classe.
oPublique : Accès à tous les utilisateurs.
oProtégée : Accès aux héritiers

Les méthodes d’une classe ont toujours accès aux attributs de la classe, peu importe la visibilité.

les données privées ne sont manipulables que par les méthodes de la classe à laquelle les données appartiennent.

L’héritage ne donne pas d’accès privilégié pour la visibilité privée

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

comment définir la hiérachie dans le fichier. h

A

inclure la clsse dont on hérite (#include <stdexcept), inclure le lien d’héritage (class ContratException : public std::logic_error)(class PreconditionException : public ContratException
)

Hérite de la classe logic error et ce qu’il y a au dessus. :
Public permet d’utiliser les méthodes et les attributs qui sont au dessus de l’hiérarchie. Il faut passer par un objet ContratException
L’utilisation de privée est très rare car elle ne permet pas d’utiliser les classe au dessus
Si on ne met pas public ça va être privée par défaut donc il ne faut pas l’oublier
Public: c’est-à-dire on peut appeler n’importe quelle méthode public ou protected de la classe de base

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Définir la hiérarchie dans le fichier.cpp

A

Appeler le constructeur du parent (: std::logic_error(p_typeP),)Attributs de la classe courante
(m_expression(p_expressionP), m_fichier(p_fichierP), m_ligne(p_noLigne))

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Lorsqu’une classe mère est héritée en mode privée par la classe fille, alors

A

Les membres protégés de la classe mère deviennent des membres privés de la classe fille
BLes membres publics de la classe mère deviennent des membres privés de la classe fille

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

statut dans la classe de base et accès aux fonctions membres et amies de la classe dérivée et et accès à un utilisateur de la classe dérivée

A

public, oui, oui
protégé, oui, non
privé, non, non

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

2 options d’implémentations.

A

Ici méthode statique (non relié un objet) on passe 2 points en paramètre donc on a pas besoin d’un objet courant.
Méthode non statique. Un point passer en paramètre avec un objet courant,

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Remplacer, hériter, augmenter …

A

Une classe dérivée D peut décider de prendre action sur une méthode m() de la classe de base B:
La classe dérivée remplace la méthode B::m() par D::m() en implantant un algorithme différent.
La classe dérivée hérite de B::m() sans changement.
La classe dérivée augmente la méthode B::m() par une méthode D::m() qui appelle d’abord B::m() avant de faire d’autre tâches.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

En C++, trois formes polymorphisme

A

oPolymorphisme ad hoc :
Surcharge de méthode(déjà vu)
oPolymorphisme paramétrisable :
Les templates
oPolymorphisme pur

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

polymorphisme pur

A

Mé thodes virtuelles , alli é es à l’h é ritage:
o
permet de rendre les programmes extensibles par l’h é ritage
de comportements existants

ajout de comportements sp é cifiques au besoin.

Traitement d une famille de classe s une hi é rarchie de
fa ç on g é n é rique .
o
On n’a pas à identifier le type de la classe avec un switch
comme dans les langages non OO.

Traitement g é n é rique à partir de la classe de base
m
é thodes virtuelles .
o
à l’ é chelle d’une hi é rarchie de classes.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Signature des méthodes virtuelles

A

Une fonction virtuelle doit avoir le même prototype (même signature et même type de retour) dans toutes la hiérarchie.

Une fois qu’une fonction a été déclarée virtuelle, elle le demeure dans toute la hiérarchie à partir de ce point.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

que peut être virtuel

A

Seule une fonction membre peut être virtuelle
Un constructeur ne peut être virtuel

Un destructeur peut être virtuel

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Dans une classe de base (destinée à être dérivée), prévoir :

A

soit aucun destructeur ;
soit un destructeur privé ou protégé ;
soit un destructeur public et virtuel.

17
Q

Si création d’une classe abstraite

A

Pas de création d’instance de cette classe. Exemple :
on peut se servir d’une telle classe pour regrouper des concepts sous une classe théorique.
Bien plus que la théorie …
imposer une interface générale que toutes les classes héritières devront réimplanter

18
Q

pour créer une classe purement abstraite

A

au moins une de ses méthodes déclarées purement virtuelle

19
Q
A