• 8 hours
  • Medium

Free online content available in this course.

course.header.alt.is_video

course.header.alt.is_certifying

Got it!

Last updated on 10/10/23

Ajoutez des propriétés

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 à 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 :

Notre diagramme de classes avec nos 3 classes Bus, Road et RoadSection, ainsi que leurs propriétés et méthodes
Notre diagramme de classes

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

Créez 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. Eh 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édez à 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 bus = Bus()

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

bus.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 :

bus.driverName = "Daniel Morales"

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

bus.occupiedSeats += 1

Définissez la 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 ? Eh 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 :

bus.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 bus = 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 bus ?

On aurait pu s'attendre à ça en effet, mais non. Si une instance est déclarée avec let, 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 bus = Bus()

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

 

let newBus = Bus()
bus = newBus // Je ne peux pas faire ça

À vous de jouer !

Vous êtes prêt ? Un autre exercice vous attend sur Replit !

Pour accéder à la solution :

  1. Soumettez votre projet avec le bouton "Submit" en haut à droite, 

  2. Cliquez sur le titre de l'exercice en haut à gauche de la fenêtre,

  3. Puis sur "OCswiftpoo",

  4. Cliquez sur "Fork the solution".

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.

Félicitations, les propriétés de classe n’ont maintenant plus de secret pour vous ! Prochaine étape : l’initialisation des classes.

Example of certificate of achievement
Example of certificate of achievement