Определение классов
Часть раздела Объектно-ориентированное программирование путешествия по Swift на Coddy. Урок 2 из 57.
Класс описывает разновидность объекта: данные, которые хранит каждый объект, и то, что он умеет делать. class Dog { ... } объявляет тип, а Dog() создаёт объект этого типа, также называемый экземпляром:
class Dog {
var name = "Rex"
var age = 3
}
let dog = Dog()
print(dog.name)
print(dog.age)Вывод:
Rex
3Переменные внутри класса — это его свойства. У каждого экземпляра есть собственная копия, к которой обращаются и которую изменяют с помощью точки:
class Dog {
var name = "Rex"
var age = 3
}
let first = Dog()
let second = Dog()
second.name = "Bella"
print(first.name)
print(second.name)Вывод:
Rex
BellaФункция внутри класса — это метод. Метод может читать и изменять свойства экземпляра, для которого он вызывается:
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())Вывод:
count is 2Имена типов записываются в формате UpperCamelCase (BankAccount), а свойства и методы — в формате lowerCamelCase (balance, deposit()). Объединение данных и функций, которые с ними работают, в одном типе — основная идея объектно-ориентированного программирования: код, использующий Counter, вызывает increment() и никогда не должен знать, как хранится счётчик.
class BankAccount {
var balance = 0
func deposit(_ amount: Int) {
balance += amount
}
}Задание
ЛегкоЗавершите метод describe() класса Pet. Он возвращает одно предложение, составленное из свойств: питомец по имени Rex, вид dog, возраст 3 даёт Rex is a 3 year old dog.
Предоставленный код создаёт объект Pet, задаёт его свойства на основе входных данных (имя, вид, возраст) и выводит результат describe().
Ваш код должен находиться в Pet.swift. В main.swift содержится предоставленный код ввода/вывода, и его нельзя изменять.
Попробуйте сами
// Предоставленный код ввода/вывода: оставьте его как есть
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())
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Объектно-ориентированное программирование
1Классы и объекты
Работа с файламиОпределение классовМетоды и selfИнициализаторыКлассы — это ссылкиПовторение — читательский билет4Инкапсуляция
Контроль доступаТолько чтение извнеЗащита состоянияИнициализаторы с возможностью сбояПовторение — банковский счёт7Полиморфизм и обобщения
ПолиморфизмПриведение типовОбобщённые функцииОбобщённые типыПовторение — калькулятор фигур10Паттерны проектирования. Часть 2
Паттерн делегированияПаттерн декораторПаттерн строительПаттерн состояния2Структуры и типы-значения
СтруктурыСемантика значенийИзменяющие методыСтруктура или классПовторение — элемент инвентаря5Наследование
ПодклассыПереопределение методовИнициализаторы и superfinal и иерархииПовторение — иерархия сотрудников8Стандартные протоколы
CustomStringConvertibleEquatableComparableHashableПовторение — пользовательская сортировка11Проект: Управление библиотекой
Книги и читателиВыдача книгПотренируйтесь самостоятельно: Песочница Swift