Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.01.2010, 23:54   #1
Nostalgia
Пользователь
 
Регистрация: 17.12.2008
Сообщений: 44
По умолчанию Принципы реализации полиморфизма

подскажите пожалуйста какой есть еще принцип реализации полиморфизма в 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.
Nostalgia вне форума Ответить с цитированием
Старый 05.01.2010, 11:49   #2
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Цитата:
Вот код, где здесь реализация полиморфизма ?
Открываете код в блокноте, правка => найти => "overload".
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Общие принципы авторизации на удаленных сайтах. Квэнди Работа с сетью в Delphi 5 06.12.2009 09:46
Принципы создания словарей doniyor БД в Delphi 1 02.12.2009 16:30
Логические и Арифметические принципы работы ЭВМ ardor Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 18.11.2009 23:37
Принципы работы icq Mantell Общие вопросы .NET 0 30.06.2009 10:42
Принципы объектно-ориентированного программирования. Silent_Hell Помощь студентам 1 25.05.2009 12:53