Вниз
Скачать: CL | DM;

Вопрос по созданию класса   Найти похожие ветки 

← →
leonidus   (2004-11-02 10:18) [0]

Задали курсовик по ООП, в принцопе все сделал но столкнулся с формальной проблемой.

Создаю класс:

//начало описания класса
type
TAutomobile=class

 Napr_Grad:word; //поле направления движения
 Name:string; //поле именя владельца
 ID:word; //уникальный идентификатор автомобиля
 private
  function GetTecV:real;
  procedure SetTecV(TecV:real);
 public
 //для поля TekV по условию надо предложить модификаторы  
 // доступа, я так предположил это именно GetTekV и SetTekV
 property TekV:real read GetTekV write SetTekV;

 //описание методов
 constructor Create(var command_str:string);
 procedure ChangeSpeed(delta:real);
 procedure Stop;
end;

Так вот, после компиляции выдается сообщение об ошибке "Cannot assign to a read-only property" с указанием на строку   property TekV:real read GetTekV write SetTekV;
Я не понимаю почему это свойство TekV вдруг только для чтения и я его не могу изменить впроцедуре SetTecV?

Знатоки ООП, подсажите пожалуйста.


← →
Семен Сорокин ©   (2004-11-02 10:23) [1]

function GetTecV:real;
 procedure SetTecV(TecV:real);
public
//для поля TekV по условию надо предложить модификаторы  
// доступа, я так предположил это именно GetTekV и SetTekV
property TekV:real read GetTekV write SetTekV;

:))


← →
TUser ©   (2004-11-02 10:30) [2]

Не гони ( :)) - нормально все компилится. И ошибка эта не на таких строках возникает.

PS. А здесь у тебя, кстати, будет - Field or method expected, т.к. Tec и Tek - это разные вещи.


← →
leonidus   (2004-11-02 11:03) [3]

да, сори на опечатку, это дело я исправил но теперь другая фишка, на строке function GetTekV:real;
пишет "Unsatisfied forward or external declaration" ...


← →
PVOzerski ©   (2004-11-02 11:06) [4]

Значит, в описании класса исправил, а в implementation забыл.


← →
leonidus   (2004-11-02 11:09) [5]

да нет не забыл, вот код, в нем вообще нет описания ни GetTecV ни SetTecV, они вообще по условию ничего делать не должны - просто быть. Это же учебный пример.
 

implementation

constructor TAutomobile.Create(var command_str:string);
begin
command_str:=paramstr(1);
end;

procedure TAutomobile.ChangeSpeed(delta:real);
begin
TekV:=TekV+delta;
end;

procedure TAutomobile.Stop;
begin
TekV:=0;
end;


← →
PVOzerski ©   (2004-11-02 11:28) [6]

Ну уж если ты пишешь, что это функции - изволь довести это обстоятельство до конца. Сам же пишешь: они должны быть. Хотя бы abstract, хотя это совсем чушь по смыслу будет. Либо уж "перевешивай" свойства на переменные.


← →
leonidus   (2004-11-02 13:10) [7]

Ну я тут не виноват что ни описания функции GetTekV ни описания процедуры SetTekV в программе нет, по тому что в условии задачи написано "для поля TekV предусмотреть модификаторы доступа". Я вообще-то до конца и не понял что это за модификаторы, но интуитивно показалось что это как раз read и write. Или може надо просто в implementation написать все таки эту функцию и процедуру... но тогда что у них внутри должно быть, какова их функция?


← →
TUser ©   (2004-11-02 13:32) [8]


> Ну я тут не виноват что ни описания функции GetTekV ни описания процедуры SetTekV в программе нет

LOL. Борланд с Биллом Гейтсом виноваты, наверное


← →
leonidus   (2004-11-02 14:14) [9]

ну нет конечно, просто я не врубаюсь что от меня хотят в этими модификаторами


← →
Palladin ©   (2004-11-02 17:46) [10]

хм, действительно, как приятно было бы программировать еслиб все это сводилось лишь к описанию интерфейса...


← →
leonidus   (2004-11-03 07:57) [11]

Ну это конечно теоретическая задача... все таки подскажите как поступить.


← →
leonidus   (2004-11-03 08:38) [12]

короче говоря вот это:

function TAutomobile.GetTekV:real;
begin
end;

procedure TAutomobile.SetTekV(TekV:real);
begin
end;

спасло отца русской демократии:)



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.023 c
1-1099552404
Владимир
2004-11-04 10:13
2004.11.21
OLE Contener


14-1099347199
quickblack
2004-11-02 01:13
2004.11.21
Загрузка на почту


1-1099640079
denis24
2004-11-05 10:34
2004.11.21
dbgrid....title


4-1097650089
MegaVolt
2004-10-13 10:48
2004.11.21
Как освободить память из под файла отображенного в память?


14-1098946507
1008
2004-10-28 10:55
2004.11.21
Я уж и забыл, что такое от души посмеяться




   Наверх