Klassen definieren
Teil des Abschnitts Objektorientierte Programmierung der Swift-Journey von Coddy. Lektion 2 von 57.
Eine class beschreibt eine Art von Objekt: die Daten, die jedes Objekt enthält, und was es tun kann. class Dog { ... } deklariert den Typ, und Dog() erstellt ein Objekt dieses Typs, auch Instanz genannt:
class Dog {
var name = "Rex"
var age = 3
}
let dog = Dog()
print(dog.name)
print(dog.age)Ausgabe:
Rex
3Die Variablen innerhalb einer Klasse sind ihre Eigenschaften. Jede Instanz besitzt ihre eigene Kopie, auf die mit einem Punkt zugegriffen und die damit geändert wird:
class Dog {
var name = "Rex"
var age = 3
}
let first = Dog()
let second = Dog()
second.name = "Bella"
print(first.name)
print(second.name)Ausgabe:
Rex
BellaEine Funktion innerhalb einer Klasse ist eine Methode. Eine Methode kann die Eigenschaften der Instanz lesen und ändern, auf der sie aufgerufen wird:
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())Ausgabe:
count is 2Typnamen werden in UpperCamelCase geschrieben (BankAccount); Eigenschaften und Methoden in lowerCamelCase (balance, deposit()). Die Daten und die darauf arbeitenden Funktionen in einem Typ zusammenzufassen, ist die Grundidee der objektorientierten Programmierung: Code, der einen Counter verwendet, ruft increment() auf und muss nie wissen, wie die Zählung gespeichert wird.
class BankAccount {
var balance = 0
func deposit(_ amount: Int) {
balance += amount
}
}Aufgabe
EinfachVervollständige die Methode describe() der Klasse Pet. Sie gibt einen aus den Eigenschaften gebildeten Satz zurück: Ein Haustier mit dem Namen Rex, der Tierart dog und dem Alter 3 ergibt Rex is a 3 year old dog.
Der bereitgestellte Code erstellt ein Pet-Objekt, setzt dessen Eigenschaften anhand der Eingabe (Name, Tierart, Alter) und gibt das Ergebnis von describe() aus.
Dein Code gehört in Pet.swift. main.swift enthält den bereitgestellten Eingabe-/Ausgabecode und darf nicht bearbeitet werden.
Probier es selbst
// Bereitgestellter Input/Output-Code: belasse ihn wie er ist
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())
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Objektorientierte Programmierung
1Klassen und Objekte
Arbeiten mit DateienKlassen definierenMethoden und selfInitialisiererKlassen sind ReferenzenRückblick – Bibliotheksausweis4Kapselung
ZugriffskontrolleVon außen schreibgeschütztZustand schützenFehlschlagende InitialisiererRückblick – Bankkonto7Polymorphismus und Generika
PolymorphismusTypumwandlungGenerische FunktionenGenerische TypenZusammenfassung – Shape-Rechner2Strukturen und Werttypen
StrukturenWertsemantikVerändernde MethodenStruktur oder KlasseZusammenfassung – Inventarelement5Vererbung
UnterklassenMethoden überschreibenInitialisierer und superfinal und HierarchienRückblick – Mitarbeiterhierarchie8Standardprotokolle
CustomStringConvertibleEquatableComparableHashableRückblick – Benutzerdefiniertes Sortieren11Projekt: Bibliotheksverwaltung
Bücher und MitgliederBücher ausleihenÜbe selbstständig: Swift-Playground