Задание для самостоятельного решения
Задание 2. Запишите класс с данными: группа, количество учащихся и методами, реализующими ввод значений полей и их вывод. Задание 3. Записать класс с данными: товар, цена и методами, реализующими ввод значений полей и их вывод. Учреждение образования «Гомельский торгово-экономический колледж» Белкоопсоюза
ЛАБОРАТОРНАЯ РАБОТА №2 «Наследование»
По дисциплине «Объектно-ориентированное программирование» Для групп П-21, П-22, П-23
специальность: 2-40 01 01 «Программное обеспечение информационных технологий» специализация: 2-40 01 01 35 «Программное обеспечение обработки экономической и деловой информации» 2-40 01 01 33 «Компьютерная графика»
Разработала преподаватель О.Л. Иткина
Гомель, 2012 Цель работы: изучить принцип наследования Теоретические сведения: Наследование Наследование – одна из основных составляющих объектно-ориентированного программирования. Это один из способов, дающих возможность многократно использовать существующие классы (существующий код) в качестве фундамента для новых. Если один класс создан на основе другого (или других), говорят, что он наследует свой базовый класс. Наследование позволяет создать в программе иерархию типов. Это необходимая предпосылка для написания объектно-ориентрованной программы. Но наследования самого по себе недостаточно для того, чтобы считать программу объектно-ориентированной!
Наследование – это свойство объектов, благодаря которому экземпляры класса могут иметь доступ к данным и методам, содержащимся в ранее определенном классе, без повторного их определения.
Это означает, что новые классы наследуют структуру и поведение существующих классов. Существующие классы называются базовыми классами, а новые классы, которые наследуют их структуру и поведение – подклассами, классами-потомками или производнымиклассами.
классы
Рис. 1 – Базовые и производные классы
Наследование моделирует связь "это – является". Следовательно, можно сказать, что производный класс в свою очередь является базовым классом. Чтобы проверить является ли определенная наследственная связь корректной, нужно ответить на вопрос: "Может ли производный класс быть использован вместо базового класса?". Если ответ отрицательный, значит связь некорректна. Например, "Ладья – Это Шахматная Фигура".
В языках программирования наследование означает: – с одной стороны, что поведение и данные, связанные с производным классом, являются расширением (то есть большим множеством) свойств, связанных с родительскими классами. Подкласс имеет все свойства родительского класса и, кроме того, дополнительные свойства; – с другой стороны, поскольку производный класс является более специализированной (более ограниченной) формой родительского класса, он в определенном смысле, будет сужением родительского класса. Класс может наследовать черты надклассов, отстоящих от него на несколько уровней. Например, собаки являются подклассом класса млекопитающих, а млекопитающие – подклассом типа животных. Следовательно, класс собак наследует свойства и всех млекопитающих, и всех животных.
Подклассы могут переопределять поведение, унаследованное от родительского класса. Например, класс утконосов переопределяет процедуру размножения, унаследованную от класса млекопитающих, поскольку утконосы откладывают яйца.
Рассматривая связь между типом данных, связанным с родительским классом, и типом данных, связанным с классом-потомком, можно утверждать следующее: – представители подкласса должны владеть всеми областями данных родительского класса; – представители подкласса должны обеспечивать, по крайней мере, через наследование (если нет явного переопределения), всех функциональных обязанностей родительского класса. У нового класса также могут появляться дополнительные обязанности; – представитель производного класса может имитировать поведение родительского класса и должен быть неотличим от представителя родительского класса в сходных ситуациях. Это описание идеализированного подхода к наследованию. Его можно формализовать в виде принципа подстановки: есть два класса А и В такие, что класс В является порожденным от класса А (подклассом) и может отстоять в иерархии на несколько ступеней. Для этих классов должна быть возможность подставить представителя класса В вместо представителя класса А в любой ситуации, причем без видимых последствий (изменений в поведении). К связи вида "класс – подкласс", для которой выполнен принцип постановки, часто применяется термин " подтип ". То есть подтип определяется в терминах поведения, а не структуры. Тип В является подтипом А, если в любой ситуации можно подставить экземпляр класса В вместо экземпляра класса А без каких-либо видимых изменений в поведении. Например, двумерный массив может быть определен как подтип типа "массив".
Ход работы: Задание 1. Наберите и проанализируйте программу. Определите в данной программе принципы наследования созданных классов. Объясните результаты выполнения программы. PROGRAM OO_Beispiel_02; USESCrt; TYPE Person-OBJECT Name, Vorname: STRING; Groesse: REAL; CONSTRUCTOR Init; PROCEDURE Einlesen; PROCEDURE Ausgeben; FUNCTION Gewicht: REAUVIRTUAL; END; { Методы для класса Person } CONSTRUCTOR Person.Init; { Применяется для инициализации используемых данных} BEGIN Name:- "; { Пустая строка }
Vorname:- "; Groesse:=0.0; END; PROCEDURE Person.Einlesen; BEGIN WriteLn('Фамилия'); ReadLn(Name); WriteLn ('Имя? '); ReadLn(Vorname); Write('PocT в метрах? '); ReadLn(Groesse); END; PROCEDURE Person.Ausgeben; BEGIN Write Ln; WriteLn ('Фамилия: '); Write(Name); Write(' Имя:'); Write(Vorname); WriteLn(' Идеальный вес: ',Gewicht:3:1, 'кг.'); END; FUNCTION Person.Gewicht: REAL; BEGIN Gewicht:- Groesse * 100 - 100; END; { Обьявление подкласса Frau } TYPE Frau- OBJECT(Person) FUNCTION Gewicht: REAL;VIRTUAL; END; { Описание методов для подкласса Frau } FUNCTION Frau.Gewicht: REAL; BEGIN Gewicht-Person.Gewlcht * 0.85; END; { Обьявление подкласса Mann } TYPE Mann- OBJECT(Person) FUNCTION Gewicht: REAL;VIRTUAL; END; { Описание методов подкласса Mann } FUNCTION Mann.Gewlcht: REAI; BEGIN Gewicht:- Person.Gewicht * 0.90; END; { Обьявление экземпляров} VAR Weiblich:Frau; Maennlich:Mann; CH:CHAR; BEGIN REPEAT CH:-ReadKey; CH:-UpCase(CH); UNTIL (CH - 'M') OR (CH - 'W'); Write Ln; IFCH-'W THEN WITH Weiblich DO BEGIN Einlesen; Ausgeben; END {THEN WITH} ELSE WITH Maennlich DO BEGIN Einlesen; Ausgeben; END; {ELSE WITH} ReadLn; { Ожидание нажатия клавиши Enter } END.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|