русс | укр

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

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

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

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


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

Теоретическая часть


Дата добавления: 2015-07-09; просмотров: 476; Нарушение авторских прав


ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ

ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО

ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

«Донской государственный технический университет»

(ДГТУ)

 

Кафедра «Программное обеспечение вычислительной техники и автоматизированных систем»

 

ЛАБОРАТОРНАЯ РАБОТА

«НАСЛЕДОВАНИЕ И ПОЛИМОРФИЗМ»

 

Ростов-на-Дону


Цель работы: освоить понятие наследования классов. Изучить принципы работы с классом потомком и классом предком.

 

Теоретическая часть

 

Класс может быть унаследован от другого класса. Класс, от которого наследуют, называют базовым классом (надклассом, предком), а класс, который наследуется, называется производным классом (подклассом, потомком). При наследовании все поля, методы и свойства базового класса переходят в производный класс, кроме этого, могут быть добавлены новые поля, методы и свойства и переопределены (замещены) старые методы.

 

При описании класса его базовый класс указывается в скобках после слова class.

 

Например:

 

type

BaseClass = class

procedure p;

procedure q(r: real);

end;

MyClass = class(BaseClass)

procedure p;

procedure r(i: integer);

end;

 

В данном примере процедура p переопределяется, а процедура r добавляется в класс MyClass.

 

Если не указать имя базового класса, то считается, что класс наследуется от класса Object - предка всех классов. Например, BaseClass наследуется от Object.

 

Перед словом class может быть указано ключевое слово final – в этом случае от класса запрещено наследовать.

 

Пример.

type

 

parent=class

protected

x:integer;

public

constructor;

begin

x:=5;

end;

 

constructor(z:integer);

begin

x:=z;



end;

 

procedure show; virtual;

begin

writeln('parent ',x);

end;

end;

 

child=class(Parent)

private

y:integer;

 

function GetY:integer;

begin

Result:=y;

end;

 

procedure SetY(yy:integer);

begin

y:=yy;

end;

 

public

constructor;

begin

inherited create;

y:=6;

end;

 

constructor(t,q:integer);

begin

inherited create(t);

y:=q;

end;

 

procedure show; override;

begin

writeln('child ',y,' ', self.x);

end;

 

 

property PY: integer read GetY write SetY;

 

end;

 

 

var mas:array[1..3] of Parent;

c:Child;

 

BEGIN

mas[1] := new parent(4);

mas[2] := new child;

c:=mas[2] as Child;

c.PY:=33;

mas[3] := new child(10,8);

for var i:=1 to 3 do mas[i].show();

END.

 

Пример. Использование наследования классов для работы с несколькими формами

uses

System,

System.Windows.Forms;

 

type

 

student=class

private

fio:string[20];

public

constructor Create();

begin

 

end;

 

procedure SetName(st:string);

begin

fio:=st;

end;

 

function GetName:string;

begin

Result:=fio;

end;

end;

 

miniForm=class(Form)

private

tx:TextBox;

bt:Button;

stud:student;

public

procedure MyButtonClick(sender: Object; e: EventArgs);

begin

stud.SetName(tx.Text);

self.Close;

end;

 

constructor Create(st:string; s:student);

begin

inherited Create();

stud:=s;

self.Text:=st;

tx:=new TextBox();

self.Controls.Add(tx);

bt:=new Button();

bt.Text:='Add';

bt.Top:=50;

bt.Click+=MyButtonClick;

self.Controls.Add(bt);

end;

end;

 

myForm=class(Form)

private

stud:student;

b1:Button;

l:listBox;

procedure MyButtonClick(sender: Object; e: EventArgs);

begin

var mn:miniForm;

mn:=new miniForm('222', stud);

mn.ShowDialog();

l.Items.Add(stud.GetName);

end;

public

constructor Create(st:string);

begin

inherited Create();

stud:=new student;

self.Text:=st;

b1:= new Button();

b1.Text:='Add';

b1.Click+=MyButtonClick;

self.Controls.Add(b1);

l:=new ListBox();

l.Top:=50;

self.Controls.Add(l);

end;

end;

 

var m :myForm;

begin

m := new myForm('111');

Application.Run(m);

end.

 

 



<== предыдущая лекция | следующая лекция ==>
Использование графики в HTML-документах | Последовательность выполнения работы


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


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

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

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


 


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

 
 

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

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