Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.11.21;
Скачать: 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 вся ветка

Текущий архив: 2004.11.21;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.025 c
1-1099664671
Сергей_
2004-11-05 17:24
2004.11.21
Сворачивание в tray: а память?


4-1097344970
dimon_programmer
2004-10-09 22:02
2004.11.21
Как электрикой правильно выставить значение на LPT


1-1099495453
Виктор
2004-11-03 18:24
2004.11.21
Добавить в PageControl TabSheet из программы.


14-1099478500
Danilka
2004-11-03 13:41
2004.11.21
Почему в школах так учат примерно понятно, но


14-1099649363
Jeer
2004-11-05 13:09
2004.11.21
теория России