Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Laby_po_OOP.doc
Скачиваний:
6
Добавлен:
01.03.2025
Размер:
2 Мб
Скачать
☆

Ход работы:

Задание 1. Наберите и проанализируйте программу. Определите в данной программе принципы работы созданных классов. Объясните результаты выполнения программы.

PROGRAM OO_Beispiel_01;

USES Crt;

{ Декларация типов объектов (классов) }

TYPE

Person-OBJЕСТ Name,

Vorname : STRING; PROCEDURE Einlesen; PROCEDURE Ausgeben; END;

{ Методы для класса "Person" }

PROCEDURE Person.Einlesen; BEGIN

Write('Фамилия ');

ReadLn(Name);

Write ('Имя');

ReadLn(Vorname); END;

PROCEDURE Person.Ausgeben; BEGIN

WriteLn;

Write ('Фамилия:');

Write(Name);

Wrlte (Имя: ');

WriteLn(Vorname); END;

{ Декларация экземпляров (Обьектов - переменных) }

VAR

Pers: Person;

BEGIN

Pers.Einlesen;

Pers.Ausgeben;

ReadLn; { Ожидание нажатия клавиши" Enter" }

END.

В программе объявляется класс "Person", которому поставлены в соответствие два поля — "Name" и "Forname" — и методы — "Einlesen" и "Ausgaben". Как видно из текста программы, методы только объявляются в декларации класса, а полностью специфици­руются (описываются) несколько позже. В таких спецификациях имя метода (процедуры или функции) предваряется префиксом —именем класса, к которому относится данный метод. Это необходимо, т.к. в разных классах могут использоваться методы, разные по содер­жанию, но одинаковые по именам. Без префикса привязка методов к своим классам была бы невозможной. В программе объявлен объект "Pers", принадлежащий классу "Person". В главной программе мето­ды "Einlesen" и "Ausgeben" применены к этому объекту "Pers".

Класс "Person" в определенном смысле может рассматриваться как класс верхнего уровня. Персоны могут обладать различными качествами, что позволяет выделять их из класса "Person". Так, совокупность персон (составляющих класс "Person") может быть по­делена на два подкласса — "Kraftfahrer" (водитель) и "Nichkraftfahrer" (неводитель). Объекты обоих подклассов имеют те же поля, что и объекты класса "Person": поле "Name" (фамилия) и " Vorname" (имя). Кроме того, для подклассов можно вывести допол­нительные поля, отсутствующие в классе верхнего уровня. Так, для класса "Person" можно объявить, что подкласс водителей имеет до­полнительные поля идентификатора водительских прав и марки ав­томобиля.

Задание для самостоятельного решения

Задание 2.

Запишите класс с данными: группа, количество учащихся и методами, реализующими ввод значений полей и их вывод.

Задание 3.

Записать класс с данными: товар, цена и методами, реализующими ввод значений полей и их вывод.

Учреждение образования «Гомельский торгово-экономический колледж» Белкоопсоюза

Рассмотрено на заседании цикловой комиссии «Информатики и программирования»

Протокол № __ от «__»_____________2012 г.

Председатель цикловой комиссии

_______________________ Н.С. Васьковцова

Лабораторная работа №2

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

по дисциплине «Объектно-ориентированное программирование»

для групп П-21, П-22, П-23

специальность:

2-40 01 01 «Программное обеспечение информационных технологий»

специализация:

2-40 01 01 35 «Программное обеспечение обработки экономической и деловой информации»

2-40 01 01 33 «Компьютерная графика»

Разработала преподаватель

О.Л. Иткина

Гомель, 2012

Цель работы: изучить принцип наследования

Теоретические сведения:

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

Наследование – одна из основных составляющих объектно-ориентированного программирования. Это один из способов, дающих возможность многократно использовать существующие классы (существующий код) в качестве фундамента для новых. Если один класс создан на основе другого (или других), говорят, что он наследует свой базовый класс. Наследование позволяет создать в программе иерархию типов. Это необходимая предпосылка для написания объектно-ориентрованной программы. Но наследования самого по себе недостаточно для того, чтобы считать программу объектно-ориентированной!

Наследование – это свойство объектов, благодаря которому экземпляры класса могут иметь доступ к данным и методам, содержащимся в ранее определенном классе, без повторного их определения.

Это означает, что новые классы наследуют структуру и поведение существующих классов. Существующие классы называются базовыми классами, а новые классы, которые наследуют их структуру и поведение – подклассами, классами-потомками или производными классами.

Б

Лодка

азовый класс

П

Парусная лодка

Моторная лодка

Подводная лодка

роизводные

к лассы

Рис. 1 – Базовые и производные классы

Наследование моделирует связь "это – является". Следовательно, можно сказать, что производный класс в свою очередь является базовым классом. Чтобы проверить является ли определенная наследственная связь корректной, нужно ответить на вопрос: "Может ли производный класс быть использован вместо базового класса?". Если ответ отрицательный, значит связь некорректна. Например, "Ладья – Это Шахматная Фигура".

В языках программирования наследование означает:

– с одной стороны, что поведение и данные, связанные с производным классом, являются расширением (то есть большим множеством) свойств, связанных с родительскими классами. Подкласс имеет все свойства родительского класса и, кроме того, дополнительные свойства;

– с другой стороны, поскольку производный класс является более специализированной (более ограниченной) формой родительского класса, он в определенном смысле, будет сужением родительского класса.

Класс может наследовать черты надклассов, отстоящих от него на несколько уровней. Например, собаки являются подклассом класса млекопитающих, а млекопитающие – подклассом типа животных. Следовательно, класс собак наследует свойства и всех млекопитающих, и всех животных.

Подклассы могут переопределять поведение, унаследованное от родительского класса. Например, класс утконосов переопределяет процедуру размножения, унаследованную от класса млекопитающих, поскольку утконосы откладывают яйца.

Рассматривая связь между типом данных, связанным с родительским классом, и типом данных, связанным с классом-потомком, можно утверждать следующее:

– представители подкласса должны владеть всеми областями данных родительского класса;

– представители подкласса должны обеспечивать, по крайней мере, через наследование (если нет явного переопределения), всех функциональных обязанностей родительского класса. У нового класса также могут появляться дополнительные обязанности;

– представитель производного класса может имитировать поведение родительского класса и должен быть неотличим от представителя родительского класса в сходных ситуациях.

Это описание идеализированного подхода к наследованию. Его можно формализовать в виде принципа подстановки: есть два класса А и В такие, что класс В является порожденным от класса А (подклассом) и может отстоять в иерархии на несколько ступеней. Для этих классов должна быть возможность подставить представителя класса В вместо представителя класса А в любой ситуации, причем без видимых последствий (изменений в поведении).

К связи вида "класс – подкласс", для которой выполнен принцип постановки, часто применяется термин "подтип". То есть подтип определяется в терминах поведения, а не структуры. Тип В является подтипом А, если в любой ситуации можно подставить экземпляр класса В вместо экземпляра класса А без каких-либо видимых изменений в поведении.

Например, двумерный массив может быть определен как подтип типа "массив".

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]