Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ООП у (2).ppt
Скачиваний:
43
Добавлен:
30.05.2020
Размер:
4.73 Mб
Скачать

Объектно-ориентированное программирование, 11 класс

Класи

12

 

програма - безліч тих, що взаємодіють об'єктів

будь-який об'єкт - екземпляр якогось класа

клас – опис групи об'єктів із загальною структурою і поведінкою

Клас

відмінність

 

від структур!

Дані

Методи

стан

поведінка

Поле – це змінна, що належить об'єкту.

К.Ю. Поляков, Е.А. Ерёмин, 2013

http://kpolyakov.spb.ru

Объектно-ориентированное программирование. Языки C++ и C#. 11 класс

Клас «Дорога»

 

13

 

 

 

Оголошення класу :

 

 

 

class TRoad

!

Пам'ять не виділяється!

{

 

float Length;

 

 

 

int Width;

 

 

 

};

 

 

 

Оголошення змінній (створення об'єкту):

TRoad road;

Спроба змінити дані:

= 60;

помилка

 

= 3;

private

 

!За умовчанням всі члени класу закриті!

К.Ю. Поляков, Е.А. Ерёмин, 2014

http://kpolyakov.spb.ru

Объектно-ориентированное программирование. Языки C++ и C#. 11 класс

Клас «Дорога»

14

 

Оголошення класу :

class TRoad

{

public: ! Загальнодоступні дані! float Length;

int Width;

};

Основна програми :

main()

{

TRoad road;

road.Length = 60; // працює! road.Width = 3; // працює!

}

К.Ю. Поляков, Е.А. Ерёмин, 2014

http://kpolyakov.spb.ru

Объектно-ориентированное программирование. Языки C++ и C#. 11 класс

Клас «Дорога»

15

 

TRoad road;

виклик конструктора

Конструктор - це метод класу, який викликається для створення об'єкту цього класу.

!Конструктор за умовчанням будується автоматично!

? Що записане в полях?

road.Length = ???

«сміття»

road.Width = ???

К.Ю. Поляков, Е.А. Ерёмин, 2014

http://kpolyakov.spb.ru

Объектно-ориентированное программирование. Языки C++ и C#. 11 класс

Новий конструктор

16

 

 

Клас:

 

 

 

class TRoad

!

Имя конструктора совпадает

{

 

 

public:

 

с именем класса!

 

 

 

 

float Length;

 

 

 

int Width;

// оголошення конструктора

};

TRoad();

 

 

 

 

 

 

Конструктор:

 

метод aaa класса TRoad

TRoad::TRoad()

TRoad::aaa()

{

 

 

 

 

Length = 0;

{

 

 

Width = 0;

 

...

 

}

 

 

 

}

 

К.Ю. Поляков, Е.А. Ерёмин, 2014

http://kpolyakov.spb.ru

Объектно-ориентированное программирование. Языки C++ и C#. 11 класс

Конструктор з параметрами

17

 

class TRoad

{

public:

...

TRoad ( float length0, int width0 );

};

Конструктор:

TRoad::TRoad ( float length0, int width0 )

{

Length = length0; Width = width0;

}

Виклик: TRoad road ( 60, 3 );

К.Ю. Поляков, Е.А. Ерёмин, 2014

http://kpolyakov.spb.ru

Объектно-ориентированное программирование. Языки C++ и C#. 11 класс

Захист від невірних даних

18

 

TRoad::TRoad ( float length0, int width0 )

{

if ( length0 > 0 ) Length = length0;

else Length = 1; if ( width0 > 0 )

Width = width0; else Width = 1;

}

К.Ю. Поляков, Е.А. Ерёмин, 2014

http://kpolyakov.spb.ru

Объектно-ориентированное программирование. Языки C++ и C#. 11 класс

Значення параметрів за умовчанням

19

 

class TRoad

значення за

 

{

умовчанням

 

public:

 

 

 

 

...

 

 

 

 

TRoad ( float length0, int width0

= 3

);

 

};

 

 

 

 

Виклик:

останні в списку

 

TRoad road ( 60 );

параметрів

 

 

 

 

 

width = 3

К.Ю. Поляков, Е.А. Ерёмин, 2014

http://kpolyakov.spb.ru

Объектно-ориентированное программирование. Языки C++ и C#. 11 класс

Клас «Машина»

20

 

class TCar

координата, швидкість

 

{

 

public:

 

 

float X,

полоса

 

int P;

 

 

 

TRoad *Road;

дорога, по

 

void move();

якій їде

 

TCar (); // конструктор без параметрів

TCar ( TRoad *road0, int p0, float v0 );

};

К.Ю. Поляков, Е.А. Ерёмин, 2014

http://kpolyakov.spb.ru

Объектно-ориентированное программирование. Языки C++ и C#. 11 класс

Конструктори класа «Машина»

21

 

TCar::TCar ()

 

 

{

захист від помилок -

 

Road = NULL;

 

самостійно

 

P = 0; V = 0; X =

 

 

 

}

TCar::TCar ( TRoad *road0, int p0, float v0 )

{

Road = road0;

P = p0; V = v0; X = 0;

}

К.Ю. Поляков, Е.А. Ерёмин, 2014

http://kpolyakov.spb.ru

Объектно-ориентированное программирование. Языки C++ и C#. 11 класс

 

 

22

Клас «Машина»: метод move

Рівномірний рух:

t 1

 

 

X X 0 V t

інтервал

 

дискретизації

переміщення за одну одиницю часу

void TCar::move()

{

X = X + V;

 

if ( X

}

звернення через

 

покажчик

виїжджає з іншого боку

X = 0;

К.Ю. Поляков, Е.А. Ерёмин, 2014

http://kpolyakov.spb.ru

Объектно-ориентированное программирование. Языки C++ и C#. 11 класс

 

Основна програма

 

23

 

 

 

 

 

const int N = 3;

 

 

 

 

TCar cars[N];

 

 

 

 

int i;

 

 

 

 

for ( i = 0; i < N; i++ )

 

 

{

 

 

 

 

cars[i].Road = &road;

 

 

 

cars[i].P = i + 1;

 

 

 

 

cars[i].V = 2.0*(i + 1);

 

 

}

 

 

 

 

do {

 

 

 

 

for ( i = 0; i < N; i++

#include <conio.h>

 

cars[i].move();

 

 

 

 

 

}

поки не

 

 

 

while ( !kbhit() );

 

 

 

натискнута (будь-

 

 

К.Ю. Поляков, Е.А. Ерёмин, 2014

яка) клавішаі

 

http://kpolyakov.spb.ru

Объектно-ориентированное программирование. Языки C++ и C#. 11 класс

Використання покажчиків

24

 

const int N = 3

масив покажчиків

 

TCar *cars[N];

 

 

 

for ( i = 0; i < N; i ++ )

 

cars[i] = new TCar ( &road, i+1,

 

 

2.0*(i+1) );

 

створення об'єктів

for ( i = 0; i < N; i ++ ) cars[i]->move();

К.Ю. Поляков, Е.А. Ерёмин, 2014

http://kpolyakov.spb.ru

Объектно-ориентированное программирование. Языки C++ и C#. 11 класс

Що в цьому хорошого і поганого?

25

 

ООП – це метод розробки великих програм!

 

• основна програма - проста і зрозуміла

класи можуть розробляти різні програмісти незалежно один від одного (+интерфейс!)

повторне використання класів

неефективно для невеликих завдань

К.Ю. Поляков, Е.А. Ерёмин, 2014

http://kpolyakov.spb.ru

Соседние файлы в предмете Объектно ориентированное программирование