- •2.Парадигми імперативного стилю.Парадигми процедур-ності.
- •3.Парадигма модульності.
- •4.Парадигма атд
- •5.Парадигма ооп.
- •7.Констуктори та деструктори.
- •8.Наслідування класів.
- •9.Обмеження доступу до базового кл.
- •10. Конструктор базового класу. Ініціалізація полів кл
- •11.”Покажчик на себе”. Статичні поля класу.
- •12.Конкретні і абстрактні типи. Віртуальні ф-ії.
- •13.Віртуальні конструктори та диструктори.Клонування.
- •14. Ефективний доступ до членів класу .Дружні ф-ії та дружні класи .
- •15.Множинне наслідування.
- •16.Віртуальні базові класи.
- •17.Перевантаження функцій.
- •18.Перевантаження унарних операцій.
- •22.Перетворення за допомогою конструкторів.
- •28.Елементи узагальненого програмування. Протеріччя з ооп. Поняття про ітератори та узагальнені алгоритми. Побудова узагальненої функції.
- •П алгоритми
- •30.Елементи узагальненого програмування. Контейнерно-ітераторна модель на основі шаблонних класів та шаблонних функцій.
- •Типи знань та методи їх представлення.
- •Парадигми імперативного стилю.Парадигми процедур-ності.
7.Констуктори та деструктори.
Способи виклику конструкто-ра.
Конструктор-ф.-член кл. яка не повертає ніякого значення ,ім’я конструктора співпадає з іменем класу,при чому пам’ять не виділяє,а записує значення в виділену пам'ять.Він відповідає за створення екземпляру.Якщо в кл. Не має жодного конструкто-ра, то використовується неявний стандартний конструктор, який має прототип С().
Способи виклика конструктора
1.Автоматичний виклик
class C
{}
…
C c;//виклик конструктора
2.Ініціалізація
MyType x=value;
Викликається конструктор з параметром, який стоїть в правій частині
Class Complex{…};
Complex a;
Complex b=1;
Complex c=Complex(1,2);
3.Конструктор для динамічних об’єктів:
Class Vector
{ int *V;int size;
public:
Vector( )
{size =DEFAULTSIZE;
V=new int [size];}
Vector( int sz )
{size = sz;
V=new int [size];}
Vector (Vector Vect)
{size = Vect.size;
V=new intr[size];
for(int i=0;i<size;i++)
V[i]=Vect.V[i];
Конструювання масивів.
Class C
{…};
void f( )
{ C Carr[10];//10 разів виклика-ти конструктор
C*Carr ;
Vector M[10];}
Деструктор це ф. член кл. яка не має параметрів ,не повертає нія-кого значення ,її ім'я –ім-я кл. з символом "~"
class C
{ public:
~C( );}
Деструктор викається для виrонання певних операцій при знищенні екземпляра.П-д:
Void f( )
{c C;
…..
//~C }
class Vector
{ int *V ;int size;
~Vector( )
{ delete V[size];}};
8.Наслідування класів.
А - базовий клас
С-похідний клас
Д
class A
{ int i;
public:
void Af( ) ;};
class B :public A
{ int j;
public:
void Bf ( ); };
Опишемо
Void f( )
{ B b1;
b1.j=0;
b1.i=0;// змінна і через наслідування доступна
b1.Af( );}
при наслідуванні до екземпляру пам"яті В додається підекземрляр пам"яті А.При конструюванні В спочатку відбувається виділення пам"яті для базового класу А ,а потім довиділення В. Спочатку викликається конструктор базового класу ,а потім конструктор даного типу.Причому у тій послідовності в якій ієрархії ці класи знаходяться
П-д:нехай об"єкти двох типів: службовці і менеджери
class employee //базовий клас
{ char*name;
public:
……};
class manager:public
employer //похідний клас
{ int level;
public:
…..};
void f( )
{ employer *x;
manager *y;
employer E;
x=&E;
x name;
//другий варіант
x=new employee;
x = y ; //ok!
y = x ; //err!
ylevel=0;//ok!
xlevel=0//err!
Кожний manager є
employer ,але не кожен employer є manager .
Наслідування-принцип при якому знання про більш загальну категорію можна використати в знаннях про більш вузьку категорію.Базовий клас-клас який розпространяє свої властивості(родитель);
похідний клас -подклас(ребенок);
абстрактний клас-клас який не має
екземпляра.
9.Обмеження доступу до базового кл.
class B: privat A{…};
protected A{…};
public A{…};
Приватний доступ до базового кл. -тільки члени класа А та його друзі можуть отримати доступ до полів базового кл.
Захищений доступ до базового кл.-тільки члени похідного кл. його друзі та потомки можуть отримати доступ до полів базового кл.
Публічний доступ до базового кл.-будь хто може отримати доступ до полів базового кл.
class X{public:int a};
class A public X{…};
class B protected X{..};
class C privat X{…};
class D public B {…};
void f(X*px,A*pa,B*pb,
C*pc)
{px = pa ; // ok!
pa a=10; //ok!
px = pb ; //err! так як ф-ія f не є члуном похідного класу
pb a =10 ;//err!
px = pc ; //err! так як ф-ія f повинна бути строго членом класа С
pca = 10 ;//err!}
Інший варіант:
void C::f(X*px,A*pa, B*pb,C*pc)
{ px = pa ; // ok!
pa a=10 ; //ok!
px =pb ; //err!
pba=10 ; //err!
px=pc ; // ok!
pca=10; //ok1