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 :
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 !
Le contenu de l’exercice se trouve dans le dossier Github P2C2.
Ouvrez un nouveau Playground Xcode.
Copiez le contenu du fichier “main.swift” dans votre Playground.
Suivez les instructions.
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.