Помощь - Поиск - Пользователи - Календарь
Полная версия: Производные классы
Форум «Всё о Паскале» > Delphi, Assembler и другие языки. > Delphi
Jill
подскажите, плз!
креплю проект

задание таково:
Создать класс поезд, имеющий стоимость билета. Определить конструктор, деструктор и методы доступа (чтения и записи) к полям класса.
Создать два производных класса:
1)Класс - общий вагон, имеющий стоимость билета и количество посадочных мест.
2)Класс – купейный вагон, имеющий стоимость билета, количество посадочных мест, стоимость постели.

не выходит с количеством посадочных мест (общий вагон и купейный) и стоимостью постели (купейный вагон)
то бишь то, что не наследуется от родительского класса

знаю, что "истина где-то рядом", но не доходит unsure.gif

помогите, пожалуйста
hardcase
Цитата(Jill @ 23.01.2006 14:32) *
задание таково:
Создать класс поезд

то, что ты делаешь в программе - это НЕ ООП.
Разве так в Делфи объявляют КЛАССЫ?
type
  UkRRain  = ^RRain ;
  RRain  = record
    PRain:TRain ;
    Next: UkRRain ;
  end;
  UkRObschVagon = ^RObschVagon;
  RObschVagon = record
    PObschVagon: TObschVagon;
    Next: UkRObschVagon;
  end;
  UkRKupVagon = ^RKupVagon;
  RKupVagon = record
    PKupVagon: TKupVagon;
    Next: UkRKupVagon;
  end;

Ты здесь объявляешь ЗАПИСИ и указателии на них. А классы объявляются по другому:
type
  TMyClass = class(TParentClass)
    private
   { закрытые члены }
    protected
   { защищенные члены }
    public
   { открытые члены }
  end;

Изучай синтаксис!
Jill
по-моему, классы у меня объявленны в другом юните...
type
  TRain = class
   private 
    Stoim: real;
    Mesta: real;
    Postel: real; 
   public 
    prInRec: Boolean; 
    Constructor Create;
    function InputRecord: Boolean; virtual;
    procedure OutputRecord;
  end;

  TObschVagon = class(TRain)
   public     
    function InputRecord: Boolean; override; 
  end;

  TKupVagon = class(TRain)
   public 
   function InputRecord: Boolean; override; 
  end;

  TForm2 = class(TForm)
    Panel1: TPanel;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    RichEdit1: TRichEdit;
  end;


это неверно? unsure.gif
hardcase
В принципе, верно, но вот так будет лучше:

// Car = Carriage

TCarriage = class  // суперкласс любого вагона
  private
    fNextCar: TCarriage;
  public
    constructor Create; virtual;
    procedure HitchCarriage(Car: TCarriage); //прицепить вагон
    property NextCar: TCarriage read fNextCar;
end;//of class

TPassengerCar = class(TCarriage)  // пассажирский вагон
  private
    fSeatsCount: integer;
    fSeatCost: real;
  public
    costructor Create; override;
    property SeatsCount: integer read fSeatsCount;
    property SeatCost: real read fSeatCost;
end;//of class

TDormitoryCar = class(TPassengerCar)  // купе
  public
    constructor Create; override;
end;//of class

TParlorCar = class(TPassengerCar) // общий вагон
  public
    constructor Create; override;
end;//of class
Jill
ок, с этим разобрались )

но трабл остается...
каким макаром пораскидывать это самое "имеющий" (кстати, как это называется? свойство, запись?) по данным классам?
hardcase
Цитата(Jill @ 25.01.2006 14:42) *
ок, с этим разобрались )

но трабл остается...
каким макаром пораскидывать это самое "имеющий" (кстати, как это называется? свойство, запись?) по данным классам?
Вот, посмотри на код.
Jill
красиво написано smile.gif

отдельное спасибо за комментарии smile.gif

но...блин...визуализировать не получается sad.gif


зы: поисправляла кое-какие очепятки ;) вобщем, стараюсь...
еще раз пасиба за объяснялки
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.