Форум: "Основная";
Текущий архив: 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.033 c