- •Курсовая работа
- •Часть I. Разработка гипотетической машины.
- •1.Цель работы Целью данной курсовой работы является изучение стандартных макросредств ассемблера ibm pc.
- •2.Задание
- •3.Введение
- •4.Постановка задачи
- •5.Разработка алгоритма
- •Задачи удаления лишних знаков препинания и определения длины каждого слова не являются сложными и их можно реализовать не разбивая их на подзадачи.
- •BeginProg – Инициализация программы. Здесь производится привязка сегментных регистров к соответствующим сегментам.
- •6.Алгоритм
- •7.Результаты
- •8.Листинг программы
- •Часть II. Самостоятельная работа
- •Основные понятия и определения.
- •Описание типов и экземпляров объектов
- •Скрытые поля и методы.
- •Как сказано выше приватные поля и методы должны располагатся после общедоступных. Директива public позволяет, если это удобно, расположить их наоборот.
- •Наследование и переопределение .
- •Статические и виртуальные методы.
- •Виртуальные методы и полиморфизм.
- •Совместимость объектных типов.
- •Преимущества и недостатки виртуальных методов.
- •Заключение
- •Литература
Скрытые поля и методы.
Часть полей и методов объектовых типов можно объявить как скрытые (приватные). Смысл введения скрытых компонент объектов заключается в ограничении области видимости идентификаторов этих компонент. Для этого используется служебное слово private, которое используется по следующей схеме:
Type
Object Type = object
Обычные поля и методы
private
Скрытые поля и методы
end;
Идентификаторы полей и методов, объявленных как скрытые, считаются известными (доступными) только в пределах программы или модуля , в которой содержится описание данного объектового типа. Вне модуля, содержащего такое описание( например, в программе, использующей этот модуль) , скрытые компоненты объектового типа неизвестны и недоступны, в то время как сам объектовый тип и его остальные компоненты считаются известными по обычным правилам.
Введение понятия скрытых компонент объектовых типов придает объектам дополнительное сходство с модулями. Это позволяет изолировать технические подробности реализации объектов от программ-потребителей, что способствует большей независимости программных единиц и служит добавочным средством контроля за использованием объектов.
Как сказано выше приватные поля и методы должны располагатся после общедоступных. Директива public позволяет, если это удобно, расположить их наоборот.
Type
Object Type = object
private
Скрытые поля и методы
public
Обычные поля и методы
end;
Наследование и переопределение .
Следующее важное свойство объектовых типов позволяет при построении нового объектного типа использовать некоторый ранее определенный объектовый тип.
Объектно-ориентированный стиль программирования позволяет определить новый объект, как потомок другого ранее определенного типа. Это означает, что новый тип автоматически получает все поля и методы ранее введенного типа, который в этом случае называется предком или родительским типом. В этом случае в определении типа-потомка должно быть указано имя родительского типа которое указывается в круглых скобках:
Type
Circle = object (point)
Radius :integer
End;
Задание родительского типа означает, что в объектовом типе Circle неявно присутствуют все поля из типа Point; аналогично для переменной этого нового типа доступны все методы из Point.
Описанное свойство объектовых типов называется наследованием и широко используется в объектно-ориентированном программировании. Один тип может являться предком для произвольного числа типов-потомков, в то время как любой объектовый тип может наследовать поля и методы только одного типа-родителя, который указывается в круглых скобках.
Тип потомок может, в свою очередь, выступать как предок по отношению к другому объектовому типу (типам).
Type
Ring = object (Circle)
Radius2:integer;
End;
Тип Ring наследует полн Radius из своего непосредственного родителя Circle, а также поля и методы из типа Pоint, который также считается (косвенным) предком для Ring. Длинна такой цепочки наследования никак не ограничивается.
Механизм наследования, являясь достаточно простым для понимания и использования , представляет широкие возможности при разработке программ. Имея несколько “базовых” объектовых типов (например, в интерфейсном разделе модуля) , можно на их основе конструировать новые объекты, добавляя в них новые поля и расширяя и/или переопределяя соответствующие методы. Отметим , что переопределять можно только методы; поля указанные в родительском типе ,безусловно, наследуются типом-потомком и не могут быть в нем переопределены. Кроме того, новый метод в типе-потомке может иметь совершенно другие параметры, нежели одноименный метод из типа-предка.
Дадим правило совместимости типов по присваиванию, действующее для случая объектовых типов. Это правило формулируется достаточно просто: совместимыми по присваиванию являются, кроме эквивалентных типов объектовые типы, состоящие в отношении наследования, причем присваивание может происходить в направлении от типа-потомка к родительскому типу, но не наоборот.
Наследование дочерними типами информационных полей и методов их родительских типов осуществляется по следующим правилам:
Информационные поля и методы родительского типа наследуются всеми еог дочерними типами независимо от числа промежуточных уровней иерархии.
Доступ к полям и методам родительских типов в рамках описания любых дочерних типов выполняется так, как будто - бы описаны в самом дочернем типе. Отсюда следует следущее правило.
Ни в однои дочернем типе не могут использоваться идентификаторы полей, совпадающие с идентификаторами полей какого – либо из родительских типов. Это же относится и к идентификаторам формальных параметров, указанных в заголовках методов.
Дочерний тип может доопределить произвольное число собственных методов и идентификаторых полей.
Любое изменение текста в родительском методе автоматически оказывает влияние на все дочерние типы, которве его вызывают.
В противоположность идентификаторым полям идентификаторы методов в дчерних типах могут совпадать с именами методов в родительских типах. В этом случае говорят , что дочерний метод подавляет одноименный ему родительский, и в рамках дочернего типа, приуказании такого метода, будет вызываться именно дочерний метод, а не родительский.
Важным аспектогм, касающимся наследования являются правила вызова наследуемых элементов:
При вызове метода компилятор сначала ищет метод , имя которого определено внутри типа объекта.
Если в типе объекта не определен метод с указанным в операторе вызова именем, то компилятор в поисках метода стаким именем , поднимается выше к непосредственно родительскому типу.
Вызываемый метод будет работать так, как он определен и компилирован для родительского типа , а не для дочернего.
Вызовы методов из нижеследующих по иерархии типов не допускаются.
