Урок 26 Задача 1
Primary tabs
Есть код:
type Cat = class // родительский класс public constructor create(nameValue: string); procedure sayHello(); function getName(): string; strict protected name: string; end; Tiger = class(Cat) public function getRoarStart(): string; // вернет строку для начала рыка рыка procedure roar(); // само рычание end; constructor Cat.create(nameValue: string); begin self.name := nameValue; end; procedure Cat.sayHello(); begin writeln('Привет, я ' + self.getName() + '!'); end; function Cat.getName(): string; begin result := self.name; end; function Tiger.getRoarStart(): string; begin result := self.getName() + ':'; end; procedure Tiger.roar(); begin writeln(self.getRoarStart() + ' rrrrrrrrrr!'); end; var CatItem: Cat; TigerItem: Tiger; begin CatItem := Cat.create('Мурка'); CatItem.sayHello(); TigerItem := Tiger.create('Шархан'); TigerItem.sayHello(); TigerItem.roar(); // рычит end.-- для двух элементов классов здесь применена избыточная область видимости, измените модификаторы доступа для этих элементов так, чтобы видимость их была минимальной достаточной для работы программы.
РЕШЕНИЕ:
type
Cat = class // родительский класс
public
constructor create(nameValue: string);
procedure sayHello();
strict protected
name: string;
{элемент доступен из метода класса и метода потомка класса}
function getName(): string;
end;
Tiger = class(Cat)
strict private
{элемент доступен из собственного метода}
function getRoarStart(): string; // вернет строку для начала рыка рыка
public
procedure roar(); // само рычание
end;
constructor Cat.create(nameValue: string);
begin
self.name := nameValue;
end;
procedure Cat.sayHello();
begin
writeln('Privet, ya ' + self.getName() + '!');
end;
function Cat.getName(): string;
begin
result := self.name;
end;
function Tiger.getRoarStart(): string;
begin
result := self.getName() + ':';
end;
procedure Tiger.roar();
begin
writeln(self.getRoarStart() + ' rrrrrrrrrr!');
end;
var
CatItem: Cat;
TigerItem: Tiger;
begin
CatItem := Cat.create('Murka');
CatItem.sayHello();
TigerItem := Tiger.create('Sharhan');
TigerItem.sayHello();
TigerItem.roar(); // рычит
readln();
end.- Log in to post comments
- 765 reads
vedro-compota
Sun, 03/05/2023 - 12:41
Permalink
засчитано, супер
засчитано, супер
_____________
матфак вгу и остальная классика =)