Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

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




 

Задание 2.

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

Задание 3.

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


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

  Рассмотрено на заседании цикловой комиссии «Информатики и программирования» Протокол № __ от «__»_____________2012 г. Председатель цикловой комиссии _______________________ Н.С. Васьковцова

 

ЛАБОРАТОРНАЯ РАБОТА №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 Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...