Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.11.21;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.039 c
6-1094825758
Луарвик
2004-09-10 18:15
2004.11.21
idHTTP завешивает приложение...


1-1099577292
tchn
2004-11-04 17:08
2004.11.21
динамически создать компонент?


1-1099892230
qp
2004-11-08 08:37
2004.11.21
Нужно ли инициализировать динамический массив после выделения пам


1-1099827900
race1
2004-11-07 14:45
2004.11.21
перемешивание стека


14-1099246160
Delphin
2004-10-31 21:09
2004.11.21
Dynamic Skin Form





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский