- •Лабораторная работа №1
- •Ход работы:
- •Лабораторная работа №2
- •Ход работы:
- •Задание для самостоятельного решения
- •Лабораторная работа №3
- •Ход работы:
- •Лабораторная работа №4
- •Динамическое создание объектов
- •Динамические объекты. Деструкторы
- •Задание для самостоятельного решения
- •Учреждение образования «Гомельский торгово-экономический колледж» Белкоопсоюза
- •Ход работы:
- •Задание для самостоятельного решения
- •Учреждение образования «Гомельский торгово-экономический колледж» Белкоопсоюза
- •Лабораторная работа №5
- •Procedure tForm1.Button2Click (Sender: tObject); {обработка массива}
- •Задание для самостоятельного решения
- •Учреждение образования «Гомельский торгово-экономический колледж» Белкоопсоюза
- •Лабораторная работа №6
- •Ход работы:
Ход работы:
Задание 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 – Базовые и производные классы
Наследование моделирует связь "это – является". Следовательно, можно сказать, что производный класс в свою очередь является базовым классом. Чтобы проверить является ли определенная наследственная связь корректной, нужно ответить на вопрос: "Может ли производный класс быть использован вместо базового класса?". Если ответ отрицательный, значит связь некорректна. Например, "Ладья – Это Шахматная Фигура".
В языках программирования наследование означает:
– с одной стороны, что поведение и данные, связанные с производным классом, являются расширением (то есть большим множеством) свойств, связанных с родительскими классами. Подкласс имеет все свойства родительского класса и, кроме того, дополнительные свойства;
– с другой стороны, поскольку производный класс является более специализированной (более ограниченной) формой родительского класса, он в определенном смысле, будет сужением родительского класса.
Класс может наследовать черты надклассов, отстоящих от него на несколько уровней. Например, собаки являются подклассом класса млекопитающих, а млекопитающие – подклассом типа животных. Следовательно, класс собак наследует свойства и всех млекопитающих, и всех животных.
Подклассы могут переопределять поведение, унаследованное от родительского класса. Например, класс утконосов переопределяет процедуру размножения, унаследованную от класса млекопитающих, поскольку утконосы откладывают яйца.
Рассматривая связь между типом данных, связанным с родительским классом, и типом данных, связанным с классом-потомком, можно утверждать следующее:
– представители подкласса должны владеть всеми областями данных родительского класса;
– представители подкласса должны обеспечивать, по крайней мере, через наследование (если нет явного переопределения), всех функциональных обязанностей родительского класса. У нового класса также могут появляться дополнительные обязанности;
– представитель производного класса может имитировать поведение родительского класса и должен быть неотличим от представителя родительского класса в сходных ситуациях.
Это описание идеализированного подхода к наследованию. Его можно формализовать в виде принципа подстановки: есть два класса А и В такие, что класс В является порожденным от класса А (подклассом) и может отстоять в иерархии на несколько ступеней. Для этих классов должна быть возможность подставить представителя класса В вместо представителя класса А в любой ситуации, причем без видимых последствий (изменений в поведении).
К связи вида "класс – подкласс", для которой выполнен принцип постановки, часто применяется термин "подтип". То есть подтип определяется в терминах поведения, а не структуры. Тип В является подтипом А, если в любой ситуации можно подставить экземпляр класса В вместо экземпляра класса А без каких-либо видимых изменений в поведении.
Например, двумерный массив может быть определен как подтип типа "массив".
