Logo de Swift en orange sur fond gris qui sert de hero de présentation de la formation sur les fondamentaux de Swift

Protocoles

Là, on va découvrir un outil chouette, les protocoles. C’est un outil qui va permettre de fixer des règles à suivre pour nos objets, classes, structures et énumérations. En appelant un protocole sur une classe, je devrai me conformer à celui-ci. Par exemple, si je déclare une propriété de type String dans mon protocole et que je l’appelle dans mon objet, je serai obligé d’utiliser cette propriété. C’est très utile pour conformer des objets à certains paramètres et pour ne pas avoir à répéter son code. On peut fabriquer nos propres protocoles ou utiliser des protocoles natifs de Swift (on les verra un peu plus tard).

 Syntaxe


protocol Animal {
    var name: String { get }
    func makeSound()
}

Ici, Animal est un protocole qui exige que toute entité l’adoptant ait une propriété name et une méthode makeSound.

Adoption et conformité à un protocole


class Dog: Animal {
    var name: String

    init(name: String) {
        self.name = name
    }

    func makeSound() {
        print("Ouaf Ouaf")
    }
}

class Cat: Animal {
    var name: String

    init(name: String) {
        self.name = name
    }

    func makeSound() {
        print("Miaouuwwww")
    }
}

La classe Dog et Cat adoptent le protocole Animal. Elles ont toutes deux une propriété name et implémentent la méthode makeSound.

 Propriétés de protocoles

Les protocoles peuvent définir des propriétés en lecture-écriture ou en lecture seule.

protocol Car {
    var color: String { get set }
    var make: String { get }
}

color est une propriété en lecture-écriture. make est une propriété en lecture seule.

Implémentation


class Porsche: Car {
    var color: String
    let make: String

    init(color: String, make: String) {
        self.color = color
        self.make = make
    }
}

 Héritage de protocoles


protocol ElectricCar: Car {
    var batteryLife: Int { get }
}

class Tesla: ElectricCar {
    var color: String
    let make: String
    var batteryLife: Int

    init(color: String, make: String, batteryLife: Int) {
        self.color = color
        self.make = make
        self.batteryLife = batteryLife
    }
}
Un protocole peut hériter d’un autre protocole.

Exercices Pratiques

Exo protocoles

Télécharger le playground

Accède aux consignes directement en téléchargeant le playground.

⚠️ Les consignes que tu trouveras dans le playground ne sont pas verrouillées. Fais attention à ne pas les effacer par inadvertance ! 

Objectif

Les protocoles sont pratiques pour définir un ensemble de règles ou de fonctionnalités que les classes, structures ou énumérations peuvent adopter. Ils te permettent, par exemple, de garantir qu’un type respecte certaines exigences, comme avoir des propriétés spécifiques ou implémenter des méthodes particulières. Les protocoles sont parfaits pour structurer ton code et rendre tes types plus flexibles et modulaires. En apprenant à utiliser les protocoles, tu pourras écrire un code plus propre, réutilisable et facile à maintenir, tout en tirant pleinement parti de la programmation orientée protocole, qui est au cœur de Swift.

Note

Les protocoles permettent de définir des comportements réutilisables et de séparer les responsabilités. Plutôt que de tout mettre dans une seule classe ou structure, utilise plusieurs protocoles pour diviser les fonctionnalités en petits blocs logiques. 

Exercices Pratiques

Exo protocoles

Télécharger le playground

Accède aux consignes directement en téléchargeant le playground.

⚠️ Les consignes que tu trouveras dans le playground ne sont pas verrouillées. Fais attention à ne pas les effacer par inadvertance ! 

Objectif

Les protocoles sont pratiques pour définir un ensemble de règles ou de fonctionnalités que les classes, structures ou énumérations peuvent adopter. Ils te permettent, par exemple, de garantir qu’un type respecte certaines exigences, comme avoir des propriétés spécifiques ou implémenter des méthodes particulières. Les protocoles sont parfaits pour structurer ton code et rendre tes types plus flexibles et modulaires. En apprenant à utiliser les protocoles, tu pourras écrire un code plus propre, réutilisable et facile à maintenir, tout en tirant pleinement parti de la programmation orientée protocole, qui est au cœur de Swift.

Note

Les protocoles permettent de définir des comportements réutilisables et de séparer les responsabilités. Plutôt que de tout mettre dans une seule classe ou structure, utilise plusieurs protocoles pour diviser les fonctionnalités en petits blocs logiques.