Définir des classes
Fait partie de la section Programmation orientée objet du Journey Swift de Coddy. Leçon 2 sur 57.
Une classe décrit un type d’objet : les données que chaque objet contient et ce qu’il peut faire. class Dog { ... } déclare le type, et Dog() crée un objet de ce type, également appelé une instance :
class Dog {
var name = "Rex"
var age = 3
}
let dog = Dog()
print(dog.name)
print(dog.age)Sortie :
Rex
3Les variables à l’intérieur d’une classe sont ses propriétés. Chaque instance possède sa propre copie, que l’on lit et modifie avec un point :
class Dog {
var name = "Rex"
var age = 3
}
let first = Dog()
let second = Dog()
second.name = "Bella"
print(first.name)
print(second.name)Sortie :
Rex
BellaUne fonction à l’intérieur d’une classe est une méthode. Une méthode peut lire et modifier les propriétés de l’instance sur laquelle elle est appelée :
class Counter {
var count = 0
func increment() {
count += 1
}
func report() -> String {
"count is \(count)"
}
}
let clicks = Counter()
clicks.increment()
clicks.increment()
print(clicks.report())Sortie :
count is 2Les noms de types s’écrivent en UpperCamelCase (BankAccount) ; les propriétés et les méthodes en lowerCamelCase (balance, deposit()). Regrouper les données et les fonctions qui les manipulent dans un même type constitue l’idée fondamentale de la programmation orientée objet : le code qui utilise un Counter appelle increment() et n’a jamais besoin de savoir comment le compteur est stocké.
class BankAccount {
var balance = 0
func deposit(_ amount: Int) {
balance += amount
}
}Défi
FacileComplétez la méthode describe() de la classe Pet. Elle renvoie une phrase construite à partir des propriétés : un animal nommé Rex, d’espèce dog et âgé de 3 ans donne Rex is a 3 year old dog.
Le code fourni crée un Pet, définit ses propriétés à partir de l’entrée (nom, espèce, âge) et affiche le résultat de describe().
Votre code doit être placé dans Pet.swift. main.swift contient le code d’entrée/sortie fourni et ne peut pas être modifié.
Essayez vous-même
// Code d'entrée/sortie fourni : le garder tel quel
var input: [String] = []
while let line = readLine() { input.append(line) }
let pet = Pet()
pet.name = input[0]
pet.species = input[1]
pet.age = Int(input[2])!
print(pet.describe())
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Programmation orientée objet
1Classes et objets
Travailler avec des fichiersDéfinir des classesMéthodes et selfInitialiseursLes classes sont des référencesRécapitulatif - Carte de bibliothèque4Encapsulation
Contrôle d’accèsLecture seule depuis l’extérieurProtection de l’étatInitialiseurs pouvant échouerRécapitulatif - Compte bancaire7Polymorphisme et génériques
PolymorphismeConversion de typeFonctions génériquesTypes génériquesRécapitulatif - Calculateur de formes2Structures et types valeur
StructuresSémantique de valeurMéthodes mutantesStructure ou classeRécapitulatif - article d’inventaire5Héritage
Sous-classesRedéfinition des méthodesInitialiseurs et superfinal et hiérarchiesRécapitulatif - hiérarchie des employés8Protocoles standard
CustomStringConvertibleEquatableComparableHashableRécapitulatif - Tri personnalisé11Projet : Gestion de bibliothèque
Livres et membresEmprunter des livresEntraînez-vous par vous-même : Playground Swift