- •2.Парадигми імперативного стилю.Парадигми процедур-ності.
- •3.Парадигма модульності.
- •4.Парадигма атд
- •5.Парадигма ооп.
- •7.Констуктори та деструктори.
- •8.Наслідування класів.
- •9.Обмеження доступу до базового кл.
- •10. Конструктор базового класу. Ініціалізація полів кл
- •11.”Покажчик на себе”. Статичні поля класу.
- •12.Конкретні і абстрактні типи. Віртуальні ф-ії.
- •13.Віртуальні конструктори та диструктори.Клонування.
- •14. Ефективний доступ до членів класу .Дружні ф-ії та дружні класи .
- •15.Множинне наслідування.
- •16.Віртуальні базові класи.
- •17.Перевантаження функцій.
- •18.Перевантаження унарних операцій.
- •22.Перетворення за допомогою конструкторів.
- •28.Елементи узагальненого програмування. Протеріччя з ооп. Поняття про ітератори та узагальнені алгоритми. Побудова узагальненої функції.
- •П алгоритми
- •30.Елементи узагальненого програмування. Контейнерно-ітераторна модель на основі шаблонних класів та шаблонних функцій.
- •Типи знань та методи їх представлення.
- •Парадигми імперативного стилю.Парадигми процедур-ності.
4.Парадигма атд
У модульності не можливе тира-жування екземплярів , досягти цієї можливості дозволяє пара-дигма АТД .П-д в С++ :Typedef ; на ПаскалІ :Type MyType=…; на Фортрані: встроєний тип Complex ;
Тип даних : 1)область допусти-мих значень
2)множина допустимих опера-цій .
П-д :
class Comple //ім’я типу;
{ float Re,Im ;
public
friend
Cmplex operator+ (Complex a, Copmlex b);
Cmplex operator*(Complex a, Copmlex b);
Cmplex operator-(Complex a, Copmlex b);
Complex( );{RE=0 ; Im=0 ;}
//конструктор
Complex(float r){Re = r ; Im=0;}
Complex (float r,float i){Re = r ; Im = i;}
~Complex( ){ };//деструктор
ostream& operator <<(operator& 0 ,Complex c );
конструктор це член кл. за допо-могою якого створюється ек-земпляр зміних даного типу.
П-д:
void f()
{complex a;
complex b=1;
complex c=complex (2,3);//c-const
complex d=a+b;
…
cout<<d;
}
мотив:винекненя випливає з фреймів т.т. об'еднання в одній рамці данних та операцій над ними.
Мовні засоби:оператор class. Описувачі обмежування доступу до кл., можливість переван-таження імен ф. та символів операцій. Мови :С++,Object Pascal , парадигми підтримують стиль:Turbo Pascal,C.
П-д:
complex complex::operator+( complex a, complex b);
{return complex(a.Re+b.Re,a.Im+b.Im);
}
П-д :(бібліотека гафічних примітивів:точка,відрізок,коло…)
Class shape
{ int x,y ;int color ;
int hidden ;int kind;
….
Public :
Shape ( ) {…};
Shape (…) {…};
Void show( );
Void hide ( );
Void drow( );//нарисо-
вать
Void move (int x,int y); };
Void shape::draw()
{if (kind==1)
{//draw circle};
else if (kind==2)
{//draw dot}
else {//draw square}
}
void main()
{
shape circle;
shape dot;
circle.show();
dot.hide();
circle.drow();
dot.drow();
}
Проблема застосування АТД полягає в тому, що при необ-хідності розширити функціона-льність розробленої системи ми змушенні редагувати її на рівні вихідного текста. Це в свою чер-гу має два недоліки:
1.ускладнює розробку і підви-щує ймовірність помилок
2. таке не можливо взагалі, якщо вихідний текст відсутній.
5.Парадигма ооп.
Мови які підтримують цю парадигму:C++,Object Pascal, Small Talk…
Предметна галузь, що моделю-ється складається з сукупності об’єктів які діють один на одно-го.Кожен об’єкт має власні влас-тивості та поведінку.Взаємодія між об’єктами здійснюється шляхом так званих повідомлень. Повідлмлення-виклик метода.
Підтримуються такі об’єктно орієнтовані можливості:
1.Інкапсуляція(АТД)
2.Поліморфізм(можливість виз-начити до чого належить об’єкт)
3.Наслідування(властивості од-ного об’єкта переносять на ін-ший)
Базовий типпохідний тип
П-д:
Class shape
{int x,y;int color;int hidden;
public:
virtual void draw();
…
};
наслідування дає таку можли-вість
#include "shape.h"
class circle:public shape
{int radius;
public:
virtual void draw();
};
//головна програма
void main()
{circle c1,c2;
star s1,s2,s3;
c1.draw();
s1.move();
s1.draw();
}
void shape::move(int x1,int y1)
{hide();//погасити об"єкт
x=x1;//змінити координати
y=y1;
draw();//показати
}
описувач virtual дає можливість з’ясувати власника методу (ф.) навіть тоді коли неможна визначити з синтаксичних мір-кувань у даному місці програми.
Узагальнене програмування це стиль в якому алгоритми не за-лежать від типу даних.
6.Поняття про кл. в С++.Кл. та принципи ООП.Обмеження доступу до членів кл.
Кл. в С++ це тип сконструйо-ваний користувачем.
Принципи ООП:
1.Все що у предметній області це деякі об’єкти
2.Об'єкти виконують якісь взає-модії один з одним за допомо-гою повідомлень.
3.Кожен об’єкт має власну пам'ять (незалежну), яка скла-дається з інших об'єктів.
4.Кожен клас задає поведінку об'єктів свого типу за допо-могою методів чи ф.-членів кл.
5.Кожен об'єкт є представником або екземпляром певного кл.Кл. відображує загальні властивості своїх представників.
6.Кл. можуть об'єднуватись в ієрархію т.т. в таку деревовидну структкру, яка називається ієра-рхією наслідування.
Основний зміст наслідування полягає в тому що вл. і пове-дінка кл. що належать до ієра-рхій наслідувань є доступними для кл. що розташовані нижче.
Class C
{private://забороняє доступ зовні для ф.не членів кл.,крім friend
protected://дозволяє доступ нащадкам і членам кл.
public://дозволяє доступ будь-кому
}
class C
{private:
int i;
friend void f_f(C);
protected:
int j;
public:
int k;
};
class D:public C
{
void g(C);
};
void f(C c)
{ c.k=0;//ok
c.j=0;//err
c.i=0;//err
}
friend void f_f(C c)
{c.k=0;//ok
c.j=0;//ok
c.i=0;//ok
}
void D::g(C c)
{c.k=0;//ok
c.j=0;//err
c.i=0;//ok
k=0;//ok
j=0;//ok
i=0;//ok
}
void C::h(C c)
{c.k=0;//ok
c.j=0;//ok
c.i=0;//ok
k=0;//ok
j=0;//ok
i=0;//ok
}
