Тема 8
Технологія об'єктно-орієнтовного програмування
Парадигма ООП об'єктно-орієнтовного програмування
Тип даних struct
Приклад змінної типу struct
Приклад типу struct
Шаблон опису класу
Приклад опису класу (форма)
Приклад опису класу (код)
Об'ява об'єкту
Створення/знищення екземпляру
Конструктор
Метод
Інкапсуляція і властивості (I)
Інкапсуляція і властивості (II)
Інкапсуляція і властивості (III)
Наслідування
Поліморфізм (I)
Поліморфізм (II)
Поліморфізм (III)
Результат виконання програми
135.24K
Category: programmingprogramming

Об'єктно-орієнтоване програмування

1. Тема 8

1
Тема 8
Об'єктно-орієнтоване програмування
Тип даних struct
Поняття об'єкту
Створення нового класу
Об'ява типу
Об'ява змінних і методів класу
Властивості, методи і обробка подій

2. Технологія об'єктно-орієнтовного програмування

2
Технологія об'єктноорієнтовного програмування
Об’єктно-орієнтовне програмування (ООП) –
методика розробки програм, у основі якої лежить
поняття об’єкту, як деякої структури, яка описує
об’єкт реального миру, його поведінку. Задача, яка
вирішується з використанням методики ООП,
описується в термінах об’єктів та операцій над ними,
а програма при такому підході являє собою набір
об’єктів і зав’язків між ними.

3. Парадигма ООП об'єктно-орієнтовного програмування

3
Парадигма ООП об'єктноорієнтовного програмування
• Інкапсуляція
• Наслідування
• Поліморфізм

4. Тип даних struct

4
Тип даних struct
struct <Ім'я_змінної>{
<тип поля> <Ім'я_поля1> ;

<тип поля> <Ім'я_поля2> ;
};

5. Приклад змінної типу struct

5
Приклад змінної типу struct
struct {
UnicodeString name;
int old;
UnicodeString note;
} man;
Звернення до полів запису (приклад)
man.name = “Петренко“;
man.old = 23;

6. Приклад типу struct

6
Приклад типу struct
struct TPoint {
int X;
int Y;
} Point;

7. Шаблон опису класу

7
Шаблон опису класу
class <Ім’я_класу> {список_компонентів};

8. Приклад опису класу (форма)

8
Приклад опису класу (форма)

9. Приклад опису класу (код)

9
Приклад опису класу (код)
class TForm1 : public TForm
{
__published: // IDE-managed Components
TButton *Button1;
TEdit *Edit1;
TLabel *Label1;
void __fastcall Button1Click(TObject *Sender);
private:
// User declarations
public:
// User declarations
__fastcall TForm3(TComponent* Owner);
};
TForm1 *Form1;
__fastcall TForm1::TForm3(TComponent* Owner) :
TForm(Owner)
{ }
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Close(); }

10. Об'ява об'єкту

10
Об'ява об'єкту
class TPerson
{
private:
UnicodeString fname;
UnicodeString faddress;
public:
void Show();
};

11. Створення/знищення екземпляру

11
Створення/знищення
екземпляру
{
TPerson student;
TPerson professor;
}

12. Конструктор

12
Конструктор
class TPerson
{
private:
UnicodeString fname;
UnicodeString faddress;
public:
TPerson(); // конструктор
void Show(); // метод
};
TPerson::TPerson()
{
fname = "";
faddress = "";
}

13. Метод

13
Метод
class TPerson
{
private:
UnicodeString fname;
UnicodeString faddress;
public:
TPerson(); // конструктор
void Show(); // метод
};
void TPerson::Show()
{
ShowMessage("Ім’я: " + fname + "\n" +
"Адреса: " + faddress);
}

14. Інкапсуляція і властивості (I)

14
Інкапсуляція і властивості (I)
class TPerson
{
private:
UnicodeString fname;
UnicodeString faddress;
UnicodeString GetName();
UnicodeString GetAddress();
void SetAddress(UnicodeString NewAddress);
public:
TPerson(UnicodeString Name);
void Show();
__property UnicodeString Name =
{read = GetName};
__property UnicodeString Address =
{read = GetAddress, write = SetAddress};
};

15. Інкапсуляція і властивості (II)

15
Інкапсуляція і властивості (II)
TPerson::TPerson(UnicodeString Name)
{fname = Name;}
UnicodeString TPerson::GetName()
{return fname;}
UnicodeString TPerson::GetAddress()
{return faddress;}
void TPerson::SetAddress(UnicodeString NewAddress)
{
if (faddress == "")
{faddress = NewAddress;}
}
void TPerson::Show()
{ShowMessage("Ім’я: " + fname + "\\n" + "Адреса: "
+ faddress);}

16. Інкапсуляція і властивості (III)

16
Інкапсуляція і властивості (III)
{
TPerson student(L"Гриценко");
student.Address =
L"м.Суми, вул.Миру, б.25, к.409";
student.Show();
}

17. Наслідування

17
Наслідування
class TEmployee : public TPerson
{
int FDepartment; // номер відділу
public:
TEmployee(UnicodeString , int);
};
TEmployee::TEmployee(UnicodeString Name, int dep) :
TPerson(Name)
{
FDepartment = dep;
}

18. Поліморфізм (I)

18
Поліморфізм (I)
class TPerson{
public:
UnicodeString fname;
TPerson(UnicodeString);
virtual UnicodeString info();};
class TStud : public Tperson {
private:
int fgr;
public:
TStud(UnicodeString, int);
UnicodeString info();};
class TProf : public TPerson{
private:
UnicodeString fdep;
public:
TProf(UnicodeString, UnicodeString);
UnicodeString info();};

19. Поліморфізм (II)

19
Поліморфізм (II)
TPerson::TPerson(UnicodeString Name)
{fname = Name;}
UnicodeString TPerson::info()
{return fname;}
TStud::TStud(UnicodeString Name, int gr) :
TPerson(Name)
{fgr = gr;}
UnicodeString TStud::info()
{return fname + " group " + IntToStr(fgr);}
TProf::TProf(UnicodeString Name, UnicodeString dep)
: TPerson(Name)
{fdep = dep;}
UnicodeString TProf::info()
{return fname + " dep. " + fdep;}

20. Поліморфізм (III)

20
Поліморфізм (III)
TPerson *p; // вказівник на класс предка
TPerson pers("Bush"); // об’ява об’єкту батьківського
класу
TStud st("Jhon", 21); // об’ява об’єкту класу нащадка
TProf prof("Smitj", "MCC"); // об’ява об’єкту класу
нащадка
p = &pers; // Вказівник посилається на об’єкт
батьківського класу
p->info(); // Виклик функції з батьківського класу
m1->Lines->Append(p->info());
p = &st; // Вказівник посилається на об’єкт класу нащадка
p->info(); // Виклик функції з класу нащадка
m1->Lines->Append(p->info());
p = &prof; // Вказівник посилається на об’єкт класу
нащадка
p->info(); // Виклик функції з класу нащадка
m1->Lines->Append(p->info());

21. Результат виконання програми

21
Результат виконання програми
Bush
Jhon group 21
Smitj dep. MCC
English     Русский Rules