Основы программирования на C++, PASCAL
реализация методов осуществляется в разделе описаний, после объявления объекта, причем при реализации метода достаточно указать его заголовок без списка параметров, но с указанием объектного типа, методом которого он является. Еще раз отметим, что все это напоминает создание модуля, где те ресурсы, которые доступны при его подключении, прежде всего объявляются в разделе Interface, а затем реализуются в разделе Implementation. В действительности объекты и их методы реализуют чаще всего именно в виде модулей.
Во-вторых, все действия над объектом выполняются только с помощью его методов.
В-третьих, для работы с отдельным экземпляром объектного типа в разделе описания переменных должна быть объявлена переменная (или переменные) соответствующего типа. Легко видеть, что объявление статических объектов не отличается от объявления других переменных, а их использование в программе напоминает использование записей.
Наследование. Объектные типы можно выстроить в иерархию. Один объектный тип может наследовать компоненты из другого объектного типа. Наследующий объект называется потомком. Объект, которому наследуют, — предком. Если предок сам является чьим-либо наследником, то потомок наследует и эти поля и методы. Следует подчеркнуть, что наследование относится только к типам, но не экземплярам объекта.
Описание типа-потомка имеет отличительную особенность:
<имя типa-потомкa>=Object(<имя типа-предка>),
дальнейшая запись описания обычная.
Следует помнить, что поля наследуются без какого-либо исключения. Поэтому, объявляя новые поля, необходимо следить за уникальностью их имен, иначе совпадение имени нового поля с именем наследуемого поля вызовет ошибку. На методы это правило не распространяется, но об этом ниже.
Пример 4. Опишем объектный тип «Вычислитель» с методами «сложение», «вычитание», «умножение», «деление» (некоторый исполнитель) и производный от него тип «Продвинутый вычислитель» с новыми методами «степень», «корень n-й степени».
Type BaseType=Double;
Vichislitel=0bject
А,В,С: BaseType;
Procedure Init; {ввод или инициализация полей}
Procedure Slozh;
Procedure Vich;
Procedure Umn;
Procedure Delen
End;
NovijVichislitel=Object(Vichislitel)
N: Integers;
Procedure Stepen;
Procedure Koren
End;
Обобщая вышесказанное, перечислим правила наследования: