IPB
ЛогинПароль:

 
 Ответить  Открыть новую тему 
> Классы, Delphi
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 32
Пол: Мужской

Репутация: -  0  +


Вобщем хочу в игре нечто типа законов физики. Создал главный класс и от него породил потомков. Примерно так:

type Main=class
private
F, m, g:single;//F-сила тяжести, m- масса, g-постоянная,

constructor Init;
procedure Process;
procedure Draw;

end;

Если я где-нибудь в главном классе пропишу, что F:=m*g, это будет считаться для потомков?
И если да, то для каждого потомка будет находится своя F (m у всех потомков разная) ?

P.S. Может не четко задал вопрос. smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Цитата
Если я где-нибудь в главном классе пропишу, что F:=m*g, это будет считаться для потомков?
Не совсем... Главный класс, по большому счету, вообще ничего не знает про потомков... Чтобы он узнал - надо использовать виртуальные функции...

Ты бы хотя бы 2-3 потомка показал, и заодно способ, которым ты хочешь использовать (и вычислять) эту самую F ...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






Хотя, можно сделать проще:
type
TMain=object
private
m, g:single;

public
constructor Init(mass: single);
function F: single;
end;


TSecond = object(TMain)
public
constructor Init(mass: single);
end;

constructor TMain.init(mass: single);
begin
m := mass; g := 9.8;
end;
function TMain.F: single;
begin
result := m * g;
end;

constructor TSecond.init(mass: single);
begin
inherited init(mass);
end;


var
_one: TMain;
_two: TSecond;

begin
_one.init(14);
_two.init(25);
writeln(_one.F():10:4);
writeln(_two.F():10:4);
end.

Прогони и посмотри, ЧТО считается ...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Новичок
*

Группа: Пользователи
Сообщений: 32
Пол: Мужской

Репутация: -  0  +


Про виртуал забыл написать.
Пока у меня один потомок. И дальнейшее представляю смутно.

type TVova=class(Main)
Speed:Single;
UpDown:byte;

constructor Init;
procedure Process;override;
procedure Draw;override;
end;

constructor Init;
begin //если я в конструкторе главного запишу F:=g*m, то здесь уже будет само считаться?
g:=9.8;
m:=3000;
end;

Я без классов-то уже все делал, но так я сам в коде теряюсь и тяже что-либо найти.=)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 




- Текстовая версия 21.10.2017 22:30
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"