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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.04.2015, 18:55   #1
manchester_alan
Форумчанин
 
Регистрация: 07.01.2015
Сообщений: 231
По умолчанию Базовый класс - предок

Создать базовый класс - Предок, у которого есть имя. Определить виртуальную функцию печати. Создать производный класс Ребенок, у которого функция печати дополнительно выводит имя. Создать производный класс от последнего класса - Внук, у которого есть отчество. Написать свою функцию печати.

Можете,пожалуйста,понятнее просто объяснить, в чем заключается задание? Ну понятно, что это иерархия классов, но вот виртуальная функция печати это что? и свою написать функцию печати это что сделать?
manchester_alan вне форума Ответить с цитированием
Старый 16.04.2015, 19:05   #2
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Тут с примерами: http://www.transl-gunsmoker.ru/2011/...inherited.html
Теория: https://ru.wikipedia.org/wiki/Виртуальный_метод
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 16.04.2015, 19:29   #3
manchester_alan
Форумчанин
 
Регистрация: 07.01.2015
Сообщений: 231
По умолчанию

Код:
 type
    TGrandFather=class
     fname:string;
      procedure stamp; virtual;
      property Name: string read fname write fname;
  end;

  TFather = class(TGrandFather)
  procedure stamp; override;
  property name;
  end;

  TSon=class(TFather)
  fname2:string;
  procedure stamp; reintroduce;
  property name2: string read fname2 write fname2;
  end;


  implementation
   procedure TGrandFather.stamp;
   begin

   end;

   procedure TFather.stamp;
   begin
     inherited;

   end;

   procedure TSon.stamp;
   begin

   end;
примерно так правильно? ну для начала?
manchester_alan вне форума Ответить с цитированием
Старый 16.04.2015, 19:33   #4
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Типа того . Бери Делфи и воплощай.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 16.04.2015, 19:40   #5
manchester_alan
Форумчанин
 
Регистрация: 07.01.2015
Сообщений: 231
По умолчанию

Цитата:
Типа того . Бери Делфи и воплощай.
Спасибо)) а еще, то есть как я понял в базовом классе нужно вводить Имя Фамилию... Дальше он сразу должен выводить имя там фамилию, а в третьем классе опять вводить Имя Фамилия ну и Отчество..?
manchester_alan вне форума Ответить с цитированием
Старый 16.04.2015, 19:53   #6
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Дальше он сразу должен выводить имя там фамилию, а в третьем классе опять вводить Имя Фамилия ну и Отчество..?
Зачем? У тебя отчество это имя предыдущего класса будет.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 16.04.2015, 20:03   #7
manchester_alan
Форумчанин
 
Регистрация: 07.01.2015
Сообщений: 231
По умолчанию

ааа то есть после каждого класса должна оставаться Фамилия и Отчество, а имя ты сам должен вписать ?
manchester_alan вне форума Ответить с цитированием
Старый 16.04.2015, 20:08   #8
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
ааа то есть после каждого класса должна оставаться Фамилия и Отчество, а имя ты сам должен вписать ?
Когда ты наследуешься от класса то в наследство получаешь не только его методы, но и данные.
http://cybern.ru/delphi-class-inheritance.html
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 16.04.2015, 20:15   #9
manchester_alan
Форумчанин
 
Регистрация: 07.01.2015
Сообщений: 231
По умолчанию

понятно спасибо))

Цитата:
Типа того . Бери Делфи и воплощай.
Код:
unit Unit1;
 
interface
  type
    TGrandFather=class
     ffam:string;
     constructor create; virtual;
      function stamp:string;  virtual;
      public
      property fam: string read stamp write ffam;
  end;
 
  TFather = class(TGrandFather)
  fname:string;
  function stamp:string; override;
  constructor create; override;
  property name: string read stamp;
  end;
 
  TSon=class(TFather)
  fPatronymic:string;
  constructor create; override;
  function stamp:string; override;
  public
  property Patronymic: string read stamp write fPatronymic;
  end;
 
 
  implementation
 
   constructor tgrandfather.create;
   begin
     ffam:=fam;
   end;
 
    constructor tfather.create;
   begin
      fname:=name;
   end;
 
   constructor tson.create;
   begin
     fPatronymic:=Patronymic;
   end;
 
   function TGrandFather.stamp;
   begin
     Readln(ffam);
     Result:=fam;
   end;
 
   function TFather.stamp;
   begin
     Readln(fname);
     Result:=fam+name;
   end;
 
   function TSon.stamp;
   begin
     Readln(fpatronymic);
     Result:=fam+name+patronymic;
   end;
 
end.
Можете посмотреть как написано? Вроде ошибок нет, но...

хотя
Код:
 ffam:=fam;
Код:
fname:=name;
Код:
 fPatronymic:=Patronymic;
это не правильно, нечего не делается... Как тогда выводить??!

Последний раз редактировалось Stilet; 18.04.2015 в 06:29.
manchester_alan вне форума Ответить с цитированием
Старый 18.04.2015, 02:30   #10
ДралсяСошибками
Форумчанин
 
Аватар для ДралсяСошибками
 
Регистрация: 31.05.2011
Сообщений: 301
По умолчанию

Может как-то так:
Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

type
  TGrandFather = class
  private
    FFirstName: String;
    FLastName: String;
  public
    constructor Create;
    function Print: String; virtual;
    property LastName: String read FLastName;
  end;

  TFather = class(TGrandFather)
  private
    FFirstName: String;
  public
    constructor Create;
    function Print: String; override;
    property FirstName: String read FFirstName;
  end;

  TSon = class(TFather)
  private
    FFirstName: String;
    FSecondName: String;
  public
    constructor Create;
    function Print: String; override;
    property SecondName: String read FSecondName;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  GrandFather: TGrandFather;
  Father: TFather;
  Son: TSon;
begin
  GrandFather := TGrandFather.Create;
  Memo1.Lines.Add(GrandFather.Print);
  GrandFather.Free;

  Father := TFather.Create;
  Memo1.Lines.Add(Father.Print);
  Father.Free;

  Son := TSon.Create;
  Memo1.Lines.Add(Son.Print);
  Son.Free;
end;

{ TGrandFather }

constructor TGrandFather.Create;
begin
  FFirstName := 'Èâàí';
  FLastName := 'Èâàíîâ';
end;

function TGrandFather.Print: String;
begin
  Result := FFirstName + ' ' + LastName;
end;

{ TFather }

constructor TFather.Create;
begin
  inherited;
  FFirstName := 'Ïåòð';
end;

function TFather.Print: String;
begin
  Result := FFirstName + ' ' + LastName;
end;

{ TSon }

constructor TSon.Create;
begin
  inherited;
  FFirstName := 'Ñåìåí';
  FSecondName := FirstName;
end;

function TSon.Print: String;
begin
  Result := FFirstName + ' ' + SecondName + 'îâè÷ ' + LastName;
end;

end.
ДралсяСошибками вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C++ Создать базовый класс список the_faceless Помощь студентам 1 17.02.2014 10:02
Создать абстрактный базовый класс C++ MicRaiS Общие вопросы C/C++ 3 11.06.2012 13:14
результат базовый класс и наследование Пепел Феникса Общие вопросы C/C++ 1 21.09.2010 02:29
Создать базовый класс sT1mfy Общие вопросы Delphi 3 11.06.2010 21:38