Здравствуйте! Собственно как он действует я знаю,но проблемы всё равно возникли. Есть несколько(5) классов,точнее иерархия классов. И при объявлении в родительском (самом первом) классе раздела Protected программа перестает компилироваться. Каждый класс описан в своём модуле. Не знаю где ошибка.
Ошибка возникает в самой програме (а не в модулях) в процедуру Create ,несоответствие праметров
program Ierarh;{Придумайте и разработайте иерархию классов на предмете
"средство передвижения". В иерархии должно быть не менее трех уровней,должны
определяться методы, должны быть использованы все модификаторы доступа,
и т.д. Кроме того, должен быть
написан тестирующий класс (или метод), демонстрирующий все возможности
иерархии}
{$APPTYPE CONSOLE}
uses
SysUtils,
vehicleunit in 'vehicleunit.pas',
carunit in 'carunit.pas',
sportunit in 'sportunit.pas',
familyunit in 'familyunit.pas',
BMW in 'BMW.pas';
//объявляем переменные
var vehicle:Tvehicle;
car:Tcar;
sportcar:TSportCar;
familycar:TFamilyCar;
sportcarBMW:TSportCarBMW;
Speed,PassCount,EngineCount:byte;
Transmission,Mark,Color:string;
begin
//работа с объектом Средство пережвижения
writeln('FOR VEHICLE:');
vehicle:=Tvehicle.Create(Speed,PassCount);
vehicle.TakePassanger;
vehicle.MoveFaster;
vehicle.MoveSlower;
vehicle.destroy;
//работа с объектом Машина
writeln('FOR CAR:');
car:=TCar.Create(Speed,PassCount,Color,Mark);
car.TakeColor;
car.TakeMark;
car.MoveFaster; //переопредёлёные методы
car.MoveSlower;
car.TakePassanger;
car.Destroy;
//работа с объектом СемейнМашина
writeln('FOR FAMILYCAR:');
FamilyCar:=TFamilyCar.Create(Speed,PassCount,Color,Mark);
FamilyCar.TakeColor;
FamilyCar.TakeMark;
FamilyCar.MoveFaster; //родительские методы
FamilyCar.MoveSlower;
FamilyCar.TakePassanger;
FamilyCar.Destroy;
//работа с объектом СпортМашина
writeln('FOR SPORTCAR:');
SportCar:=TSportCar.Create(Speed,PassCount,Color,Mark);
SportCar.TakeColor;
SportCar.TakeMark;
SportCar.TakePassanger; //переопределяем второй раз
SportCar.MoveFaster;
SportCar.MoveSlower;
SportCar.Destroy;
//работа с объектом СпортМашинаBMW
writeln('FOR SPORTCARBMW:');
sportcarBMW:= TSportCarBMW.Create(Speed,PassCount,Color,Mark);
sportcarBMW.TakeCost;
sportcarBMW.Destroy;
readln;
end.
Я ж написал тебе, что происходит: