В этом уроке мы рассмотрим особенности создания объектов в качестве полей классов.
Как уже упоминалось в предыдущем уроке, полями могут являться не только обыкновенные переменные типа Integer, String или Boolean, но также и любые экземпляры других классов. Забегая немного вперед, скажу, что и это далеко не все, что можно объявить внутри класса. Предположим, у нас существует три класса, описанные следующим образом:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
type
TTeacher = class
public
FullName: string;
constructor Create(NewFullName: string);
destructor Destroy;
end;
TStudent = class
public
FullName: string;
MathTeacher: TTeacher;
PhysicsTeacher: TTeacher;
BiologyTeacher: TTeacher;
constructor Create(NewFullName: string);
destructor Destroy;
end;
TSchool = class
public
SchoolNumber: integer;
Teachers: array [1..10] of TTeacher;
Students: array [1..100] of TStudent;
constructor Create(NewSchoolNumber: integer);
destructor Destroy;
end;
|
Внимательно рассмотрим описания этих классов. Реализации конструктора и деструктора принципиально ничем не отличаются от тех, что были представлены в предыдущем уроке.
Как вы видите, мы создали три класса: учитель, ученик и школа. Класс TTeacher наиболее простой из приведенных, т.к. содержит лишь одно поле — полное имя. Класс TStudent как раз и демонстрирует нам пример создания поля, указывающее на другой объект другого класса. Кстати говоря, поля могут ссылаться и на другой объект этого же класса.
Чтобы создать внутри класса А поле, которое будет являться экземпляром другого класса B, необходимо учесть, что класс B должен быть описан ДО описания класса A.
Таким образом, класс нашего ученика содержит в себе три поля — ссылки на преподавателей математики, физики и биологии, а именно на экземпляры класса TTeacher.
Читать дальше
|