Класс и объект
Основа объектно-ориентированного программирования — понятия класса и объекта. Изучим атрибуты, методы, конструктор и принцип инкапсуляции на примерах Python и с помощью практических заданий.
Список тем (1 из 2)
Объектно-ориентированное программирование (ООП) строит программу как набор взаимодействующих объектов. Объект обладает состоянием (данные — атрибуты) и поведением (действия — методы). Например, у объекта «студент» атрибуты — имя и курс, а метод — переход на следующий курс.
Класс — это шаблон, описывающий общее строение однотипных объектов; объект же — конкретный экземпляр класса. Из одного класса можно создать сколько угодно объектов, и у каждого свои значения атрибутов. Отношение класса и объекта похоже на рецепт торта и готовые торты: рецепт один, а тортов много.
В Python класс объявляется строкой class Student:. Конструктор def __init__(self, name, year): вызывается автоматически при создании объекта и устанавливает атрибуты: self.name = name. Здесь self — ссылка на сам текущий объект, для которого работает метод. Объект создаётся так: s = Student("Ali", 2), метод вызывается через точку (s.promote()), и к атрибуту обращаются так же (s.year).
Один из важных принципов ООП — инкапсуляция: внутреннее состояние объекта скрывают и изменяют только через методы. Например, вместо прямой записи значения в баланс банковского счёта вызывают метод deposit(amount), который проверяет, что сумма положительна. В Python имя внутреннего атрибута принято начинать с нижнего подчёркивания (_balance): это договорённость «снаружи не трогать».
Главное
- ООП строит программу как набор взаимодействующих объектов.
- Объект состоит из атрибутов (состояние) и методов (поведение).
- Класс — шаблон, объект — его конкретный экземпляр; из одного класса создают много объектов.
- В Python конструктор — это
__init__, а ссылка на текущий объект —self. - Инкапсуляция защищает внутреннее состояние и контролирует его изменение через методы.
Практические задания
- Напишите класс
Student: атрибутыnameиyear, методыpromote()(увеличивает курс на 1) иinfo()(возвращает строку о студенте). Создайте два объекта и вызовите методы. - Создайте класс
BankAccount: баланс — внутренний атрибут (_balance); методыdeposit(amount)иwithdraw(amount)должны проверять сумму (не допускать отрицательную сумму и сумму больше баланса). - Спроектируйте два класса в выбранной вами области (библиотека, магазин или игра): запишите в виде схемы не менее трёх атрибутов и двух методов каждого, затем реализуйте один из них в коде.
Вопросы для закрепления
Проверьте себя: сначала подумайте, потом откройте ответ.
1Чем отличаются класс и объект?Показать ответСкрыть ответ
Класс — шаблон, описывающий строение, а объект — конкретный экземпляр, созданный по этому шаблону.2Что обозначает параметр `self`?Показать ответСкрыть ответ
Ссылку на текущий объект, для которого вызван метод.3Для чего нужна инкапсуляция?Показать ответСкрыть ответ
Чтобы защитить внутренние данные от неверных изменений и управлять ими только через контролируемые методы.
Войдите на сайт
Слайды и PDF доступны только зарегистрированным пользователям: и просмотр, и скачивание. Вход бесплатный.
Войдите на сайт
Слайды и PDF доступны только зарегистрированным пользователям: и просмотр, и скачивание. Вход бесплатный.
Пройдено тем: 0 из 2
Войти и отметить