• 20 hours
  • Medium

Free online content available in this course.

course.header.alt.is_video

course.header.alt.is_certifying

Got it!

Last updated on 2/1/19

Ajoutez des propriétés

Log in or subscribe for free to enjoy all this course has to offer!

Nous avons désormais trois classes Bus, Road et RoadSection. Et... ça nous fait une belle jambe ! Il n'y a rien dedans donc elles ne servent a priori pas à grand-chose. Dans ce chapitre, nous allons découvrir les propriétés et nous allons créer les premières propriétés de nos classes. Et pour cela, nous allons reprendre ce diagramme :

Nous allons donc écrire 3 propriétés pour la classe Bus et 1 pour la classe Road.

Créer une propriété

Dans les chapitres précédents, je vous ai dit qu'un objet, c'était un petit paquet de variables et de fonctions. Et bien, tout simplement dans un objet, une variable, on appelle ça une propriété. Ces propriétés vont nous permettre de stocker des informations sur cet objet.

Et donc pour créer une propriété, on va écrire la déclaration d'une variable à l'intérieur de la classe. Donc pour notre classe Bus, on va écrire :

class Bus {
    var driverName = "Joe"
    var seats = 20
    var occupiedSeats = 0
}

J'ai bien défini trois propriétés. L'une de type String et les deux autres de type Int. Ces propriétés ont des valeurs par défaut. Tout objet créé de la classe bus, aura comme valeur par défaut Joe pour la propriété driverName. Même chose pour les deux autres propriétés.

Vous pouvez bien sûr créer des propriétés de n'importe quel type ! Par exemple, pour la classe Road, nous allons ajouter une propriété sections de type tableau de RoadSection comme ceci :

class Road {
    var sections = [RoadSection]()
}

Accéder à une propriété et la modifier 

Les propriétés nous permettent donc de stocker des informations ! Alors comment y accède-t-on ?

Prenons une instance de la classe Bus :

var unBus = Bus()

Pour accéder à une propriété de cette instance, il suffit d'utiliser le . suivi du nom de la propriété comme ceci :

unBus.driverName // Le Playground affiche sur la droite "Joe"

Une propriété se comporte exactement comme une variable. La seule différence, c'est qu'elle est rattachée à un objet. Donc pour modifier une propriété, il suffit d'utiliser le signe égal :

unBus.driverName = "Daniel Morales"

Et bien sûr vous pouvez utiliser tout ce que vous savez sur la manipulation des variables :

unBus.occupiedSeats += 1

Mutabilité des propriétés et des instances

Si une propriété se comporte comme une variable, est-ce que cela veut dire que nous pouvons créer des propriétés constantes avec let?

Très bonne question ;) ! Et la réponse est oui ! Par exemple, on pourrait vouloir stocker une information supplémentaire sur notre bus comme le nombre de roues. On peut assez facilement admettre que ce nombre ne va pas changer et donc on peut rajouter la propriété :

class Bus {
    var driverName = "Joe"
    var seats = 20
    var occupiedSeats = 0

    let numberOfWheel = 4 // Le nombre de roues est constant et vaut 4
}

Alors qu'est-ce que ça veut dire concrètement ? Et bien ça veut dire que la propriété numberOfWheel est fixée à 4 et comme n'importe quelle constante, je ne peux pas la modifier. Si j'écris :

unBus.numberOfWheel = 5 // Le Playground affiche une erreur

Comme les variables, on peut donc avoir 2 types de propriétés :

  • les variables

  • les constantes

Qu'en est-il maintenant des instances ? Est-ce que je peux créer des instances constantes ? Par exemple, est-ce que je peux écrire la chose suivante ?

let unBus = Bus()

Je vous en prie. Essayez ! Alors ?

Eh oui ! On peut créer des instances constantes. Mais qu'est-ce que cela signifie ?

Cela veut dire que je ne peux pas modifier les propriétés de l'instance unBus?

On aurait pu s'attendre à ça en effet, mais non. Si une instance est déclarée aveclet, je peux continuer à modifier toutes ses propriétés (tant que ces dernières sont variables). Mais ce que je ne peux plus faire, c'est assigner une nouvelle valeur à cette instance. Prenons un exemple pour clarifier tout ça :

let unBus = Bus()

unBus.driverName = "Paul" // Je peux faire ça

let unAutreBus = Bus()
unBus = unAutreBus // Je ne peux pas faire ça

Exercice

Entraînez-vous avec cet exercice !

 

En résumé

  • Pour créer une propriété, on utilise simplement la syntaxe de la déclaration d'une variable à l'intérieur de la définition de la classe.

  • Pour accéder à une propriété ou la modifier, on utilise le point . suivi du nom de la propriété.

  • Si une propriété est constante, je ne peux JAMAIS la modifier, elle garde sa valeur par défaut.

  • Si une instance est constante, je peux modifier la valeur de ses propriétés, mais je ne peux pas lui assigner un autre objet.

Example of certificate of achievement
Example of certificate of achievement