Quels sont les principes de la programmation orientée objet?
sobes.tech IA
Réponse de l'IA
Principes de la POO:
-
Encapsulation: Regrouper les données (propriétés) et les méthodes qui opèrent sur ces données en un seul objet et cacher l'implémentation interne du monde extérieur. L'accès aux données se fait via des interfaces publiques spécifiques (méthodes).
// Cacher l'implémentation interne de la propriété balance class Account { private var balance: Double = 0.0 func deposit(amount: Double) { if amount > 0 { balance += amount } } func getBalance() -> Double { return balance } } -
Héritage: Mécanisme permettant de créer une nouvelle classe (fille) basée sur une existante (parent), en héritant ses propriétés et méthodes. Cela favorise la réutilisation du code.
// Les classes Dog et Cat héritent des propriétés et méthodes de la classe Animal class Animal { let name: String init(name: String) { self.name = name } func makeSound() { print("\(name) émet un son") } } class Dog: Animal { override func makeSound() { print("\(name) aboie") } } class Cat: Animal { override func makeSound() { print("\(name) miaule") } } -
Polymorphisme: Capacité d'objets de classes différentes à répondre à un même message (appel de méthode) de manière différente, selon leur type.
// Différentes implémentations de la méthode makeSound() dans les classes Dog et Cat func playSound(of animal: Animal) { animal.makeSound() // Appel polymorphe } let myDog = Dog(name: "Bobby") let myCat = Cat(name: "Murka") playSound(of: myDog) // Affichera "Bobby aboie" playSound(of: myCat) // Affichera "Murka miaule" -
Abstraction: Mettre en évidence les caractéristiques essentielles d'un objet et ignorer celles non essentielles. Créer des représentations générales d'objets.
// Représentation d'une figure géométrique sans implémentation concrète protocol Shape { func calculateArea() -> Double func calculatePerimeter() -> Double } // Implémentations concrètes pour cercle et carré struct Circle: Shape { let radius: Double func calculateArea() -> Double { return Double.pi * radius * radius } func calculatePerimeter() -> Double { return 2 * Double.pi * radius } } struct Square: Shape { let side: Double func calculateArea() -> Double { return side * side } func calculatePerimeter() -> Double { return 4 * side } }