Объектно-ориентированное программирование

Классы и объекты

Последнее обновление: 01.01.2018

Swift является объектно-ориентированным языком, а значит позволяет представить программу как набор взаимодействующих между собой объектов.

Ключевым моментом для построения объектно-ориентированного дизайна является возможность абстрагироваться от конкретных взаимодействий в программе, от конкретных предметов и явлений с помощью абстрактных конструкций. В языке Swift такими абстрактными конструкциями являются классы, структуры и перечисления. Сначала мы рассмотрим классы, а в последующих темах затронем структуры и перечисления.

Класс является описанием объекта, а объект представляет экземпляр этого класса. Можно еще провести следующую аналогию. У нас у всех есть некоторое представление о человеке - наличие двух рук, двух ног, головы, пищеварительной, нервной системы, головного мозга и т.д. Есть некоторый шаблон - этот шаблон можно назвать классом. Реально же существующий человек (фактически экземпляр данного класса) является объектом этого класса.

Для определения класса используется ключевое слово class, после которого идет название класса:

class User {
    
}

В данном случае класс называется User. Все тело класса заключается в фигурные скобки.

Класс может содержать переменные и константы, которые хранят состояние объекта. Переменные и константы, определенные в классе, еще называют хранимые свойства класса (stored properties). Например:

class User {
    
	var age: Int = 18
	var name: String = ""
}

Здесь класс User определяет две переменных age и name, которые хранят соответственно возраст и имя пользователя.

Важно отметить, что здесь не просто определяются переменные, кроме того, им присваиваются начальные значения. Все переменные и константы в классе должны быть инициализированы к моменту использования класса.

Кроме переменных и констант в классе могут определены методы. Методы представляют собой функции, ассоциированные с определенным типом - классом, перечислением или структурой:

class User {
    
	var age: Int = 18
	var name: String = ""
	
	func move(){
		
		print("\(name) передвигается")
	}
}

После определения класса мы можем использовать его в программе, в частности, создавать его объекты:

var tom: User = User()
tom.age = 22
tom.name = "Том"
print(tom.name)	// Том
tom.move()	// "Том передвигается"

Чтобы создать объект класса используется инициализатор, который представляет собой следующую конструкцию:

название_класса()

После названия класса идут пустые скобки. Эта конструкция создает объект, ссылку на который хранит переменная tom. Определение переменных и констант класса ничем не отличается от других переменных и констант.

После создания объекта класса мы сможем обращаться к его свойствам и методам. Для обращения к ним используется нотация точки. То есть после названия переменной tom ставится точка, после которой идет название свойства/метода:

tom.name = "Tom"
tom.move()

Ключевое слово self

Ключевое слово self позволяет обратиться к текущему экземпляру класса:

class User {
    
	var age: Int = 0
	var name: String = ""
	
	func move(){
		
		print("\(self.name) передвигается")
	}
	func getUserInfo(){
		
		print("Имя: \(self.name); возраст: \(self.age)")
	}
}
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850