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

Содержание

Слайд 2

Технологія об'єктно-орієнтовного програмування Об’єктно-орієнтовне програмування (ООП) – методика розробки програм, у

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

Об’єктно-орієнтовне програмування (ООП) – методика розробки програм, у основі

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

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

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

Інкапсуляція
Наслідування
Поліморфізм

Слайд 4

Тип даних struct struct { ; … ; };

Тип даних struct

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

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

Слайд 5

Приклад змінної типу struct struct { UnicodeString name; int old; UnicodeString

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

struct {
UnicodeString name;
int old;
UnicodeString note;
} man;

Звернення

до полів запису (приклад)

man.name = “Петренко“;
man.old = 23;

Слайд 6

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

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

struct TPoint {
int X;     int Y; } Point;

Слайд 7

Шаблон опису класу class {список_компонентів};

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

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

Слайд 8

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

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

Слайд 9

Приклад опису класу (код) class TForm1 : public TForm { __published:

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

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

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

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

class TPerson
{
private:
UnicodeString fname;
UnicodeString faddress;
public:
void Show();
};

Слайд 11

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

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

{
TPerson student;
TPerson professor;
}

Слайд 12

Конструктор class TPerson { private: UnicodeString fname; UnicodeString faddress; public: TPerson();

Конструктор

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

TPerson::TPerson()
{
fname = "";
faddress

= "";
}
Слайд 13

Метод void TPerson::Show() { ShowMessage("Ім’я: " + fname + "\n" +

Метод

void TPerson::Show()
{
ShowMessage("Ім’я: " + fname + "\n" + "Адреса: " +

faddress);
}

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

Слайд 14

Інкапсуляція і властивості (I) class TPerson { private: UnicodeString fname; UnicodeString

Інкапсуляція і властивості (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) TPerson::TPerson(UnicodeString Name) {fname = Name;} UnicodeString TPerson::GetName()

Інкапсуляція і властивості (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) { TPerson student(L"Гриценко"); student.Address = L"м.Суми, вул.Миру, б.25, к.409"; student.Show(); }

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

{
TPerson student(L"Гриценко");
student.Address =
L"м.Суми, вул.Миру, б.25, к.409";
student.Show();
}

Слайд 17

Наслідування class TEmployee : public TPerson { int FDepartment; // номер

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

class TEmployee : public TPerson
{
int FDepartment; // номер відділу
public:
TEmployee(UnicodeString , int);
};

TEmployee::TEmployee(UnicodeString

Name, int dep) : TPerson(Name)
{
FDepartment = dep;
}
Слайд 18

Поліморфізм (I) class TPerson{ public: UnicodeString fname; TPerson(UnicodeString); virtual UnicodeString info();};

Поліморфізм (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) TPerson::TPerson(UnicodeString Name) {fname = Name;} UnicodeString TPerson::info() {return fname;}

Поліморфізм (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) TPerson *p; // вказівник на класс предка TPerson pers("Bush");

Поліморфізм (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());