Продолжаем цикл статей об основах объектно-ориентированного программирования. Сегодня говорим о двух важных словах в ООП: атрибутах и методах. Это основа лексикона ООП, поэтому нужно знать.
Краткое содержание предыдущих частей:
- ООП — это подход к программированию, основанный на понятии объектов и классов.
- Объект можно представить как некую «коробку», в которой лежат какие-то данные и которая умеет совершать какие-то действия. Без объектов всё это лежит просто «в программе», а благодаря объектам оно разложено по понятным управляемым «коробкам».
- Можно иметь типовые объекты, то есть имеющие похожую структуру и содержание — как производить товары на конвейере. Чертёж, по которому делают такие объекты, называется классом. Например, в программе может быть класс «пользователь», по которому создаются все будущие пользователи. Или класс «товар», по которому создаются все будущие товары.
- Всё это нужно, чтобы упорядочить работу сложных больших программ.
Теперь нырнём в атрибуты и методы.
Атрибуты
Атрибут — это переменная, связанная с объектом или классом. Грубо говоря, если я хочу, чтобы у объекта «Пользователь» появилась фамилия, я должен сделать пользователю атрибут «Фамилия».
Для программистов: у класса есть атрибуты, свойства и поля. В зависимости от языка программирования эти три параметра могут означать одно и то же, а могут различаться. В этой статье мы разбираем академический подход к структуре класса вида «атрибут — значение».
Возьмём в качестве примера метафору — производство телефонов. У нас есть класс «Смартфон» — некий абстрактный смартфон, по лекалам которого изготавливают конкретные объекты-смартфоны.
У класса «Смартфон» могут быть такие атрибуты:
- задняя камера
- передняя камера
- датчики объёма
- батарейка
- память
Это у нас будут атрибуты класса «Смартфон». Они могут принимать конкретные значения: камеры могут быть разных моделей, память может быть 64 или 256 гигабайт, а батарейка — 2500 мАч или 3500 мАч.
Когда мы задаём атрибут для класса, мы как будто настраиваем производственную линию: «Тут у нас будет станок по установке камер, там — по вклеиванию батареи». Когда мы задали класс с определёнными атрибутами, все объекты, произведённые из этого класса, будут появляться на свет с этими атрибутами.
Методы
Методы — это то, как можно взаимодействовать с атрибутами, узнавать и менять их значения. Рассмотрим их на том же прошлом примере про класс мобильника. Вот какие действия можно совершать:
- позвонить;
- сделать фото;
- обработать HDR-фото, чтобы было красиво, когда снимаешь против солнца;
- записать заметки;
- установить программу;
- посмотреть погоду;
- полистать фотки;
- поймать сигнал сотовой сети.
Получается, что методы отвечают за то, чтобы можно было взаимодействовать с классом. Чаще всего они отвечают за то, что можно сделать с атрибутами
Если посмотреть на список, можно заметить, что почти все методы доступны для выполнения извне — позвонить, сделать фото, посмотреть погоду и так далее. Это значит, что это открытые методы (public) — их может вызывать и работать с ними кто угодно: как пользователь, так и другие программы для своих нужд.
Но два других метода из списка — особенные: обработать HDR-фото и поймать сигнал сети. Их нельзя запустить напрямую, их вызывает операционная система, когда ей это нужно. Это значит, что это закрытые (private) методы, и они доступны только внутри самого класса. Если классу понадобится что-то обработать внутри себя, он ими воспользуется, а другие не смогут этого сделать.
Ещё есть защищённые (protected) методы. Их пока нет в наших примерах, но мы до них обязательно дойдём.