![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Я пытаюсь вникнуть в ООП, возникли вопросы. Помогите! [Delphi]
JUS © (2004-08-17 18:06:00)Я пытаюсь вникнуть в ООП, возникли вопросы. Помогите!:(
>>Например создал я родительский клас TCar(Транспотное средство)..
Вот код программы: (на форме: Button1,Label1)
TCar=class
Private
name:string;
fuel:integer;
speed:integer;
massa:integer;
{ Published
Property PName:string read Name write Name;
Property PFuel:integer read Fuel write Fuel;
Property PSpeed:integer read Speed write Speed;
Property PMassa:integer read Massa write Massa;}
public
constructor Create;
destructor Destroy;
end;
TVaz- это значит потомок TCar,
TVaz=class(TCar)
Private
name:string;
fuel:integer;
speed:integer;
public
constructor Create;
destructor Destroy;
end;
ну в чём разница в данном примере?, с таким же успехом я мог бы сделать TVazродительским, да я понимаю что в TCarвPrivateя мог бы описать к примеруmassa:integer;и использовть к примеру к другому скажем потомку, напримерTPlane(TCar). но как использовать? В конструкторе TCarпеременная Name:='транспотное средство', В TVazNameя закоментировал, значит по идее при нажатии Button1на Label1выведется значениеNameкласса TVazпо умолчанию т.к. TVaz(TCar)наследован от TCar. (Поправьте если я не прав). По идее проще говоря Label1дожен вывести на экран "Транспотное средство", но почему-то Label1пустой.
var
Form1: TForm1;
implementation
{$R *.dfm}
constructor TCar.Create();
begin
inherited Create;
Name:='Транспортное средство';
Fuel:=0;
Speed:=0;
massa:=0;
end;
constructor TVaz.Create();
begin
inherited Create;
// Name:='Ваз-21112';
Fuel:=50;
Speed:=200;
end;
destructor TCar.Destroy();
begin
inherited Destroy;
end;
destructor TVaz.Destroy();
begin
inherited Destroy;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
label1.Caption:=TVaz.Create.name;
end;
end.
подскажите что нетак?
И для чего нуженPublished? это типа свойства как вobject ispectore?
Jus (2004-08-20 21:43:00) [1]
> > Add - не работает
Да уже всё работает нормально, я просто коечто упустил в тексте программы... спасибо
Рамиль (2004-08-20 21:42:00) [2]
> Это что, юмор такой?:)
Какой же это юмор? Add самое сабое место, постоянно ломается, достало уже...
Jus (2004-08-20 20:29:00) [3]
> И что там сломалось?
Это что, юмор такой?:)
Skyle (2004-08-20 06:44:00) [4]
> Add - не работает
И что там сломалось?
JUS (2004-08-19 19:30:00) [5]Щас сделаю...
akvilon (2004-08-18 23:26:00) [6]к тому что находится в разделе Private имеют доступ только методы класса, чтобы менялось при нажатии на Button1 размещай данные в разделе Public, тогда они будут доступны везде
Jus (2004-08-18 21:47:00) [7]В какой раздел в описании класса TCar нужно отнести к примеру Speed чтобы мне через кнопку Button1 изменить его значение?
Вот фрагмент
TCar=class
Private
name:string;
fuel:integer;
speed:integer;
massa:integer;
public
constructor Create;
destructor Destroy;
end;
У меня значение SPeed не меняется при нажатии Button1 хотя должно, я правдо ещё могу ошибатся
Я подумал может Speed надо в свйства(т.е. вPublished)? тогда будет всё хокей?
Jus (2004-08-18 21:06:00) [8]
> Skyle © (18.08.04 10:59) [16]
> procedure TForm1.Button1Click(Sender : TObject);
> var Footmans : TList;
> I : Integer;
> begin
> Footmans := TList.Create;
> try
> for I := 0 to 9 do
> Footmans.Add(TFootman.Create);
ПишуFootmans.Add(TFootman.Create);
Add- не работает или ( ADD) тоже имелся ввиду какой-то метод ?
JUS (2004-08-18 14:27:00) [9]Ага, понял!
Skyle (2004-08-18 14:25:00) [10]
> .GoFarFarAway; -это зарезервированная функция делфи или
> что это?
Имелся ввиду какой-то метод TFootman.
JUS (2004-08-18 14:25:00) [11].GoFarFarAway; -это зарезервированная функция делфи или что это?
Anatoly Podgoretsky (2004-08-18 14:12:00) [12]Рамиль © (18.08.04 12:54) [27]
Конструктор Create возвращает объектовую ссылку.
JUS (2004-08-18 14:08:00) [13]Значит
TSoldat.Create(N);я был всетаки прав?
X:=TX;
TSoldat.Create.TX:=X;
А вот
>
> //Теперь пехотинцы 2 и 5 идут нафик
> TFootman(Footmans[1]).GoFarFarAway;
> TFootman(Footmans[4]).GoFarFarAway;> finally
> //Освободить всех пехотинцев и Footmans
> end;
.GoFarFarAway; -это зарезервированная функция делфи или что это?
Рамиль (2004-08-18 12:54:00) [14]Хм... Не задумывался, однако, действительно. Век живи - век учись:)
Labert (2004-08-18 12:51:00) [15]>Рамиль © (18.08.04 12:00) [22]
>И с каких это пор конструктор записью является? Или он у тебя объект?
Такие конструкции вполне допустимы в Delphi, кстати. В Java они называются анонимные объекты
procedure TForm1.Button1Click(Sender: TObject);
begin
TButton.Create(self).Parent := self
end;
Рамиль (2004-08-18 12:35:00) [16]
> [24] Skyle © (18.08.04 12:29)
> Constructor create(N:Integer); //где N - номер солдата
Skyle (2004-08-18 12:29:00) [17]
> [22] Рамиль © (18.08.04 12:00)
А чем вам не нравится эта строка?
JUS (2004-08-18 12:02:00) [18]:)
Понял
Рамиль (2004-08-18 12:00:00) [19]
> TSoldat.Create.TX:=X;
И с каких это пор конструктор записью является? Или он у тебя объект?
Рамиль (2004-08-18 11:59:00) [20]Где ты ссылку на объект возьмешь?..