рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

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

Наследование - раздел Информатика, Определение объектов Наследование – Это Порождение Новых Типов Объектов (Пото...

Наследование – это порождение новых типов объектов (потомков) из уже имеющихся типов объектов (предков или прародителей). Объекты Потомки получают по наследству все поля и методы объекта Предка, могут быть дополнены новыми полями и методами, и, кроме того, могут переопределять методы объекта Предка, сохраняя или изменяя при этом у одноимённых методов списки формальных параметров и типы возвращаемых значений. Поля объекта Предка в объекте Потомке заменять нельзя.Любой метод объекта Предка может быть вызван в любом методе объекта Потомка. В этом случае перед именем вызываемого метода указывается имя типа объекта Предка.При вызове метода прямого Предка в версии Турбо Паскаль 7.0 достаточно предварительно указать ключевое слово INHERITED(унаследованный). Синтаксически наследование выражается следующим образом:Type ИмяОбъектаНаследника= OBJECT(ИмяОбъектаПредка) Новые поля объекта наследника; Новые методы объекта наследника; END;Продолжим рассмотрение примера 1. При помощи типа объекта TypeWin можно задавать значения координат для указания позиции выводимого элемента. Добавим новые действия: а) установить значение выводимого элемента и б) вывести элемент с заданной позиции на экран.Добавим также новые поля для обозначения выводимых элементов. Выводить будем символ или строку. Определим типы объектов наследников для выполнения этих действий.{Для символа}Type TypeSym = OBJECT(TypeWin)Ch:char;Procedure INIT1(ax,ay:integer; ach:char);Procedure SHOW1;END;Procedure TypeSym.INIT1;BeginInherited INIT1(ax,ay);Ch:=achEnd;Procedure TypeSym.SHOW1;BeginGoToXY(x,y);Writeln(ch)End;{Для строки}Type TypeStr = OBJECT(TypeWin)S : String;Procedure INIT1(ax,ay:integer; as:char);Procedure SHOW1;END;Procedure TypeStr.INIT1;BeginInherited INIT1(ax,ay);S:=asEnd;Procedure TypeStr.SHOW1;BeginGoToXY(x,y);Writeln(s)End;{описание экземпляров новых типов объектов}Var och : TypeSym;Os : TypeStr;{пример возможных операторов после добавления новых объектных типов и новых описаний}BeginOch.INIT(10,5,50,20,red);Och.INIT1(10,2,’!’);Och.SHOW;Och.Show1;Os.INIT1(3,2,’&’);Os.Show1;ReadlnEnd.Из программы видно, что одноимённые методы INIT1 и SHOW1 содержатся в разных объектовых типах TypeSym и TypeStr. Связь объекта с нужным методом (размещение ссылок на методы) устанавливается в процессе компиляции, так что операторы och.init1, os.init1 (а также och.show1 и os.show1) выполняют вызов разных методов. Говорят, что происходит раннее связывание. Методы, с которыми осуществляется раннее связывание, называют статическими. Действие компилятора сводится к следующему:1) при вызове метода компилятор устанавливает тип объекта, вызывающего метод;2) в пределах найденного типа объекта компилятор ищет нужный метод, и, найдя его, назначает вызов метода;3) если метод в пределах типа объекта не найден, то компилятор устанавливает тип непосредственного прародителя и там ищет метод и т.д.;4) если вызванный метод нигде не найден, выдаётся сообщение об ошибке.Можно продолжить ряд наследования. Добавим поле, соответствующее цветовому атрибуту символа, и расширим методы INIT1 и SHOW1. Новый объектовый тип, производный от TypeSym, может быть представлен в следующем виде:
Type TypeSymCol=OBJECT(TypeSym)Color : Integer;Procedure INIT1(ax,ay,acolor:integer; ach:char);Procedure SHOW1;End;Procedure TypeSymCol.INIT1;BeginInherited Init1(ax,ay,ach);Color:=acolorEnd;Procedure TypeSymCol.SHOW1;BeginTextColor(color);Inherited Show1End;{Описание экземпляра нового объектового типа:}Var OchCol : TypeSymCol;Можно показать в окне на дисплее символ, используя экземпляр объекта Och, и символ с его цветовым атрибутом, используя экземпляр объекта нового объектового типа:Och.Init(10,5,50,20,red);Och.Init1(2,3,’о’);Och.Show; Och.Show1;OchCol.Init1(3,3,yellow,’!’);OchCol.Show1;Экземпляры объектов Och и OchCol вызывают различные одноимённые методы Init1 и Show1, причём метод Init1 в объектовых типах Och и OchCol имеет разное количество параметров.Замечание: программист должен следить за тем, в каком окне следует отображать экземпляры объектов, нужно ли создавать новое окно и нужно ли удалять окно с экрана.Пример 2.Рассмотрим пример использования объектов в графическом режиме. Опишем на нижнем уровне тип объекта для показа, стирания и передвижения по экрану точки с заданным цветовым атрибутом с и координатами изображения x,y. На следующем уровне добавим необходимые описания для выполнения тех же действий с окружностью. Наследуемые поля x,y будут соответствовать координатам центра окружности, добавленное поле r –радиусу окружности. Все методы в типе объекта наследника переопределим, сохранив за ними старые имена. На том же уровне наследования можно в дальнейшем расширить круг наследников, определив типы объектов для работы, например, с линией, прямоугольником и другими фигурами.Uses Crt, Graph;Var gd,gm:integer;Type Tp=ObjectX,y,c : integer;Procedure Init(ax,ay,ac:integer);Procedure Show;Procedure Hide;Procedure Moveto(dx,dy:integer);End; Procedure Tp.Init;BeginX:=ax; y:=ay; c:=acEnd;Procedure Tp.Show;BeginPutpixel(x,y,c);End;Procedure Tp.Hide;BeginPutpixel(x,y,Getbkcolor)End;Procedure Tp.Moveto;BeginDelay(1000); Hide;X:=x+dx; y:=y+dy;ShowEnd; Type Tc=Object(Tp)R : integer;Procedure Init(аx,ay,ac,ar : integer);Procedure Show;Procedure Hide;Procedure Moveto(dx,dy : integer);End;Procedure Tc.Init;BeginInherited Init(ax,ay,ac);R:=arEnd;Procedure Tc.Show;BeginSetcolor(c);Circle(x,y,r)End;Procedure Tc.Hide;BeginSetcolor(Getbkcolor);Circle(x,y,r)End;Procedure Tc.Moveto;BeginDelay(1000); Hide;X:=x+dx; y:=y+dy;ShowEnd;VarP : Tp;C : Tc;Gd,gm: integer;Begin {main program}Gd:=Detect;Initgraph(Gd,Dm,’bgi’);P.Init(100,120,yellow);P.Show; P.Moveto(50,50);Readln;C.Init1(200,300,Green,150);C.Show; C.Moveto(10,10);Readln;ClosegraphEnd.Благодаря связи, устанавливаемой между объектами при наследовании, возможны присваивания между переменными экземпляров объектов разных объектовых типов. Совместимыми по присваиванию являются кроме эквивалентных типов, объектовые типы, состоящие в отношении наследования от типа-потомка к родительскому типу, но не наоборот.O1:=Och; O1:=Os;{в прмере 1}P:=C; {в примере2}При этом копируются (присваиваются) только те поля, которые являются общими для обоих типов.

– Конец работы –

Эта тема принадлежит разделу:

Определение объектов

Введение Ошибка Закладка не определена... Определение объектов... Инкапсуляция...

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Наследование

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Все темы данного раздела:

Определение объектов
Объект – это структура, компонентами которой являются данные-поля объекта и процедуры (функции) - методы объекта. Все данные и методы инкапсулированы в одном объекте.Определ

Инкапсуляция
Инкапсуляция является важнейшим свойством объекта, на котором строится ООП. Инкапсуляция заключается в том, что объект скрывает свои детали, которые несущественны для исполь

Private
Name : string; Address : string; End; Директива private также используется для ограничения использован

Полиморфизм
Полиморфизм – это свойство родственных объектов (т.е. объектов, имеющих одного общего родителя) решать схожие по смыслу проблемы разными способами. Изменяя алгоритм того или ин

Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги