Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Я пытаюсь вникнуть в ООП, возникли вопросы. Помогите! [Delphi]


Страницы:   1 2

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:='транспотное средство', В TVaz Nameя закоментировал, значит по идее при нажатии 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]

Где ты ссылку на объект возьмешь?..


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо