Объяснение терминов объектно-ориентированного программирования

Может кто-нибудь объяснить, что такое класс, экземпляр класса, объект, метод, функция, процедура?

Очень часто я путаюсь, когда использовать, например, метод, когда процедура и когда функция, какая разница, какова связь между этими тремя? Является ли экземпляр класса таким же, как объект? Также для чего используются конструкторы и деструкторы?

Я знаю, что в Google так много литературы, но я хочу, чтобы все было ясно в одном месте, и я думаю, что это поможет многим новичкам в ООП, как и я.

6 ответов

Решение

Друг мой, о чем ты спрашиваешь нельзя ответить ни на одной странице, ни на одной главе!

но для начала: объект является синонимом "экземпляра" класса. класс - это план, описывающий объекты, которые могут быть "созданы" из этого класса.

например, у вас может быть класс Human, который выглядит примерно так:

class Human{
public:
    int age;
    int height; 
    int weight;
    string name;

    ...
    public void speak()
    {
    std::cout<<"my name is "<< this->name;
    }

}

это класс, который описывает: "Эй, Человек - это тип. Теперь программист может создавать объекты-люди. Каждый объект-человек должен иметь целое число для возраста, роста и т. д. Это называется членскими" полями " (переменными, которые принадлежат к объекту)

Кроме того, у каждого человека будет свой собственный способ говорить. как описано в функции разговора.

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

как вы заметили, это всего лишь план (класс), мы еще не сделали ни одного человека! для того, чтобы создать людей, вам нужно выделить память для отдельных людей (у каждого человека есть возраст, рост и т. д.)

Вы делаете это в своей основной функции следующим образом:

Human dan;
Human mary;

dan.age=44;
dan.weight=80;
dan.height=178;
dan.name="Daniel"

mary.age=33;
mary.weight=60;
mary.height=165;
mary.name="Mary";

Теперь, как вы можете видеть, у нас есть 2 разных человека, которым мы можем получить доступ к различным полям из них. мы также можем создать столько людей, сколько захотим. (имейте в виду, что публичные поля обычно не являются хорошей практикой ООП.

но, к сожалению, вы можете видеть, что на самом деле создавать людей, таких как это, громоздко. какой подход лучше? использовать конструктор!!

давайте вернемся к определению класса Human и добавим публичную функцию без возвращаемого типа и с тем же именем, что и у класса.

class Human{
...
public Human(int age, int height, int weight, string name):
age(age),height(height),weight(weight),name(name)
{
}

то, что вы только что видели, это конструктор с "списком инициализации"

Теперь в вашей основной функции вам не нужно (и не должно быть, так как большинство полей в любом случае должны быть закрытыми) пройти через испытание каждого поля.

вместо этого вы "вызываете конструктор", когда "создаете экземпляр" объекта из класса Human.

как это:

Human dan(44,80,178,"Daniel");

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

это было предназначено для начинающих тизеров для ООП, я рекомендую вам прочитать и попрактиковаться более глубоко для хорошего понимания.

ура

Класс: Разработка абстракции сущности. Он представляет любую реальную сущность, такую ​​как Person, Dog, Tree, BlogPost или User. Он содержит атрибуты для хранения свойств объекта, такие как имя для Персона или электронное письмо для Пользователя; и методы для осуществления операций над атрибутами, такие как изменение имени человека или вычисление баланса банка пользователя.

Объект: конкретный экземпляр класса. При обращении к классу Person объект может быть фактическим Person с заполненными атрибутами.

Метод: определение операции над некоторым классом, который может изменить свое внутреннее представление (атрибуты) или просто запросить что-то.

Функция: точно так же, как метод, но часто используется для не-ООП языков программирования

Процедуры: Точно так же, как функции, но часто используются, когда функция не возвращает значение.

Классы печенья; экземпляры классов (или объектов) являются куки. Вы генерируете экземпляр / объект в памяти из класса.

Экземпляр и объект являются синонимами для представления в классе определенного класса.

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

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

Метод, функция, процедура: я бы сказал, что это синонимы. Я часто использую эти слова для ссылки на методы, которые могут вызывать экземпляр / объект.

Класс - это что-то вроде шаблона, например, класс Person, класс Student

Экземпляр класса является объектом этого класса

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

Конструктор - это то, что вызывает себя при создании объекта, аналогично деструктор - это то, что вызывает себя при удалении объекта

С ++ не имеет процедур. Это понятие не определено в C++.

Обычно, когда упоминается процедура, это означает, что функция не возвращает какое-либо значение вызывающей стороне. Относительно C++ это означает, что функция имеет тип возврата void,

Методы - это просто функции-члены класса, то есть функции, объявленные в классе.

Экземпляр класса - это созданный объект типа класса.

Конструкторы используются для создания объекта класса. Деструкторы вызываются, когда объект уничтожается.

Учебный класс:

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

Объект:

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

Метод:

Метод - это блок текста, который на самом деле что-то делает, когда он вызывается.

И функции и процедуры работают практически одинаково.

Для получения дополнительной информации по темам, вы можете посетить следующие ссылки:

http://www.cprogramming.com/tutorial/lesson12.html

http://www.cprogramming.com/tutorial/lesson4.html

Другие вопросы по тегам