Четыре фундаментальных понятия объектно-ориентированного программирования (ООП):
- Инкапсуляция. Инкапсуляция — это процесс сокрытия внутренних деталей и реализации объекта и предоставления общедоступного интерфейса для взаимодействия с ним. Это помогает добиться абстракции данных и гарантирует, что доступ к внутреннему состоянию объекта возможен только через определенные методы.
Пример кода на Python:
class Car:
def __init__(self, make, model):
self.make = make
self.model = model
def start_engine(self):
print("Engine started.")
my_car = Car("Toyota", "Camry")
my_car.start_engine()
- Наследование: Наследование — это механизм, который позволяет классу наследовать свойства и поведение от другого класса. Класс, от которого наследуется, называется базовым классом или суперклассом, а класс, который наследуется, называется производным классом или подклассом. Наследование способствует повторному использованию кода и поддерживает концепцию иерархической классификации.
Пример кода на Python:
class Animal:
def eat(self):
print("Eating...")
class Dog(Animal):
def bark(self):
print("Barking...")
my_dog = Dog()
my_dog.eat()
my_dog.bark()
- Полиморфизм. Полиморфизм означает способность объекта принимать несколько форм. В ООП это позволяет рассматривать объекты разных классов как объекты общего суперкласса. Полиморфизм обычно достигается за счет переопределения и перегрузки методов.
Пример кода на Python:
class Shape:
def area(self):
pass
class Rectangle(Shape):
def __init__(self, length, width):
self.length = length
self.width = width
def area(self):
return self.length * self.width
class Circle(Shape):
def __init__(self, radius):
self.radius = radius
def area(self):
return 3.14 * self.radius * self.radius
shapes = [Rectangle(4, 5), Circle(3)]
for shape in shapes:
print(shape.area())
- Абстракция. Абстракция — это процесс упрощения сложных систем путем разбиения их на более мелкие и более управляемые единицы. Он предполагает сосредоточение внимания на основных особенностях объекта, скрывая при этом ненужные детали. Абстракция достигается за счет абстрактных классов и интерфейсов.
Пример кода на Python:
from abc import ABC, abstractmethod
class Vehicle(ABC):
@abstractmethod
def start_engine(self):
pass
class Car(Vehicle):
def start_engine(self):
print("Car engine started.")
class Motorcycle(Vehicle):
def start_engine(self):
print("Motorcycle engine started.")
my_car = Car()
my_car.start_engine()
my_motorcycle = Motorcycle()
my_motorcycle.start_engine()