- •Курсовая работа
- •Часть I. Разработка гипотетической машины.
- •1.Цель работы Целью данной курсовой работы является изучение стандартных макросредств ассемблера ibm pc.
- •2.Задание
- •3.Введение
- •4.Постановка задачи
- •5.Разработка алгоритма
- •Задачи удаления лишних знаков препинания и определения длины каждого слова не являются сложными и их можно реализовать не разбивая их на подзадачи.
- •BeginProg – Инициализация программы. Здесь производится привязка сегментных регистров к соответствующим сегментам.
- •6.Алгоритм
- •7.Результаты
- •8.Листинг программы
- •Часть II. Самостоятельная работа
- •Основные понятия и определения.
- •Описание типов и экземпляров объектов
- •Скрытые поля и методы.
- •Как сказано выше приватные поля и методы должны располагатся после общедоступных. Директива public позволяет, если это удобно, расположить их наоборот.
- •Наследование и переопределение .
- •Статические и виртуальные методы.
- •Виртуальные методы и полиморфизм.
- •Совместимость объектных типов.
- •Преимущества и недостатки виртуальных методов.
- •Заключение
- •Литература
Описание типов и экземпляров объектов
Переменные объектных типов - экземпляры объектов – также как и записи представляют собой комдбинированные структуры данных. По внешнему виду описания они также похожи на записи. Первым синтаксическим отличием является использование ключевого слова object вместо record.
НапримерЮ в простейшем случае, положение шахматной фигуры на доске с помощью объектного кода может быть описано:
Type
TPosition = object
Column : TColumns;
Rows : TRows;
end;
где типы TСolumns и TRows имеют следующий вид:
Type
TColumns = ‘a’..’h’ ;
TRows = 1 ..8 ;
Второе отличие состоит в том, что объект может включать методы. Чтобы ОО – методология работала четко, требуется чтобы объекты сами выполняли все действия с помощью своих методов. Эти жесткие требования удовлетворяют требованию структурного программирования. Т.о. для любого действия , выполняемого над информационными полями объекта, должен быть написан отдельный метод. В программе описания заголоаков методов располагаются после описаний информационных полей объекта и будут выглять например так:
TPosition = object
Column : TColumns;
Row : TRows;
procedure Init ( Cl : TColumns; Rw : TRows);
function GetRows : TRows;
end;
В разделе типов при описании объектных типов указываются только заголовки методов. Полное же описание методов – их тела – указыватся в разделе объявления процедур и функций.
procedure TPosition.Init ( Cl : TColumns; Rw : TRows);
begin
Column:=Cl;
Rows:=Rw;
end;
function TPosition.GetRows : TColumns;
begin
GetRows:=Column;
end;
Важной особенностью оптсания реализации методов является то, что доступ к информационным полям Column и Row объекта TPosition , которому принадлежат определяемые методы Init, GetRow осуществляется так, как еслибы операторные блоки методов были окружены невидимым оператором with.
Это вытекает из правил области действия (сферы видимости) полей и методов объекта, согласно которым они (поля иметоды) разделяют одну и ту же область действия, несмотря на то, что могут быть описаны в различных частях программы.
Если какой-либо экземпляр объектного типа ObjVar вызывает принадлежащий ему метод Method , то выполняется неявный оператор:
with ObjVar do Method
Наптимер при вызове KingPos.Init ( ‘e’ , 1 ) текст прцедуры TPosition.Init будет трактоватся так:
procedure TPosition.Init ( Cl : TColumns; Rw : TRows);
begin
with KingPos do
begin
Column:=Cl;
Rows:=Rw;
end;
end;
На самом деле текст процедуры TPosition.Init не изменится в зависимости от вызова, как показано выше. Это показано для объяснения смысла происходящих действий. В действительности, в заголовках метода всегда присутствует невидимый формальный параметр с индетификатором Self , которому при вызове метода в качестве фактического параметра неявно передается имя конкретного экземпляра объекта. Параметр Self фактически является 32-ух разрядным указателем на экземпляр объекта , осуществляющего вызов метода.
Структуру невидимых описаний можно представить следующим образом:
procrdure MethodName ( Self : Pointer; др. параметры);
begin
with Self do
begin
Операторы метода
end;
end;
Следует заметить , что хотя Self и присутсвует в неявном виде, допускается использовать его и явно:
procedure TPosition.Init ( Cl : TColumns; Rw : TRows);
begin
Self .Column:=Cl;
Self .Rows:=Rw;
end;
Однако применять Self рекомендуется только в случае необходимости, например для устранения неоднозначности в использовании идентификаторов.
