Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metodichka_OT-1.doc
Скачиваний:
14
Добавлен:
17.03.2016
Размер:
1.15 Mб
Скачать

New (Person, Init);

Для звільненнядинамічної пам'яті особливо від ієрархічного класу об'єктів зручно застосовувати спеціальний методDestructor (деструктор), який виконує функцію “прибиральника сміття”. За згодою він має ім'яDoneі як будь-які методи може унаслідуватися. НайчастішеDestructorописується як віртуальний метод

Destructor Done; Virtual;

з порожнім тілом

Destructor TPerson.Done;

Begin

End.

Для зручності виклик деструктора та звільнення динамічної пам'яті об'єднується в одну команду

Dispose (Person, Done);

1.4. При вирішенні задач за допомогою ООП спочатку створюється ієрархічний клас об'єктів, причому батьківський об'єкт повинен уміщувати тільки загальні дані та методи, а дочірні об'єкти – дані та методи, які їх розширюють та уточнюють.

1.5. Приклад 1. На основі батьківського динамічного об'єкта “Персона”, віртуальний метод якого обчислює ідеальну вагу W людини за її зростом G по формулі W=G*100-100, створити два дочірні динамічні об’єкти “Жінка” й “Чоловік” та уточнити ідеальну вагу жінки та чоловіка за формулами Ww=W*0,85 та Wm=W*0,9 відповідно.

Program Weight_OOP;

Uses Crt;

{Опис об’єкта “Персона”}

Type TPerson=object

Name :string [15];

Growth :real;

Constructor Init;

Destructor Done; Virtual;

Procedure Read_Date;

Procedure Write_Date;

Function Weight :real; Virtual;

end;

Constructor TPerson.Init;

begin

Name:= ' ';

Growth:= 0.0;

end;

Destructor TPerson.Done;

begin

end;

Procedure TPerson.Read_Date;

begin

Write (' ІМ"Я ? ');

Readln (Name);

Write (' ЗРІСТ, м ? ');

Readln (Growth);

end;

Procedure TPerson.Write_Date;

begin

ClrScr;

Writeln (' ІМ"Я: ',Name);

Writeln (' ІДЕАЛЬНА ВАГА: ',Weight:5:1,' кГ');

end;

Function TPerson.Weight :real;

begin

Weight:=Growth*100-100;

end;

{Опис об’єкта “Жінка”}

Type TWoman= object (TPerson)

Function Weight :real; Virtual;

end;

Function TWoman.Weight :real;

begin

Weight:=TPerson.Weight*0.85;

end;

{Опис об’єкта “Чоловік”}

Type TMan= object (TPerson)

Function Weight :real; Virtual;

end;

Function Tman.Weight :real;

begin

Weight:=TPerson.Weight*0.9;

end;

Var

Woman :^TWoman;

Man :^TMan;

Ch :char;

Begin

TextColor (yellow);

TextBackGround (lightgray);

ClrScr;

New (Woman,Init);

New (Man,Init);

{Визначення статі людини}

Write (' СТАТЬ (Ч/Ж) ? ');

Repeat

Ch:=ReadKey;

Until (Ch='Ж') or (Ch='ж') or (Ch='Ч') or (CH='ч');

Writeln;

{Реалізація методів у залежності від статі людини}

If (Ch='Ж') or (Ch='ж') then

with Woman^ do

begin

Read_Date;

TextColor (red);

Write_Date;

end

else

with Man^ do

begin

Read_Date;

TextColor (blue);

Write_Date;

end;

Dispose (Woman, Done);

Dispose (Man, Done);

Readln;

End.

  1. ЗАВДАННЯ НА РОБОТУ

Розробити та запустити у роботу програму на мові програмування "Паскаль", яка вирішує задачу відповідно до заданого нижче варіанта.

2.1. На основі базового динамічного об'єкта, який реалізує функцію y=А*соs(D*х), створити два підлеглі динамічні об'єкти та обчислити за допомогою віртуальних методів функції y1=А*соs(D*х)+В*sin(C*х) та y2=А*соs(D*х)*(К+2) відповідно при зміні аргументу Х від нуля до 10 із кроком 0,1. Параметри функцій увести з клавіатури.

2.2. На основі базового динамічного об'єкта, який реалізує функцію у=В*(1-е-t/T1), створити два підлеглі динамічні об'єкти та обчислити за допомогою віртуальних методів функції y1=В*(1-е-t/T1)+А*соs(D*t) та y2=В*(1-е-t/T1)*sin(K*t) відповідно при зміні аргументу t від нуля до 8 із кроком 0,05. Параметри функцій увести з клавіатури.

2.3. На основі базового динамічного об'єкта, який реалізує функцію y=С-K*z, створити два підлеглі динамічні об'єкти та обчислити за допомогою віртуальних методів функції y1=(С-K*z)+А*соs(z) та y2=(С-K*z)-В*(1-е-z) відповідно при зміні аргументу Z від нуля до 20 із кроком 0,5. Параметри функцій увести з клавіатури.

2.4. На основі базового динамічного об'єкта, який реалізує функцію y=А*sin(B*х), створити два підлеглі динамічні об'єкти та обчислити за допомогою віртуальних методів функції y1=А*sin(B*х)-С*соs(2*х) та y2=А*sin(B*х)-D*х2 відповідно при зміні аргументу Х від нуля до 16 із кроком 0,2. Параметри функцій увести з клавіатури.

2.5. На основі базового динамічного об'єкта, який реалізує функцію y=D*е-t/T, створити два підлеглі динамічні об'єкти та обчислити за допомогою віртуальних методів функції y1=D*е-t/T+соs(C*t) та y2=D*е-t/T-соs(A*t) відповідно при зміні аргументу t від нуля до 12 із кроком 0,06. Параметри функцій увести з клавіатури.

2.6. На основі базового динамічного об'єкта, який реалізує функцію y=A*z, створити два підлеглі динамічні об'єкти та обчислити за допомогою віртуальних методів функції y1=A*z+В*соs(z) та y2=A*z-D*(1-е-z) відповідно при зміні аргументу Z від нуля до 10 із кроком 0,02. Параметри функцій увести з клавіатури.

2.7. На основі базового динамічного об'єкта, який реалізує функцію y=А*соs(z), створити два підлеглі динамічні об'єкти та обчислити за допомогою віртуальних методів функції y1=А*соs(z)*sin(C*z) та y2=А*соs(z)+В*z відповідно при зміні аргументу Z від нуля до 17 із кроком 0,1. Параметри функцій увести з клавіатури.

2.8. На основі базового динамічного об'єкта, який реалізує функцію y=В*(1-е-t), створити два підлеглі динамічні об'єкти та обчислити за допомогою віртуальних методів функції y1=В*(1-е-t)*соs(D*t) та y=В*(1-е-t)+соs(C*t) відповідно при зміні аргументу t від нуля до 13 із кроком 0,1. Параметри функцій увести з клавіатури.

2.9. На основі базового динамічного об'єкта, який реалізує функцію y=K*z+А, створити два підлеглі динамічні об'єкти та обчислити за допомогою віртуальних методів функції y1=(K*z+А)+соs(B*z) та y2=(K*z+А)-С*е-z відповідно при зміні аргументу Z від нуля до 4 із кроком 0,01. Параметри функцій увести з клавіатури.

2.10. На основі базового динамічного об'єкта, який реалізує функцію y=А*sin(B*х+1), створити два підлеглі динамічні об'єкти та обчислити за допомогою віртуальних методів функції y1=А*sin(B*х+1)-В та y2=А*sin(B*х+1)-(х2+С) відповідно при зміні аргументу Х від нуля до 8 із кроком 0,04. Параметри функцій увести з клавіатури.

  1. КОНТРОЛЬНІ ЗАПИТАННЯ

  1. Якими трьома властивостями характеризується об’єктно-орієнтоване програмування.

  2. Як реалізується кожна із властивостей об’єктно-орієнтованого програмування при описі об'єкта.

  3. Як визначається належність метода до об'єкта.

  4. Чим відрізняються статичні та віртуальні методи.

  5. Як описуються віртуальні методи.

  6. Для чого служить конструктор.

  7. Як виділяється та звільняється динамічна пам'ять для динамічних об'єктів.

  8. Як виділяється динамічна пам'ять для об'єктів із віртуальними методами.

  9. Для чого служить деструктор та як він описується.

Комп’ютерний практикум № 10

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]