Курсовая, контрольная работа. Примеры выполнения

Атомная энергетика. Ядерные реакторы АЭС. Атомный флот. Ядерное оружие

Атомные станции
Реактор БН-800
ВВЭР-1000
РБМК-1000
Ледоколы
Подлодки
Флот
Гражданский суда
Ядерное оружие
Ядерная физика
Плавучие АЭС
Авиация

Высшая математика

1 семестр
2 семестр
3 семестр
Задачи
Интеграл
Курсовая
Контрольная
Практикум
Алгебра
Матанализ
Геометрия
Карта сайта

 

 

Наследование

Любой объект может быть объявлен потомком ранее описанного объекта. В этом случае он наследует все данные и методы объекта-родителя и может дополнять их своими данными и методами. Например, объект TUNE, описывающий линию, можно объявить следующим образом:

Type
TPoint = object

end;{Конец описания объекта TPoint}
TLine = object(TPoint)
XE, YE: Integer;
{Координаты второго конца}
Procedure SetLineLocation(x1,y1,x2,y2:Integer);
{Задает новое положение линии на экране}
Procedure GetLineLocation(var x1l,у11,х21,у21:
Integer);
{Возвращает координаты линии}
Procedure SetLineVisible(Vsi: Boolean);
{выводит или гасит линию}
end; {Конец описания объекта TLINE)

При объявлении объекта-потомка за словом OBJECT в круглых скобках указывается имя объекта-родителя. У объекта может быть сколько угодно потомков, но только один родитель.

При объявлении объекта-потомка TLINE перечислены лишь те данные и методы, которых недостает в объекте-родителе TPOINT, остальные TLINE автоматически наследуют от своего родителя.

Таким образом, описание объекта-потомка TLINE эквивалентно такому описанию объекта TLINE_ANOTHER:

Type TLine_Another = object
X, Y: Integer; {Координаты начала линии}
Color: word; {Цвет линии}
Visible: Boolean;{Признак светимости}
XE,YE: Integer; {Координаты второго конца}
Procedure SetLocation(NewX, NewY: Integer);
  {Задает новое положение начала линии}
      Procedure SetColor(NewColor: word);
      {Устанавливает цвет линии}
  Procedure SetVisible(Vis: Boolean);
  {Выводит или гасит линию}
  Procedure GetLocationf(var XLoc, YLoc: Integer);
  {Возвращает координаты начала линии}
  Function GetColor: word;
  {Возвращает цвет линии}
      Function GetVisible: Boolean;
  {Возвращает признак светимости линии}
  Procedure SetLineLocatlon(x1,y1,x2,y2: Integer);
  {Задает новое положение линии на экране}
  Procedure GetLlneLocatlon(var x1l,у11,x2l,y2l:
Integer):
  {Возвращает координаты линии}
  Procedure SetLineVisible(Vis: Boolean);
  {Выводит или гасит линию}
end; {Конец описания объекта TLine_Another}

Из этого примера видно главное преимущество наследования: при описании объекта-потомка Вам нет необходимости заново описывать уже существующие в объекте-родителе поля и методы. Потомок просто использует их нужным образом для реализации требуемых от него действий. Все, в чем нуждается потомок, — это описать специфичные для него поля и методы, недостающие в объекте-родителе.

Наследование распространяется на любые объекты, в том числе и на объекты-потомки: если в качестве родителя указано имя объекта, который сам по себе является потомком, новый объект наследует все свойства своего родителя и все свойства своих прародителей. Таким образом, наследование обеспечивает создание дерева родственных объектов.

Как и любое другое дерево, дерево объектов имеет «корень» — объект, являющийся прародителем всех других объектов иерархии, и «ветви» -порожденные от него потомки. По мере передвижения от корня к ветвям и перехода с ветви на ветвь объекты разрастаются в своих размерах, присоединяя к себе все новые и новые поля и методы. Если иерархия объектов хорошо продумана, на каждом ее уровне к объекту-родителю добавляются только необходимые поля и методы, поэтому в таком разрастании на самом деле нет ничего плохого. Более того, компоновщик Турбо Паскаля тщательно проверит откомпилированную программу и удалит из нее все лишнее — в том числе в исполняемую программу (ЕХЕ-файл) не будут включены методы, которые по каким-либо причинам не используются в программе.

Механизм наследования — это, пожалуй, самое мощное свойство ООП. Без наследования объекты превращаются в простую комбинацию данных и подпрограмм, не дающую качественных преимуществ по сравнению с традиционными для Паскаля процедурами и модулями. Наоборот, механизм наследования позволяет строить библиотеку по принципу «от простого — к сложному». Вводя с помощью наследования новый объект в свою библиотеку, программист в максимальной степени использует уже созданные (и, возможно, отлаженные) ранее объекты. Такой принцип конструирования программ называется восходящим программированием. В отличие от нисходящего программирования, он не дает возможности поэтапного создания программы. Мелкие детали реализации объектов заслоняют собою генеральный алгоритм, поэтому при использовании ООП рекомендуется сочетание подходов: методами нисходящего программирования генеральный алгоритм расчленяется на ряд относительно крупных и законченных в смысловом отношении фрагментов (модулей), а реализация этих фрагментов может основываться на объектно-ориентированном программировании.

Другое применение ООП — это разработка коммерческих библиотек программирования. Прекрасным примером такого рода применения ООП является уже упоминавшаяся библиотека Turbo Vision.

7271f726
Основные понятия об информации и информатике