![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
подскажите пожалуйста какой есть еще принцип реализации полиморфизма в Delphi. Есть 1) перекрытие(override)
2) перегрузка (overload) Какие ещё есть способы ? Вот код, где здесь реализация полиморфизма ? Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Unit2, Unit3;
type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
C:TChelovek;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
C.SetAll(Form1.Edit1.Text,Strtoint(Form1.Edit2.Text), Form1.Edit3.Text, StrToInT(Form1.Edit4.Text)) ;
C.Age;
Form1.Memo1.Lines.Add(C.Describe);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
C:=TChelovek.Create;
C.SetAll('Èâàíîâà', 1991, 'Åëåíà', 14);
C.Age;
Form1.Memo1.Lines.Add(C.Describe);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
C.Free;
end;
end.
unit Unit2;
interface
uses SysUtils, Dialogs, DateUtils;
type
THuman=class
private
FAge:integer;
Ffam:string;
FGod_rozd:integer;
function GetFfam:string;
procedure SetFfam(Ff:string);
function GetFGod_rozd:integer;
procedure SetFGod_rozd(FGR:integer);
public
Function GetFAge:integer;
procedure Age;
function Describe:string;
procedure SetAll(fam:string;god:integer);
property Ffams:string read GetFfam
write SetFfam;
property FGod_rozds: integer read GetFGod_rozd
write SetFGod_rozd;
end;
implementation
function THuman.GetFfam:string;
begin
GetFfam:=Ffam;
end;
procedure THuman.SetFfam(Ff:string);
begin
Ffam:=Ff;
end;
function THuman.GetFGod_rozd:integer;
begin
GetFGod_rozd:=FGod_rozd;
end;
procedure THuman.SetFGod_rozd(FGR:integer);
begin
FGod_rozd:=FGR;
end;
procedure THuman.Age;
begin
FAge:=YearOf(Date)-FGod_rozd;
end;
function THuman.GetFAge:integer;
begin
GetFAge:=FAge;
end;
function THuman.Describe:string;
begin
Describe:='Ôàìèëèÿ - '+Ffam+' '+'Ãîä ðîæäåíèÿ - '+IntToStr(FGod_rozd)+' '+' Âîçðàñò - '+IntToStr(FAge)+' ';
end;
procedure THuman.SetAll( fam:string; god:integer);
begin
Ffam:=fam;
FGod_rozd:=god;
Age;
end;
end.
unit Unit3;
interface
uses SysUtils, Dialogs, Unit2;
type
TChelovek=class(THuman)
private
FImya:string;
Fnomer:integer;
function GetFImya:string;
procedure SetFImya(FI:string);
function GetFnomer:integer;
procedure SetFnomer(FN:integer);
public
property FImyas:string read GetFImya
write SetFImya;
property Fnomers:integer read GetFnomer
write SetFnomer;
function Describe:string;
procedure SetAll(fam:string;god:integer; imya: string; nomer:integer); overload;
end;
implementation
function TChelovek.GetFImya:string;
begin
GetFImya:=FImya;
end;
procedure Tchelovek.SetFImya(FI:string);
begin
FImya:=FI;
end;
function TChelovek.GetFnomer:integer;
begin
GetFnomer:=Fnomer;
end;
procedure TChelovek.SetFnomer(Fn:integer);
begin
Fnomer:=Fn;
end;
function TChelovek.Describe:string;
begin
result:=inherited Describe;
Describe:=result+' èìÿ - '+FImya+' '+' íîìåð - '+IntToStr(Fnomer);
end;
procedure TChelovek.SetAll(fam:string;god:integer; Imya:string; nomer:integer);
begin
inherited SetAll(fam,god);
FImya:=Imya;
Fnomer:=nomer;
end;
end.
|
|
#2
|
|||
|
|||
|
А здесь его и нету
![]() С www.codenet.ru: Полиморфизм (polymorphism) (от греческого polymorphos) - это свойство, которое позволяет одно и то же имя использовать для решения двух или более схожих, но технически разных задач. Целью полиморфизма, применительно к объектно-ориентированному программированию, является использование одного имени для задания общих для класса действий. Выполнение каждого конкретного действия будет определяться типом данных. В более общем смысле, концепцией полиморфизма является идея "один интерфейс, множество методов". Это означает, что можно создать общий интерфейс для группы близких по смыслу действий. Т.е. полиморфизм - фактически, это следствие наследования. Но не само наследование как таковое. Фактически, полиморфизм в Delphi можно реализовать либо через наследование, либо через интерфейсы (суть тоже наследование, но немного подругому). А перекрытие методов (override) - это просто механизм изменения описания метода в наследниках. Перегрузка (overload) - это вообще другая песня. |