#Les paradigmes de programmation en Swift

#Programmation Orientée Objet (OOP)

Lien vers la documentation officielle

🧠 La programmation orientée objet est une approche de programmation qui utilise des objets, qui regroupent des données et des méthodes qui agissent sur ces données. En Swift, les classes et les structures sont utilisées pour implémenter des concepts de programmation orientée objet.

Exemple en Swift :

swift
class Animal {
    var name: String
    
    init(name: String) {
        self.name = name
    }
    
    func makeSound() {
        // Méthode par défaut ne faisant rien
    }
}

class Dog: Animal {
    override func makeSound() {
        print("Woof!")
    }
}

// Utilisation de la programmation orientée objet
let myDog = Dog(name: "Buddy")
myDog.makeSound() // Affiche "Woof!"

#Programmation Fonctionnelle

Lien vers la documentation officielle

🧠 La programmation fonctionnelle est une approche où les fonctions sont traitées comme des valeurs de première classe. Elle encourage l’immutabilité et l’application de fonctions pures sans effets secondaires.

Exemple en Swift :

swift
let numbers = [1, 2, 3, 4, 5]

// Utilisation de fonctions de la programmation fonctionnelle
let doubledNumbers = numbers.map { $0 * 2 }
let evenNumbers = numbers.filter { $0 % 2 == 0 }
let sum = numbers.reduce(0, +)

print(doubledNumbers) // Affiche "[2, 4, 6, 8, 10]"
print(evenNumbers) // Affiche "[2, 4]"
print(sum) // Affiche "15"

#Programmation Déclarative

🧠 La programmation déclarative se concentre sur la spécification de ce que le programme doit accomplir sans spécifier comment le faire. Swift prend en charge la programmation déclarative à travers des API telles que SwiftUI pour la création d’interfaces utilisateur déclaratives.

Exemple en Swift (SwiftUI) :

swift
import SwiftUI

struct ContentView: View {
    var body: some View {
        VStack {
            Text("Hello, World!")
                .font(.largeTitle)
                .foregroundColor(.blue)
        }
    }
}

// Utilisation de SwiftUI pour déclarer une interface utilisateur
struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

#Programmation Orientée Protocole

Lien vers la documentation officielle

🧠 La programmation orientée protocole utilise des protocoles pour définir des interfaces et permet la composition de comportements. Cela favorise la flexibilité et la réutilisation du code.

Exemple en Swift :

swift
protocol Eatable {
    func eat()
}

protocol Walkable {
    func walk()
}

struct Person: Eatable, Walkable {
    func eat() {
        print("Person is eating")
    }
    
    func walk() {
        print("Person is walking")
    }
}

// Utilisation de la programmation orientée protocole
let person = Person()
person.eat() // Affiche "Person is eating"
person.walk() // Affiche "Person is walking"