Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Laby_po_OOP.doc
Скачиваний:
2
Добавлен:
01.03.2025
Размер:
2.23 Mб
Скачать

Ход работы:

Задание 1. Наберите и проанализируйте программу. Определите в данной программе все динамические объекты и методы применяемые к этим объектам. Объясните результаты выполнения программы.

program polivir;

uses Crt;

const

LENLIST=10; { длина списка }

type

TPerson = object

FName: string[30]; { имя }

FAddress: string[40]; { адрес }

constructor init(Name,Address:string);{ конструктор объекта }

destructor Done; virtual;{ деструктор объекта }

procedure print; virtual;

end;

TStudent = object(TPerson)

FGroup: integer; { учебная группа }

constructor init(Name,Address:string;Group:integer);

destructor Done; virtual;

procedure print; virtual;

end;

TProf = object(TPerson)

FKafedra: string[30]; { кафедра }

constructor init(Name,Address,Kafedra:string);

destructor Done; virtual;

procedure print; virtual;

end;

PStudent=^TStudent;

PProf=^TProf;

constructor TPerson.init(Name,Address:string);

begin

FName:=Name;

FAddress:=Address;

end;

destructor TPerson.Done;

begin

end;

procedure TPerson.print;

begin

writeln(FName);

writeln(FAddress);

end;

constructor TStudent.init(Name,Address:string;Group:integer);

begin

TPerson.init(Name,Address);

FGroup:=Group;

end;

destructor TStudent.Done;

begin

inherited Done; { вызов деструктора родительского типа }

end;

procedure TStudent.print;

begin

TPerson.print;

writeln('úα. ',FGroup);

end;

constructor TProf.init(Name,Address,Kafedra:string);

begin

TPerson.init(Name,Address);

FKafedra:=Kafedra;

end;

destructor TProf.Done;

begin

inherited Done;

end;

procedure TProf.print;

begin

TPerson.print;

writeln('K. ',FKafedra);

end;

var

list: array[1..LENLIST] of ^TPerson;

i:integer;

begin

{ инициализация списка }

for i:=1 to LENLIST do

list[1]:=NIL;

{ создать три объекта и поместить в список }

list[1]:=new(PStudent,init('Михаил Иванов','Лесной пр, д.29, корп.6ф, комн.211',3813));

list[2]:=new(PStudent,init('Цветков Станислав','пр. К.Маркса, д.32, кв.3',3813));

list[3]:=new(PProf,init('Некрасов Степан Петрович','Институтский пр., д.7, кв.13','Управление проектами'));

{ вывести объекты – элементы списка }

for i:=1 to LENLIST do

if list[i] <> NIL

then list[i]^.print;

{ уничтожить объекты }

for i:=1 to LENLIST do

if list[i] <> NIL

then

begin

Dispose(list[i],Done);

list[i]:=NIL;

end;

Readln;

end.

Задание для самостоятельного решения

Задание 2. Напишите программу, которая сначала формирует список, состоящий из объектов типа Tstudent и Tprof, затем, применяя метод print к элементам массива, выводит этот список на экран в алфавитном порядке.

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