Definire le classi
Fa parte della sezione Programmazione orientata agli oggetti del percorso Swift di Coddy. Lezione 2 di 57.
Una classe descrive un tipo di oggetto: i dati che ogni oggetto contiene e ciò che può fare. class Dog { ... } dichiara il tipo, e Dog() crea un oggetto di quel tipo, chiamato anche istanza:
class Dog {
var name = "Rex"
var age = 3
}
let dog = Dog()
print(dog.name)
print(dog.age)Output:
Rex
3Le variabili all'interno di una classe sono le sue proprietà. Ogni istanza ha la propria copia, che puoi leggere e modificare con un punto:
class Dog {
var name = "Rex"
var age = 3
}
let first = Dog()
let second = Dog()
second.name = "Bella"
print(first.name)
print(second.name)Output:
Rex
BellaUna funzione all’interno di una classe è un metodo. Un metodo può leggere e modificare le proprietà dell’istanza su cui viene chiamato:
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())Output:
count is 2I nomi dei tipi si scrivono in UpperCamelCase (BankAccount); le proprietà e i metodi in lowerCamelCase (balance, deposit()). Riunire i dati e le funzioni che operano su di essi in un unico tipo è l’idea fondamentale della programmazione orientata agli oggetti: il codice che usa un Counter chiama increment() e non deve mai sapere come viene memorizzato il conteggio.
class BankAccount {
var balance = 0
func deposit(_ amount: Int) {
balance += amount
}
}Sfida
FacileCompleta il metodo describe() della classe Pet. Restituisce una frase costruita a partire dalle proprietà: un animale domestico di nome Rex, di specie dog e di età 3 restituisce Rex is a 3 year old dog.
Il codice fornito crea un Pet, imposta le sue proprietà dai dati di input (nome, specie, età) e stampa il risultato di describe().
Il tuo codice va in Pet.swift. main.swift contiene il codice di input/output fornito e non può essere modificato.
Provalo tu
// Codice di input/output fornito: lascialo così com'è
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())
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Programmazione orientata agli oggetti
1Classi e oggetti
Lavorare con i fileDefinire le classiMetodi e selfInizializzatoriLe classi sono riferimentiRiepilogo - Tessera della biblioteca4Incapsulamento
Controllo degli accessiSola lettura dall’esternoProteggere lo statoInizializzatori che possono fallireRiepilogo - Conto bancario7Polimorfismo e tipi generici
PolimorfismoCasting dei tipiFunzioni genericheTipi genericiRipasso - Calcolatore di forme2Struct e tipi valore
Le structSemantica dei valoriMetodi mutantiStruct o classeRiepilogo - Articolo di inventario5Ereditarietà
SottoclassiSovrascrivere i metodiInizializzatori e superfinal e gerarchieRiepilogo - Gerarchia dei dipendenti8Protocolli standard
CustomStringConvertibleEquatableComparableHashableRiepilogo - Ordinamento personalizzato11Progetto: Gestione della biblioteca
Libri e utentiPrestito dei libriEsercitati da solo: Playground Swift