• Mar 12, 2025

[12/16] Introduction aux classes et structures en Swift

Introduction

Jusqu’à présent, vous avez appris à manipuler des types simples : String, Int, Bool, des tableaux, ou encore des dictionnaires. Mais dès que votre application devient un peu plus complexe, vous aurez besoin de modéliser des objets du monde réel. C’est exactement à cela que servent les classes et les structures en Swift.

Une classe ou une structure vous permet de créer vos propres types de données, adaptés à votre application. Par exemple, si vous développez une application de suivi sportif, vous pourriez vouloir représenter un utilisateur avec un prénom, un âge et un score. Plutôt que d’utiliser trois variables séparées, vous pouvez créer un seul type personnalisé qui regroupe toutes ces informations.

Dans ce chapitre, vous allez apprendre à :

  • créer des structures et des classes,

  • comprendre à quoi elles servent,

  • distinguer les différences entre les deux,

  • manipuler des objets dans du code Swift.


Déclarer une structure (struct)

Commençons par la structure, un outil simple et très utilisé en Swift.

struct Utilisateur {
    var prenom: String
    var age: Int

    func saluer() {
        print("Bonjour, je m’appelle \(prenom) et j’ai \(age) ans.")
    }
}

Dans cet exemple, vous venez de définir un nouveau type de donnée personnalisé nommé Utilisateur. Il contient :

  • deux propriétés : prenom et age,

  • une méthode : saluer() qui affiche une phrase avec les informations de l’utilisateur.

Créer une instance de structure

var utilisateur1 = Utilisateur(prenom: "Alice", age: 30)
utilisateur1.saluer()

💬 Ce code crée un nouvel utilisateur et appelle la méthode saluer, qui affichera :

Bonjour, je m’appelle Alice et j’ai 30 ans.

Vous venez de créer un objet à partir de votre structure.


Déclarer une classe (class)

Les classes sont très similaires aux structures, mais avec quelques particularités. Voici comment en créer une :

class Animal {
    var nom: String
    var espece: String

    init(nom: String, espece: String) {
        self.nom = nom
        self.espece = espece
    }

    func decrire() {
        print("\(nom) est un(e) \(espece).")
    }
}

Explication :

  • Les propriétés nom et espece sont définies comme dans une structure,

  • Le mot-clé init permet de créer un initialiseur, utilisé pour créer une instance de la classe,

  • Le mot-clé self fait référence à l’instance en cours.

Créer une instance de classe

let chat = Animal(nom: "Mimi", espece: "chat")
chat.decrire()

Résultat :

Mimi est un(e) chat.

Différences entre struct et class

Même si les deux se ressemblent, il existe des différences importantes :

Structure (struct) :

  • Type valeur

  • Copie indépendante lors d’une affectation

  • Pas d’héritage possible

  • Utilisée pour des types simples ou des données modélisées

Classe (class) :

  • Type référence

  • Partage la même instance entre plusieurs variables

  • Prend en charge l’héritage (une classe peut hériter d’une autre)

  • Utilisée pour des comportements plus complexes ou personnalisés

Voici un exemple pour comprendre la différence entre les deux :

struct Point {
    var x: Int
    var y: Int
}

var pointA = Point(x: 0, y: 0)
var pointB = pointA
pointB.x = 10

print(pointA.x) // 0
print(pointB.x) // 10

🔍 Ici, pointA et pointB sont deux copies différentes.

Maintenant, faisons la même chose avec une classe :

class Coordonnees {
    var x: Int
    var y: Int

    init(x: Int, y: Int) {
        self.x = x
        self.y = y
    }
}

var coordA = Coordonnees(x: 0, y: 0)
var coordB = coordA
coordB.x = 10

print(coordA.x) // 10

💡 Ici, coordA et coordB pointent vers la même instance. Modifier coordB modifie aussi coordA.


Quand utiliser une structure ou une classe ?

Il est recommandé d’utiliser une structure (struct) par défaut, sauf si vous avez un besoin spécifique qui nécessite :

  • un partage d’instance entre plusieurs objets,

  • l’utilisation de l’héritage,

  • un cycle de vie complexe à gérer (références croisées, désallocation…).

Pour la plupart des types de données simples, les structures sont plus sûres, plus performantes et encouragées en Swift.


Exemple concret : une fiche produit

Imaginons une application de gestion d’inventaire. Voici un exemple de structure utile :

struct Produit {
    var nom: String
    var prix: Double

    func afficherFiche() {
        print("Produit : \(nom) - Prix : \(prix) €")
    }
}

let cafe = Produit(nom: "Café", prix: 4.5)
cafe.afficherFiche()

Sortie attendue :

Produit : Café - Prix : 4.5 €

Ce genre de struct simplifie l’organisation des données dans des projets concrets.


Conclusion

Les classes et structures sont deux outils essentiels pour structurer vos données et organiser votre code.

  • Une structure (struct) est simple, légère, et copie ses valeurs.

  • Une classe (class) permet plus de flexibilité, notamment grâce à l’héritage et à la gestion par référence.

✅ Par défaut, privilégiez les structures. Réservez les classes pour des cas plus complexes.

Comprendre la différence entre ces deux types vous permettra d’écrire un code Swift plus clair, plus sûr, et plus adapté à vos projets. À présent, essayez de créer votre propre structure pour représenter un livre, avec un titre, un auteur et une méthode pour afficher sa description !

0 comments

Sign upor login to leave a comment