Урок 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
- 568 reads
vedro-compota
Sun, 03/05/2023 - 12:41
Permalink
засчитано, супер
засчитано, супер
_____________
матфак вгу и остальная классика =)