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

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

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

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

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

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

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

Атрибуты

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

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

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

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

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

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

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

Методы

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

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

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

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

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

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

Обложка:

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

Корректор:

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

Вёрстка:

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

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

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

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

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

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

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

medium
Простейший генератор текста на цепях Маркова
Простейший генератор текста на цепях Маркова

Выдаёт любой текст на любую тему.

medium
Как добавить плавающий блок на страницу
Как добавить плавающий блок на страницу

Иногда это и правда нужно.

easy
Что означает ошибка ValueError: invalid literal for int() with base 10
Что означает ошибка ValueError: invalid literal for int() with base 10

Что будет, если попытаться преобразовать в число то, что похоже на число, но им не является

easy
Как убрать что угодно на любом сайте
Как убрать что угодно на любом сайте

Самый популярный приём разработчиков.

easy
Как вернуть нужную тему, если сломался Вордпресс
Как вернуть нужную тему, если сломался Вордпресс

Иногда сайты на Вордпрессе глючат и теряют внешний вид. Это можно исправить, но нужно кое-что знать

hard
Задача с собеседования: как найти палиндром
Задача с собеседования: как найти палиндром

Элитная задача с сайта Leetcode

easy
easy