Реферат Курсовая Конспект
Определение объектов - раздел Информатика, Оглавление Введение. Ошибка! Закладка Не Определена....
|
Оглавление
Введение. Ошибка! Закладка не определена.
Определение объектов. 1
Инкапсуляция. 2
Наследование. 3
Полиморфизм.. 6
Контрольные вопросы.. 8
Лекция №28
Объект, его свойства. Способы описания. Инкапсуляция, полиморфизм, наследование.
Объекты представляют собою упрощенное, идеализированное описание реальных сущностей предметной области. Если соответствующие модели адекватны решаемой задаче, то работать с ними оказывается намного удобнее, чем с низкоуровневым описанием всех возможных свойств и реакций объекта.Объектно-ориентированное программирование (ООП) – это методика разработки программ, в основе которых лежит понятие объекта как некоторой структуры, соответствующей объекту реального мира, его поведению. Задача, решаемая с использованием методики ООП, описывается в терминах объектов и операций над ними.
Type TPerson =Object
Name : string[20];
Address : string[40];
Procedure Init(n,a:string);
Procedure Show;
Function GetAddress:string;
End;
Var Person : TPerson;В примере объявлены два метода-процедуры Init и Show и метод-функции GetAddress. Метод Init предназначен для инициализации полей объекта, метод Show предназначен для вывода содержимого полей объекта на экран, метод GetAddress обеспечивает доступ к полю Address.
В программе методы определяются точно так же, как обычные процедуры и функции, за исключением того, что имя процедуры должно состоять из двух частей: имени объектного типа, которому принадлежит метод, и имени процедуры-метода, разделенных точкой. Так как несколько разных методов, относящихся к разным объектам, могут иметь одно и то же имя, используется такое обозначение.
Переменную, описываемую типом ИмяОбъекта, называют экземпляром объекта:VAR ЭкземплярОбъекта : ИмяОбъекта;В программе может быть сколько угодно экземпляров одного объекта. Вызов метода – это оператор (или выражение) вида:<ИмяЭкземпляраОбъекта>.<ИмяМетода>[<СписокФактическихПараметров>]Например,
Procedure TPerson.Init(n,a:string);
Begin
Name:=n;
Address:=a;
End;
При этом в заголовок метода можно не включать список формальных параметров. Наряду с обычными параметрами в описании методов можно использовать и поля объектов. Все данные объекта становятся автоматически глобальными по отношению к методам. Как правило, к данным объекта извне непосредственно не обращаются. Имена формальных параметров метода и имена полей данных этого объекта не должны совпадать.
Например, в результате выполнения Student.Show; будет применен метод Show, в результате чего на экран будет выведено содержимое полей объекта Student.
Вместо прямого доступа к полям следует использовать методы. Например,
Type TPerson =Object
Procedure Init(n,a:string);
Function GetName:string;
Function GetAddress:string;
Procedure SetAddress(NewAddress:string);
End;
В объявлении типа TPerson включены объявления методов. Метод Init обеспечивает инициализацию объекта. Метод SetAddress позволяет изменить значение поля Address, методы GetName и GetAddress – получить значения соответствующих полей.
Type
TPerson =Object
Procedure Init(n,a:string);
Function GetName:string;
Function GetAddress:string;
Procedure SetAddress(NewAddress:string);
Type
TPerson =ObjectFName : string[25];
FAddress : string[25];
End;
TStud =object( TPerson)FGroup : integer;
Procedure Print;End;
TProf =object(TPerson)FKaf : integer;
Procedure Print;End;
Var Pperson: ^TPerson;Pstud : ^TStud;Pprof : ^TProf;Для приведенного определения следующие инструкции присваивания являются верными:Pperson:= Pstud;
Pperson:= Pprof;
Описанное свойство указателей на объектные типы позволяет организовать список студентов и преподавателей как массив указателей на объектный тип TPerson, например, так: Spisok : array[1..n] of ^TPerson;
Тогда инструкция For i:=1 to n do Spisok[i]^.print; выведет на экран список преподавателей и студентов. Элемент массива может быть указателем на TStud или на TProf. Поэтому нельзя заранее сказать какой из методов будет вызван – TStud.Print или TProf.Print. Решение о выборе метода принимается во время выполнения программы.
Изложенный выше пример вывода студентов и преподавателей демонстрирует концепцию полиморфизма, которая состоит в том, что при применении метода к объекту используется именно тот метод, который соответствует типу объекта.
Ниже приведена программа, иллюстрирующая понятие «полиморфизм». Программа сначала формирует список, состоящий из объектов типа TStudent и Tprofessor, затем, применяя метод Print к элементам массива, выводит этот список на экран.
Program PolVir;
Const lenlist =10; {длина списка}
Type TPerson =Object
FName : string[30];
FAddress : string[40];
Procedure Init(Name, Address : string); {конструктор объекта}
Procedure Done; {деструктор объекта}
Procedure Print;
End;
TStudent =object( TPerson)
FGroup : integer;
Procedure Init(Name, Address : string; Group: integer);
Procedure Done; Procedure Print;
End;
TProfessor =object( TPerson)
FKafedra : string[30];
Procedure Init(Name, Address, Kafedra : string);
Procedure Done; Procedure Print;
End;
PStudent=^Tstudent;
PProf=^TProfessor;
Procedure TPerson.Init(Name, Address: string);
Begin
FName:=Name;
FAddress:= Address;
End;
Procedure TPerson.Done;
Begin
End;
Procedure TPerson.Print;
Begin
Writeln(FName);
Writeln(FAddress);
End;
Procedure TStudent.Init(Name, Address: string;Group:integer);
Begin
TPerson.Init(Name,Address);
FGroup:=Group;
End;
Procedure TStudent.Done;
Begin
End;
Procedure TStudent.Print;
Begin
TPerson.Print;
Writeln(‘гр. ’,FGroup);
End;
Procedure TProfessor.Init(Name, Address, Kafedra: string);
Begin
TPerson.Init(Name,Address);
FKafedra:=Kafedra;
End;
Procedure TProfessor.Done;
Begin
Inherited Done;
End;
Procedure TProfessor.Print;
Begin
TPerson.Print;
Writeln(‘каф. ’,Fkafedra);
End;
Var list : array[1..lenlist] of ^TPerson;
I: integer;
Begin {инициализация списка}
For i:=1 to lenlist do list[i]:=NIL;
{создать пять объектов и поместить в список}
List[1]:=new(PStudent,Init(‘Михаил Иванов’,’Лесной пр., д.29’,238);
List[2]:=new(PStudent,Init(‘Иван Жук’,’Весенняя ул., д.2, кв.17’,133);
List[3]:=new(PProf,Init(‘Игорь Манин’,’Некрасова ул., д.45, кв.8’,’ПОИТ’);
List[4]:=new(PProf, Init(‘Нина Непомнящая’,’Ромашковая ул., д.12,кв.10’,’ПОИТ’);
List[5]:=new(PStudent,Init(‘Кузьма Прутков’,’Долгобродская ул., д.2, корп.2, кв.17’,473);
{вывести объекты – элементы списка}
For i:=1 to lenlist do
If list[i] <> NIL then list[i]^.print;
{уничтожить объекты}
For i:=1 to lenlist do
If list[i] <> NIL then
Begin
Dispose(list[i],Done); {разрушение объекта}
List[i]:=Nil;
End;
Readln;
End.
Контрольные вопросы
– Конец работы –
Используемые теги: определение, объектов0.052
Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Определение объектов
Если этот материал оказался полезным для Вас, Вы можете сохранить его на свою страничку в социальных сетях:
Твитнуть |
Новости и инфо для студентов