МУНИЦИПАЛЬНОЕ АВТОНОМНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ДОПОЛНИТЕЛЬНОГО ОБРАЗОВАНИЯ
«ЦЕНТР ДЕТСКОГО ТЕХНИЧЕСКОГО ТВОРЧЕСТВА»
Методическая разработка
«Введение в ООП на Python. Основные принципы»
к дополнительной общеобразовательной
общеразвивающей программе
технической направленности
«Программирование на Python»
Возраст детей: 10-17 лет
Автор: Костычев Вадим Александрович
г. Заречный Пензенской области
2023 г.
В ходе изучения программирования на основе языка Python изучается концепция объектно-ориентированного программирования. Она позволяет развить навыки построения более сложных алгоритмов при решении определенных узких задач.
Целью данной разработки является повышение интереса учащихся к техническому творчеству посредством работы над проектом на языке Python.
Данная методическая разработка используется как обучающий пример для работы по дополнительной общеобразовательной общеразвивающей программе технической направленности «Программирование на Python». С их помощью учащиеся смогут применить теоретические знания на практике, построив сложные алгоритмы для решения различных задач.
1. Введение в ООП
Что такое ООП?
Объектно-ориентированное программирование (ООП) — это парадигма программирования, в основе которой лежит представление программы в виде набора объектов, взаимодействующих друг с другом. Каждый объект — это самостоятельная единица, которая объединяет данные (атрибуты) и поведение (методы).
Преимущества ООП
Повторное использование кода: классы и наследование позволяют переиспользовать уже написанные части программы.
Модульность: объекты создают структуру программы, делая код более читаемым и поддерживаемым.
Масштабируемость: ООП упрощает добавление новых функций и модулей.
Упрощение отладки: изоляция логики внутри объектов облегчает выявление и исправление ошибок.
Сравнение с процедурным программированием
| Особенность | Процедурное программирование | ООП |
| Структура | Программа делится на функции. | Программа делится на классы и объекты. |
| Подход | Основан на действиях (что сделать). | Основан на сущностях (что это). |
| Повторное использование кода | Могут быть сложности с переиспользованием. | Поддерживается через классы и наследование. |
Примеры использования ООП
Графические интерфейсы: Кнопки, окна и другие элементы — это объекты.
Игры: Персонажи, предметы и игровые механики представлены в виде объектов.
Веб-приложения: Модели данных (например, пользователь, продукт) реализуются с помощью классов.
2. Основные принципы ООП
ООП базируется на четырёх ключевых принципах:
2.1 Инкапсуляция
Инкапсуляция — это механизм, позволяющий скрывать внутренние детали реализации объекта и предоставлять доступ только к необходимым элементам.
Пример инкапсуляции в Python
class BankAccount:
def __init__(self, owner, balance):
self.owner = owner # Публичный атрибут
self.__balance = balance # Приватный атрибут
def deposit(self, amount):
if amount 0:
self.__balance += amount
def withdraw(self, amount):
if 0
self.__balance -= amount
else:
print("Недостаточно средств")
def get_balance(self):
return self.__balance
account = BankAccount("Alice", 1000)
print(account.owner) # Доступно
# print(account.__balance) # Ошибка: доступ запрещён
print(account.get_balance()) # 1000
Основные аспекты инкапсуляции:
Публичные атрибуты: доступны для всех (self.attribute).
Приватные атрибуты: доступны только внутри класса (self.__attribute).
Геттеры и сеттеры: методы для безопасного получения и изменения приватных данных.
2.2 Наследование
Наследование — это механизм, позволяющий одному классу (потомку) использовать и расширять функциональность другого класса (родителя).
Пример наследования
class Animal:
def __init__(self, name):
self.name = name
def speak(self):
pass
class Dog(Animal):
def speak(self):
return f"{self.name} говорит: Гав-гав!"
class Cat(Animal):
def speak(self):
return f"{self.name} говорит: Мяу!"
animals = [Dog("Шарик"), Cat("Мурка")]
for animal in animals:
print(animal.speak())
Основные аспекты наследования:
Подкласс наследует атрибуты и методы родительского класса.
Метод super() позволяет вызывать методы родителя.
Множественное наследование (класс может наследоваться от нескольких классов).
Пример использования super()
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
class Employee(Person):
def __init__(self, name, age, position):
super().__init__(name, age)
self.position = position
employee = Employee("Анна", 30, "Менеджер")
print(employee.name, employee.age, employee.position)
2.3 Полиморфизм
Полиморфизм позволяет объектам с одинаковым интерфейсом использовать разную реализацию методов.
Пример полиморфизма
class Shape:
def area(self):
pass
class Circle(Shape):
def __init__(self, radius):
self.radius = radius
def area(self):
return 3.14 * self.radius ** 2
class Rectangle(Shape):
def __init__(self, width, height):
self.width = width
self.height = height
def area(self):
return self.width * self.height
shapes = [Circle(5), Rectangle(4, 6)]
for shape in shapes:
print(shape.area())
2.4 Композиция и агрегация
Вместо наследования иногда лучше использовать композицию — включение одного объекта в другой.
Пример композиции
class Engine:
def start(self):
print("Двигатель запущен")
class Car:
def __init__(self, model):
self.model = model
self.engine = Engine()
def start(self):
print(f"{self.model} запускается")
self.engine.start()
car = Car("Toyota")
car.start()
Этот материал предоставляет базовые знания об ООП и поможет начать освоение концепций на Python. В дальнейшем можно углубить изучение с помощью практических примеров и более сложных сценариев.