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

Давайте сначала определим, что такое ООП?

Объектно-ориентированное программирование - это парадигма программирования, основанная на концепции объектов, которые содержат данные и код.

Новый вопрос, который, очевидно, поразит наш ум: что такое объекты.

Объект - это сущность, с которой связаны состояние и поведение.

Объект может быть реальной сущностью, целым числом, массивом, строкой и т. Д.

Важное понятие в oops - это класс, поэтому давайте разберемся, что такое класс.

Класс - это план, содержащий методы и переменные, общие для всех типов.

Пример, чтобы лучше понять это,

Пусть Car будет классом, тогда Audi и Maruti будут объектами класса Car. У всех автомобилей есть общие черты, такие как рулевое колесо, четыре колеса и т. Д.

Простой код класса:

# A simple example of class
class Test:
    # A sample method
    def func(self):
        print('Hello world')

obj = Test()
obj.func()

Пара ключевых вопросов,

В чем разница между методами и функциями?

Метод аналогичен функции, которая выполняет данные инструкции для выполнения конкретной задачи. Единственная разница между методом и объектом состоит в том, что метод связан с объектами, а функции - нет.

Что такое я?

Параметр self - это ссылка на текущий экземпляр класса. Это похоже на указатели и это в C ++ и Java соответственно. Должен быть параметр self, связанный с методом класса, для которого мы не указываем значение, его предоставляет python.

Обычно мы используем три типа модификаторов доступа:

  1. Общедоступный: доступ к нему можно получить из любой точки программы.
  2. Защищено (‘_var-name): к нему можно получить доступ в классе и его подклассах.
  3. Частный (‘__var-name): доступ к нему возможен только внутри класса.

Кроме того, в классе можно определить три типа методов:

  1. Метод экземпляра: по имени он может получить доступ к уникальным данным из своего экземпляра. У этого метода должен быть дополнительный параметр self.
  2. Метод класса: мы часто создаем этот метод, когда нужно изменить только переменные класса. У них нет доступа к данным конкретного экземпляра, но они могут вызывать другие статические методы.
  3. Статический метод: мы можем просто назвать этот метод функцией. Это нельзя использовать для доступа к каким-либо данным, зависящим от класса, мы не должны использовать параметр self или создавать экземпляр для этого метода.

Ниже приведены важные концепции ООП.

  1. Наследование: Основным преимуществом oop является повторное использование, и наследование является одним из механизмов его достижения. Наследование определяется как способность одного класса наследовать свойства от другого класса и повторно использовать его при необходимости. В python есть разные типы наследования: одиночное наследование, множественное наследование, многоуровневое наследование и иерархическое наследование.
  2. Инкапсуляция: это относится к объединению данных в единый блок.
  3. Абстракция: это процесс сокрытия реальной реализации приложения от пользователя и акцентирования внимания только на его использовании.
  4. Полиморфизм: слово полиморфизм означает наличие множества форм. В программировании полиморфизм означает, что одно и то же имя функции (но разные сигнатуры) используется для разных типов.

Пример,

class Employee:

    increment = 1.5
    # Constructor
    def __init__(self, name, salary):
        self.name = name
        self.salary = int(salary)

    # instance method
    def increase(self):
        self.salary = self.salary * Employee.increment

    # Alternate class method
    @classmethod
    def details(cls, emp_string):
        name, salary = emp_string.split('-')
        return cls(name, salary)

    @staticmethod
    def is_open(day):
        if day == 'Sunday':
            return True
        return False

class Programmer(Employee):
    def __init__(self, name, salary, langname, exp):
        super().__init__(name, salary)
        self.langname = langname
        self.exp = exp

    def increase(self):
        self.salary = self.salary * (Employee.increment + 0.5)

harry = Employee('Rohan', 5000)
sohan = Employee.details('sohan-4000')
print(harry.__dict__)
print(sohan.__dict__)

harry.increase()
print(harry.__dict__)

print(Employee.is_open('Sunday'))


AJ = Programmer('AJ', 8000, 'Python', 2)
print(AJ.__dict__)

AJ.increase()
print(AJ.__dict__)

sohan.increase()
print(sohan.__dict__)

Ссылка на мои предыдущие статьи: