En ajoutant private à une propriété ou une méthode, nous la rendons accessible uniquement à l’intérieur de sa classe ou struct. Cela nous permet d’avoir une certaine sécurité et de ne pouvoir modifier des données que si nous le voulons. Par exemple, il est possible de lire et modifier la valeur du nombre de kms de notre voiture. C’est bien, mais dans la pratique, nous ne pouvons qu’ajouter des kms à une voiture, pas modifier le compteur pour la revendre plus cher. Hors notre application ne permet pas cela. Changeons cela en private et ajoutons un getter et setter

struct Voiture {
    //Ajout des propriétés
    var marque: String = “Toyota”
    var modèle: String = “Yaris”
    var année: Int = 2018
    private var _kms: Int = 20150
    var couleur: String = “Gris”
    var kms: Int {
        get {
            return _kms
        } set(newValue) {
            if newValue > _kms {
                _kms = newValue
            } else {
                print(“Coquin tu essaies de modifier ton compteur”)
            }
        }
    }
    //Ajout des méthodes
} 

Nous voyons que le mot clé private ne nous donne plus accès à la variable _kms. J’ai ajouté un ‘_’ devant le nom de la variable privée. C’est une convention pour pouvoir voir au premier coup d’oeil une variable privée. 

Maintenant essayons de modifier les valeurs

var maJolieVoiture = Voiture()
print(maJolieVoiture.kms)
//Nombre de kilomètres: 20150
maJolieVoiture.kms += 15
print(maJolieVoiture.kms)
//Nombre de kilomètres: 20165
maJolieVoiture.kms -= 200
//Coquin tu essaies de modifier ton compteur
print(maJolieVoiture.kms)
//Nombre de kilomètres: 20165 

Nous pouvons ainsi voir l’intérêt de privatiser les propriétés.