Помощь - Поиск - Пользователи - Календарь
Полная версия: Производные классы
Форум «Всё о Паскале» > 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


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