ООП - Объектно Ориентированное Программирование.

То есть, Класс является описанием сущности (типом данных), а создаваемый на основе класса объект является предметом описанной сущности (объектом данных).

Как это работает: представь например что int (целочисленный тип данных) является классом, и ты создаёшь int a переменную a (объект а), которая будет являться этой сущностью (целым числом).

Сами по себе классы являются развитой идеей структур. Поэтому в классы внедрили трёх слонов (Инкапсуляция, Наследование, Полиморфизм). И так, рассмотрим.

 

Инкапсуляция - уровни доступа ограничивают действия пользователей классов (других кодеров) ограничивая доступы к данным описания сущности.

class A
{
    private:
      int a;
    public:
     int b;
};

 

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

class A
{
    public:
      int b;
};
 
class B : public A
{
    public:
      int c;
};
 
B obj;
obj.c = 5; // свой
obj.b = 3; // из родителя

 

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

class A // Можно использовать только как базовый в связи с применением чисто виртуальной функции
{
    public:
      virtual void move() = 0; // чисто виртуальная функция
    virtual ~A() =0;
};
 
class B : public A
{
    public:
      
   int x,y;
   void move()
   {
       x += 3;
       y += 5;
   }
};
 
 
A* obj = new B;
obj.move(); // отправляем из родителя указания потомку
 
// или так
 
A* objects[100];
objects[0] = new B;
objects[1] = new B;
//....
objects[100] = new B;
 
for (int a=0; a<100; a++)
   objects[a].move(); // Вперёд войска ))

 

Подготовил: Олег Лунегов

06:11:34 09.07.2013

 

 

комментарии