L'héritage Flashcards

1
Q

Qu’est-ce que l’héritage ?

A

Il s’agit du concept de création de classes ayant le même but final mais qui se comportent différement.

Comme dans la vie de tous les jours, vous pouvez trouver des objets différents, mais qui pour autant peuvent s’utiliser de la même façon. Par exemple : un scooter est une moto et une moto-cross est aussi une moto. On l’utilisera de la même façon pour rouler, pourtant ce sont bien deux motos différentes au final. On aura donc des attributs de base à fournir à nos objets scooter et moto-cross, mais on aura aussi des attributs spécifiques à chacune de ces motos (qui permettront de fournir la différence entre un scooter et une moto-cross).

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

Comment savoir quand utiliser un héritage ?

A

Il suffit de se poser une seule question, à savoir : « Est-ce que B est un A ? ». Sachant que A et B sont deux objets différents. Si à cette question vous répondez « oui », alors vous pouvez utiliser l’héritage.

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

Donner un exemple de classes héritées.

A

On dira que Voiture hérite de Véhicule ou encore que Chat hérite de Animal. Voiture et Chat sont deux classes qu’on appellera classes héritées. Véhicule et Animal eux seront des classes qu’on appellera classes mères ou encore classes parentes.

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

De combien de classes une classe peut-elle hériter ?

A

Une seule !

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

Quel est le signe permettant de dire qu’une classe hérite d’une autre ?

A

:

class Acteur : Personne { 
}

La classe Acteur hérite maintenant de la classe Personne.

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

Quel est l’intérêt d’un héritage ?

A

Grâce à cette méthode, toutes modifications effectuées à la classe Personne seront répercutées pour la classe Acteur. Et grâce à cette méthode encore, on pourra attribuer nos attributs et méthodes spécifiques pour notre classe Acteur.

Qu’est-ce qu’un acteur a de spécifique par rapport à une personne normale ? Il joue par exemple dans un ou plusieurs films, ce qui n’est pas forcément le cas pour une personne en général

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

Qu’est-ce que le polymorphisme (overriding) ?

A

On va modifier la méthode de la classe parente ou même tout simplement la redéfinir.

Il existe un mot-clé supplémentaire qui vous permettra d’accéder aux attributs et méthodes de votre classe mère, ce mot-clé est : super. super représentera donc dans votre classe Acteur, la classe Personne. Vous pourrez grâce à ce mot-clé, réaliser les actions de Personne dans votre classe Acteur.

Une dernière chose, il faudra préciser que vous réécrivez une fonction déjà existante dans la classe mère. Pour cela, on écrira le mot-clé override avant la définition de la fonction.

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

À quoi ressemble un override ?

A
class Acteur : Personne {
 // ...

override func feterSonAnniversaire() {
super.feterSonAnniversaire()
println(“Aujourd’hui c’est l’anniversaire de “ + self.nom + “. Vous êtes tous invités !”)
}
override func affiche() {
println(“Nom, prénom de l’acteur “ + self.nom + “, “ + self.prenom)
}
}

nous avons décidé dans un premier temps de réaliser exactement la même chose que l’on avait écrit pour la classe Personne. Pour cela, on a utilisé le mot-clé super qui permet de s’adresser à la classe mère (à savoir ici Personne). Nous l’avons utilisé comme si nous utilisions un objet. Ainsi, super.feterSonAnniversaire() a réalisé l’action d’ajouter +1 à l’âge de l’acteur. Seulement, dans notre méthode réécrite pour la classe Acteur, nous ne voulons pas seulement réaliser la même action que pour Personne, on souhaite également prévenir tout le monde. On ajoute alors à la suite notre println(). Notez que puisque Acteur hérite de Personne, alors on peut récupérer les attributs de l’objet Personne dans notre classe Acteur avec le mot-clé self. Même si les attributs ne sont pas écrits explicitement dans la classe Acteur, Swift le sait. [;)]

Pour la méthode affiche(), on n’utilise pas le mot-clé super . Cela veut donc dire qu’on a décidé de complètement réécrire la méthode. Ici, dans l’exemple, on veut juste afficher le nom et prénom de l’acteur et c’est tout.

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

Peut-on faire hériter une classe d’une classe qui est déjà héritée ?

A

Oui, mais on ne peut pas faire hériter deux classes à une même classe.

A B C : A hérite de B et C hérite de B OUI

A B C : C hérite de A et B NON

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