ООП: атрибуты и методы

ООП: атрибуты и методы

Два главных слова любого программиста в ООП. Знай их, люби их, говори правильно.

Продолжаем цикл статей об основах объектно-ориентированного программирования. Сегодня говорим о двух важных словах в ООП: атрибутах и методах. Это основа лексикона ООП, поэтому нужно знать.

Краткое содержание предыдущих частей:

  • ООП — это подход к программированию, основанный на понятии объектов и классов.
  • Объект можно представить как некую «коробку», в которой лежат какие-то данные и которая умеет совершать какие-то действия. Без объектов всё это лежит просто «в программе», а благодаря объектам оно разложено по понятным управляемым «коробкам».
  • Можно иметь типовые объекты, то есть имеющие похожую структуру и содержание — как производить товары на конвейере. Чертёж, по которому делают такие объекты, называется классом. Например, в программе может быть класс «пользователь», по которому создаются все будущие пользователи. Или класс «товар», по которому создаются все будущие товары.
  • Всё это нужно, чтобы упорядочить работу сложных больших программ.

Теперь нырнём в атрибуты и методы.

Атрибуты

Атрибут — это переменная, связанная с объектом или классом. Грубо говоря, если я хочу, чтобы у объекта «Пользователь» появилась фамилия, я должен сделать пользователю атрибут «Фамилия».

Для программистов: у класса есть атрибуты, свойства и поля. В зависимости от языка программирования эти три параметра могут означать одно и то же, а могут различаться. В этой статье мы разбираем академический подход к структуре класса вида «атрибут — значение».

Возьмём в качестве примера метафору — производство телефонов. У нас есть класс «Смартфон» — некий абстрактный смартфон, по лекалам которого изготавливают конкретные объекты-смартфоны.

У класса «Смартфон» могут быть такие атрибуты:

  • задняя камера
  • передняя камера
  • датчики объёма
  • батарейка
  • память

Это у нас будут атрибуты класса «Смартфон». Они могут принимать конкретные значения: камеры могут быть разных моделей, память может быть 64 или 256 гигабайт, а батарейка — 2500 мАч или 3500 мАч.

Когда мы задаём атрибут для класса, мы как будто настраиваем производственную линию: «Тут у нас будет станок по установке камер, там — по вклеиванию батареи». Когда мы задали класс с определёнными атрибутами, все объекты, произведённые из этого класса, будут появляться на свет с этими атрибутами.

Методы

Методы — это то, как можно взаимодействовать с атрибутами, узнавать и менять их значения. Рассмотрим их на том же прошлом примере про класс мобильника. Вот какие действия можно совершать:

  • позвонить;
  • сделать фото;
  • обработать HDR-фото, чтобы было красиво, когда снимаешь против солнца;
  • записать заметки;
  • установить программу;
  • посмотреть погоду;
  • полистать фотки;
  • поймать сигнал сотовой сети.

Получается, что методы отвечают за то, чтобы можно было взаимодействовать с классом. Чаще всего они отвечают за то, что можно сделать с атрибутами

Если посмотреть на список, можно заметить, что почти все методы доступны для выполнения извне — позвонить, сделать фото, посмотреть погоду и так далее. Это значит, что это открытые методы (public) — их может вызывать и работать с ними кто угодно: как пользователь, так и другие программы для своих нужд.

Но два других метода из списка — особенные: обработать HDR-фото и поймать сигнал сети. Их нельзя запустить напрямую, их вызывает операционная система, когда ей это нужно. Это значит, что это закрытые (private) методы, и они доступны только внутри самого класса. Если классу понадобится что-то обработать внутри себя, он ими воспользуется, а другие не смогут этого сделать.

Ещё есть защищённые (protected) методы. Их пока нет в наших примерах, но мы до них обязательно дойдём.

Обложка:

Даня Берковский

Корректор:

Ирина Михеева

Вёрстка:

Маша Климентьева

Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию
Вам может быть интересно
Два программиста решили взломать систему авторских прав на музыку
Два программиста решили взломать систему авторских прав на музыку

Понадобилось всего 68 миллиардов комбинаций нот.

Домашний кинотеатр на Raspberry Pi
Домашний кинотеатр на Raspberry Pi

Превращаем любой телевизор в умный гаджет.

easy
Задача о деньгах
Задача о деньгах

Пропало 300 рублей, но никто этого не заметил.

medium
Что будет, если переменную разделить и сразу умножить на одно и то же число
Что будет, если переменную разделить и сразу умножить на одно и то же число

Будет ошибка, которую чертовски сложно отловить

easy
Что означает ошибка TypeError: object is not callable
Что означает ошибка TypeError: object is not callable

Простая ошибка, которая может случиться с каждым

easy
Находим лица в картинке с веб-камеры
Находим лица в картинке с веб-камеры

Первый шаг на пути к крупным проектам

medium
Тёмная тема на сайте: второй этап
Тёмная тема на сайте: второй этап

Сохраняем тему и добавляем переключатель

medium
Делаем простые автотесты на Python
Делаем простые автотесты на Python

Пусть программа проверяет другую программу

medium
Что означает ошибка TypeError: can only concatenate str (not «int») to str
Что означает ошибка TypeError: can only concatenate str (not «int») to str

Это значит, что вы пытаетесь сложить строки с числами

easy
easy