Definiowanie klas
Część sekcji Programowanie obiektowe ścieżki Swift w Coddy. Lekcja 2 z 57.
Klasa opisuje rodzaj obiektu: dane, które przechowuje każdy obiekt, oraz to, co może robić. class Dog { ... } deklaruje typ, a Dog() tworzy obiekt tego typu, zwany również instancją:
class Dog {
var name = "Rex"
var age = 3
}
let dog = Dog()
print(dog.name)
print(dog.age)Wynik:
Rex
3Zmienne wewnątrz klasy to jej właściwości. Każda instancja ma własną kopię, którą można odczytywać i zmieniać za pomocą kropki:
class Dog {
var name = "Rex"
var age = 3
}
let first = Dog()
let second = Dog()
second.name = "Bella"
print(first.name)
print(second.name)Wynik:
Rex
BellaFunkcja wewnątrz klasy to metoda. Metoda może odczytywać i zmieniać właściwości instancji, na której jest wywoływana:
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())Wynik:
count is 2Nazwy typów zapisuje się w formacie UpperCamelCase (BankAccount); właściwości i metody — w formacie lowerCamelCase (balance, deposit()). Umieszczenie danych i funkcji, które na nich operują, w jednym typie to podstawowa idea programowania obiektowego: kod korzystający z Counter wywołuje increment() i nie musi wiedzieć, w jaki sposób przechowywana jest wartość licznika.
class BankAccount {
var balance = 0
func deposit(_ amount: Int) {
balance += amount
}
}Wyzwanie
ŁatwyUzupełnij metodę describe() klasy Pet. Zwraca ona jedno zdanie zbudowane z właściwości: zwierzę o imieniu Rex, gatunku dog i wieku 3 daje wynik Rex is a 3 year old dog.
Dostarczony kod tworzy obiekt Pet, ustawia jego właściwości na podstawie danych wejściowych (imię, gatunek, wiek) i wyświetla wynik działania describe().
Twój kod należy umieścić w pliku Pet.swift. Plik main.swift zawiera dostarczony kod wejścia/wyjścia i nie można go edytować.
Spróbuj swoich sił
// Dostarczony kod wejścia/wyjścia: pozostaw go bez zmian
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())
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Programowanie obiektowe
1Klasy i obiekty
Praca z plikamiDefiniowanie klasMetody i selfInicjalizatoryKlasy są referencjamiPowtórzenie — karta biblioteczna4Hermetyzacja
Kontrola dostępuTylko do odczytu z zewnątrzOchrona stanuInicjalizatory, które mogą zawieśćPodsumowanie — konto bankowe7Polimorfizm i typy generyczne
PolimorfizmRzutowanie typówFunkcje generyczneTypy generycznePodsumowanie – kalkulator kształtów2Struktury i typy wartościowe
StrukturySemantyka wartościMetody modyfikująceStruktura czy klasaPodsumowanie – element inwentarza5Dziedziczenie
PodklasyPrzesłanianie metodInicjalizatory i superfinal i hierarchiePodsumowanie — hierarchia pracowników8Standardowe protokoły
CustomStringConvertibleEquatableComparableHashablePodsumowanie — własne sortowanie11Projekt: Zarządzanie biblioteką
Książki i czytelnicyWypożyczanie książekPoćwicz samodzielnie: Edytor online Swift