Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Interface




Begin

Begin

Begin

Type

Begin

Application.Initialize;

Application.CreateForm(TForm1, Form1);

Application.Run;

end.

 

Первый оператор инициализирует приложение,

Второй – создает объект формы Form1,

Третий – начинает выполнение приложения.

В объекте Application собраны данные и подпрограммы, необходимые для нормального функционирования Windows-программы в целом. Delphi автоматически создает объект-программу Application для каждого нового проекта. С помощью его метода Initialize программа осуществляет ряд вспомогательных действий, необходимых для работы под управлением операционной системы Windows. Строка

 

Application.Initialize;

 

означает обращение к методу Initialize объекта Application. Прочитав эту строку, компилятор создаст код, который заставит процессор перейти к выполнению большого фрагмента программы, написанного для нас разработчиками Delphi. После выполнения этого фрагмента (т.е. после выхода из подпрограммы) управление процессором перейдет к следующей строке программы, в которой вызывается метод CreatеForm, и т.д.

Метод CreatеForm объекта Application создает и показывает на экране окно главной формы, а метод Run реализует бесконечный цикл получения и обработки поступающих от Windows сообщений о действиях пользователя. Когда пользователь щелкнет по кнопке Close, Windows передаст программе специальное сообщение, которое, в конечном счете, заставит программу прекратить работу и освободить назначенные ей системные ресурсы (память и процессор).

Следует сказать, что файл проекта полностью формируется самой Delphi и в большинстве случаев не предназначен для редактирования. Более того, Delphi очень болезненно реагирует на попытки изменить текст этого файла и упрямо выбрасывает из него все, что не вставлено ею самой. Именно по этой причине файл проекта имеет особое расширение и обычно не показывается в окне кода. При разработке сложных проектов этот файл можно использовать для пояснения назначения тех или иных входящих в него форм.


ЗАДАЧА С ИСПОЛЬЗОВАНИЕМ ПОЛИМОРФИЗМА

Полиморфизм – это возможность использовать одинаковые имена для методов, входящих в различные классы. Концепция полиморфизма обеспечивает в случае применения метода к объекту использование именно того метода, который соответствует классу объекта.

Пусть определены 3 класса, один из которых является базовым для двух других:

 

Tperson=class { базовыйкласс }

fname:string;

constructor Create(name:string);

function info:string; virtual;

end;

Tstud=class(Tperson) { класс– потомок }

fgr:integer; { поле для номера группы }

constructor Create(name:string;gr:integer);

function info:string; override;

end;

Tprof=class(Tperson) { класс– потомок }

fdep:string;; { поле для названия кафедры }

constructor Create(name:string; dep:string);

function info:string; override;

end;

В каждом из этих классов определен метод info. В базовом классе при помощи директивы virtual метод info объявлен виртуальным. Это дает возможность классу–потомку произвести замену виртуального метода своим собственным. В каждом классе–потомке определен свой метод info, который замещает соответствующий метод родительского класса и отмечается директивой override.

Определим метод info для каждого класса индивидуально:

function Tperson.info:string;

result:=’’;

end;

 

function Tstud.info:string;

result:=fname+' gruppa '+inttostr(fgr);

end;

function Tprof.info:string;

result:=fname+' department '+fdep;

end;

Далее в программе список всех людей можно представить массивом объектов класса Tperson. Отметим, что объект – указатель.

Список людей имеет вид:

 

list: array[1..szl] of Tperson; { szl – размер списка }

Объявить подобным образом список можно потому, что OP позволяет присвоить указателю на родительский класс значение указателя на класс– потомок. Поэтому элементами массива list могут быть как объекты класса Tstud, так и объекты класса Tprof.

Вывод списка можно осуществить применением метода info к элементам массива, например:

 

St:= ’’;

for i:=1 to szl do

if list[i]<>nil then

St:=St+list[i].info+#13;

ShowMessage('Spisok:'+#13+St); { вывод в окно сообщения}

 

Во время работы программы каждый элемент массива может содержать как объект типа Tstud, так и объект типа Tprof.

Концепция полиморфизма обеспечивает применение к объекту именно того метода info, который соответствует типу объекта.

Напишем программу, которая использует объявления классов Tperson, Tstud, Tprof, формирует список студентов и преподавателей и выводит полученный список в окно сообщения. Будем использовать визуальное программирование.

Окно формы будет иметь вид:


GroupBox1—это компонент, объединяющий группу компонентов, связанных по смыслу. В данном случае он включает 2 зависимых переключателя – RadioButton1 и RadioButton2

 

Текст модуля кода программы:

unit Polimorfizm;




Поделиться с друзьями:


Дата добавления: 2015-07-02; Просмотров: 357; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.019 сек.