русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Пример создания оконного приложения Delphi

Создать объекты «студент» и «преподаватель».Создать массивы объектов. Для каждого из объектов определить  методы инициализации и вывода. Определить максимальный размер стипендии, который встречается в массиве студентов. Создадим следующую иерархию классов:

Каждый из этих классов содержит конструктор  Create и метод отображения полей класса Info. Класс TStud содержит ещё метод info_stip, который возвращает размер стипендии. Результат этой функции используется при обработке события , состоящем в нажатии кнопки Button3 – определении максимального размера стипендии.  Назначение остальных кнопок следующее:

Button1 – добавить;
Button2 – список студентов;
Button4 –сброс;
Button5 –список преподавателей.

 

Выбор  типа объекта (преподаватель или студент) производится соответствующими радиокнопками, объединенными в группу .

unit Unit1;
interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls;

type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
Button2: TButton;
Edit2: TEdit;
Label1: TLabel;
Panel1: TPanel;
RadioGroup1: TRadioGroup;
Button3: TButton;
Label2: TLabel;
Button4: TButton;
Button5: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
Type
Tperson=class
fname:string;
Constructor Create(name:string);
Function info:string;virtual;
end;
Tstud=class(TPerson)
fstip:integer;
constructor Create(name:string;stip:integer);
Function info:string; override;
Function info_stip:integer;
end;
TProf = class(TPerson)
fkaf:string;
constructor Create(name:string;kaf:string);
Function info:string; override;
end;
const n:integer=0;
var
Form1: TForm1;
stud:array [1..5] of TStud;
prof:array [1..5] of Tprof;
implementation
{$R *.DFM}
Constructor Tperson.Create(name:string);
begin
fname:=name;
end;
Constructor TStud.Create(name:string;stip:integer);
begin
inherited create(name);
fstip:=stip;
end;
Constructor TProf.Create(name:string;kaf:string);
begin
inherited create(name);
Fkaf:=kaf;
end;
Function Tperson.info:string;
begin
info:=fname;
end;
Function Tstud.info:string;
begin
info:=fname +' стипендия '+IntTostr(fstip);
end;
Function TProf.info:string;
begin
info:=fname +' кафедра '+fkaf;
end;

 

Function Tstud.info_stip:integer;
begin
info_stip:=fstip;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if n<5 then
begin n:=n+1;
if RadioGroup1.ItemIndex=0
then
Stud[n]:=Tstud.create(Edit1.Text,
StrToInt(Edit2.Text))
else
prof[n]:=TProf.create(Edit1.Text,
Edit2.Text);
end
else  ShowMessage('Список заполнен');
edit1.Clear;
edit2.clear;
end;

 

procedure TForm1.Button2Click(Sender: TObject);
var i:integer;
st:string;
begin
st:='';
for i:=1 to n do
st:=st+stud[i].info+#13;
Label1.caption:='Студенты'+#13+st;
end;

 

procedure TForm1.Button3Click(Sender: TObject);
var i:integer; max_st:integer;
begin
if RadioGroup1.ItemIndex=0 then
begin
max_st:=0;
For i:=1 to n do
if stud[i].info_stip > max_st
then max_st:=stud[i].info_stip;
label2.caption:='максимальная стипендия-'+Inttostr(max_st); end
else
ShowMessage('возможно определить только для студентов');
end;

 

procedure TForm1.Button4Click(Sender: TObject);
begin
N:=0;
label2.caption:='';
label1.caption:='';
end;

 

procedure TForm1.Button5Click(Sender: TObject);
var i:integer;
st:string;
begin
st:='';
for i:=1 to n do
st:=st+prof[i].info+#13;
Label1.caption:='преподаватели'+#13+st;
end;

end.

Нужно помнить  о том, что объект – это указатель. А в Object Pascal указателю на родительский класс можно присвоить значение указателя на дочерний класс. Поэтому вместо двух массивов    stud и prof  будем использовать один массив объектов класса TPerson:

List: array[1..5] of TPerson;

В этом массиве можно хранить как информацию о студентах, так и данные о преподавателях. Вывод списка производится применением метода info к элементам массива.  Это возможно, так как в базовом классе  при помощи директивы Virtual метод Info объявлен виртуальным. Объявление метода  виртуальным дает возможность дочернему классу произвести замену виртуального метода своим собственным. Концепция полиморфизма обеспечивает применение объекту именно того метода, который соответствует типу объекта.

Описания методов добавления  элемента в  массив List  и вывода списка приведены ниже. Методы Create и Info  остаются такими же, как и в предыдущем примере

var
Form1: TForm1;
List:array[1..5] of Tperson;

 

implementation
{ описания объектов}
{описания методов}
. . .
procedure TForm1.Button1Click(Sender: TObject);
begin
if n<5 then
begin n:=n+1;
if RadioGroup1.ItemIndex=0
then
list[n]:=TStud.Create(Edit1.Text,
StrToInt(Edit2.Text))
else
list[n]:=TProf.create(Edit1.Text,  Edit2.Text);
end
else         ShowMessage('Список заполнен');
end;

 

procedure TForm1.Button2Click(Sender: TObject);
var i:integer;
st:string;
begin      st:='';
for i:=1 to n do
st:=st+list[i].info+#13;
Label1.caption:='Список'+#13+st;
end;

Просмотров: 18304

Вернуться воглавление


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Полезен материал? Поделись:

Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.