Понимание объектно-ориентированного программирования на Python и C ++ с пиццей!

OOPS расшифровывается как Системы объектно-ориентированного программирования. Он представляет собой стиль программирования, в котором основное внимание уделяется реальным вещам, называемым объектами, например ручкой или столом. В OOPS данные и функции объединены в один и связаны с каждым объектом.

Другой стиль программирования называется процедурным программированием. В этом стиле упор делается на процедуры в программе. Данные всегда вторичны. Данные и функции, работающие с данными, разделены. Чтобы лучше понять это, возьмем пример с пиццей.

Я уверен, вам интересно, какое отношение OOPS имеет к пицце. Если бы вам пришлось написать программу, которая создает пиццу, в традиционном или процедурном программировании, вам пришлось бы писать программу для каждой новой пиццы, которую вы хотите приготовить. В OOPS вам нужно будет написать всего одну программу и создать столько пицц, сколько захотите! Только представьте, сколько времени и денег вы бы сэкономили.

Допустим, вы хотите попробовать несколько разных рецептов. Вы можете поместить все свои рецепты в одну программу, в отличие от процедурного программирования, когда вам придется писать новую программу для каждого рецепта. Следовательно, OOPS приводит к снижению затрат, экономит время и усилия, а также позволяет легко вносить изменения в конструкцию.

В каждой пицце есть следующие элементы: основа, соус для пиццы, начинки и, конечно же, сыр! Разновидности пиццы различаются одним - выбором начинки. Теперь, когда мы знаем состав каждой пиццы, мы можем написать рецепт пиццы.

Этот рецепт, созданный в OOPS, представляет собой план и называется классом. Класс сам по себе не является настоящей пиццей, он только представляет, какие элементы и процессы составляют основу приготовления пиццы. Вот почему, когда вы объявляете класс, ему не выделяется память. Это похоже на строительство дома, где вам сначала нужно создать план или схематический рисунок того, как будет выглядеть ваш дом.

На основе класса мы создаем объекты. Это реальные сущности с некоторыми характеристиками и поведением. В нашем примере объектами будут пиццы, созданные по рецепту, который присутствует в классе.

Объекты класса также называются экземплярами этого класса, а создание объектов называется созданием экземпляров. Код C ++ определения класса будет следующим:

class Pizza{
        int base;
        int sauce;
        int toppings;
        int cheese;
};

В Python:

class Pizza{
    base = 0
    sauce = 0
    toppings = 0
    cheese = 0
}

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

В нашем примере переменные были объявлены как целые числа, потому что значение 1 будет означать, что они были добавлены, а 0 - нет. Теперь мы можем приступить к созданию объектов пиццы:

In C++:

int main(){
    
    Pizza p1;
    return 0;
}

В Python:

p1 = Pizza()

Наши пиццы на этом этапе выглядят так:

Эти пиццы простые, потому что, хотя ингредиенты пиццы присутствуют в рецепте, мы еще не начали готовить. Элементы каждой пиццы необходимо собрать, а затем испечь ее, прежде чем ее можно будет съесть.

Эти функции сборки и выпечки аналогичны пицце и определяются функциями-членами. Они называются так, потому что они являются членами класса и работают только с объектами этого класса. Функции-члены обычно называются методами.

Функции-члены одинаковы для всех объектов класса и, следовательно, им выделяется память только один раз. Они получают память во время объявления класса и используются всеми объектами класса. Когда объект будет создан, он будет выглядеть так:

Мы используем ключевое слово public при определении функций-членов в C ++. Это спецификатор доступа, который используется, чтобы указать, что мы хотим, чтобы методы были доступны за пределами класса Pizza. По умолчанию члены класса являются закрытыми. Следовательно, наши элементы pizza являются частными и могут быть доступны только этим функциям-членам.

In C++ :

class Pizza{
        int base;
        int sauce;
        int toppings;
        int cheese;
        public:
            void assemble(){
                base = 1;
                sauce = 1;
                toppings = 1;
                cheese = 1;
                cout<<"Pizza Assembled"<<endl; 
            }
            void bake(){
                cout<<"Pizza Baked"<<endl;
           }
};
int main()
{
    Pizza p1;
    p1.assemble();
    p1.bake();
    return 0;
}

В Python:

Все члены класса в python по умолчанию являются общедоступными, и, следовательно, нам не нужно указывать, чтобы члены были общедоступными.

class Pizza:
    base = 0
    sauce = 0
    toppings = 0
    cheese = 0
    def assemble(self):
        self.base =1 
        self.sauce = 1
        self.cheese = 1
        self.toppings = 1
        print("Pizza Assembled!")
        return
    def bake(self):
        print("Pizza Baked!")
        return
p1 = Pizza()
p1.assemble()
p1.bake()

Теперь наши пиццы выглядят так - готовые к употреблению и очень вкусные!