Краткие теоретические сведения 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Краткие теоретические сведения



В языке UML отношение наследования на диаграмме классов обозначается сплошной линией с незакрашенной стрелкой на конце, направленной от класса-потомка к классу-предку (рис. 3.1).

 

Класс-потомок
Класс-предок

 

Рис. 3.1. Изображение отношения обобщения

на UML -диаграмме

 

В качестве примера отношения обобщения рассмотрим отношение между базовым классом Человек и производными классами
Ст у дент и Сотрудник (рис. 3.2).

Рис. 3.2. Отношение обобщения между классами Человек и Студент

В базовом классе Человек в качестве атрибутов указаны общие для всех людей характеристики: возраст, фамилия, имя, отчество, записанные как защищенные с тем, чтобы их можно было унаследовать
в производных классах, и методы для работы с этими атрибутами.
Производные классы добавляют к унаследованным из класса Человек
атрибутам свои, специфичные для этих классов атрибуты и методы.

Порядок выполнения работы

 

1. Изучить теоретические сведения и примеры, представленные в гл. 8 «Наследование» учебного пособия В. В. Вдовенко «Разработка приложений на языке С #»(см.с. 167–187).

2. Изучить возможности языка UML для представления классов.

3. Ответить на контрольные вопросы.

4. Разработать классы в соответствии с вариантом практического задания и создать консольное приложение.

5. Разработать UML -диаграмму классов для созданного приложения

6. Составить отчет в электронном виде, который должен содержать титульный лист, цель лабораторной работы, задание, ответы на контрольные вопросы, листинг программы и результаты ее работы.

Контрольные вопросы и задания

1. Дайте определение простого наследования классов.

2. Запишите объявление производного класса на языке C#.

3. В чем состоит различие между базовым и производным классами?

4. Приведите синтаксис описания наследования классов
в общем виде. Проиллюстрируйте его фрагментом программы на языке C#.

5. Может ли производный класс использоваться в качестве
базового для другого производного класса?

6. В каком порядке вызываются конструкторы в иерархии классов?

7. Каким образом выполняются создание и инициализация объектов производного класса?

8. Какие функции называются виртуальными? Могут ли методы-свойства класса быть виртуальными?

9. Какие особенности синтаксиса записи виртуальных функций в базовом и производных классах вам известны?

10. Опишите обработку вызова виртуальной функции.

11. Какой принцип ООП реализуется с помощью виртуальных функций?

12. Дайте определение абстрактного класса. Можно ли создавать объекты абстрактного класса?

13. Какой класс библиотеки FCL является базовым для всех
остальных классов?

14. Каким образом можно выполнить замещение методов класса System. Object в производных классах?

15. В чем состоят особенности доступа к членам класса, объявленным со спецификатором protected?

16. Каким образом отношение наследования обозначается на диаграммах классов в языке UML?

17. Найдите в приведенном ниже фрагменте программы ошибки, связанные с реализацией механизма наследования классов и исправьте их:

class A{ int x = 1; }

   class B: A

   {

       int y = 2;

       void show_sum()

       {

           Console.WriteLine("x + y =" + x + y);

       }

   }

Варианты практических заданий

При выполнении этих заданий требуется написать законченную программу, в которой реализуется простое наследование классов.
В программенеобходимо описать базовый и производные классы.
Базовый класс (возможно, абстрактный) с помощью виртуальных или абстрактных методов и свойств должен задавать интерфейс дляпроизводных классов. Во всех классах следует переопределить метод Equals, чтобы обеспечить сравнение значений, а не ссылок. Функция Main должна содержать массив из элементов базового класса, заполненный ссылками на производные классы. В этой функции должно демонстрироваться использование всех разработанных элементов классов. Также необходимо построить UML -диаграмму классов.

1. Создать абстрактный класс Vehicle (транспортное средство).
На его основереализовать классы Plane (самолет), Саr (автомобиль)
и Ship (корабль). Классыдолжны иметь возможность задавать и получать координаты и параметры средств передвижения (цена, скорость, год выпуска и т. п.) с помощью свойств. Для самолета должна быть определена высота, для самолета и корабля – количество пассажиров, для корабля – порт приписки. Динамические характеристики задать с помощью методов.

2. Создать иерархию классов Person – Student – Teacher. Каждый класс должен содержать свойства, а также виртуальную функцию Print и переопределенную функцию ToString(). Основная программа должна создавать массив объектов Person или их наследников, после чего выдавать его на экран. У каждого объекта класса Teacher должен быть список объектов класса Students, которыми он руководит,
у каждого объекта класса Student – объект класса Teacher, который им руководит.

3. Создать абстрактный класс Персона. На его основе реализовать классы Студент, Преподаватель, Заведующий кафедрой. Класс Персона должен содержать атрибуты и методы, общие для производных классов. Основная программа должна создавать массивы объектов производных классов и выводить их на экран.

4. Создать абстрактный класс Персона. На его основе реализовать классы Служащий, Рабочий, инженер. Класс Персона должен содержать атрибуты и методы, общие для производных классов. Основная программа должна создавать массивы объектов производных классов и выводить их на экран.

5. Создать иерархию классов Кадры–Рабочий–Инженер–Администрация. В каждом классе должны быть свойства, а также виртуальная функция Print и переопределенная функция ToString(). Основная программа должна создавать массивы объектов производных классов и выводить их на экран.

6. Создать иерархию классов Организация–Страховая компания–Завод. Классы должны содержать поля для описания свойств объектов и методы для работы с ними. Основная программа должна создавать массивы объектов производных классов и выводить их на экран.

7. Создать иерархию классов Печатное издание–Книга–Учебник–Журнал. Классы должны содержать поля для описания свойств объектов и методы для работы с ними. Основная программа должна создавать массивы объектов производных классов и выводить их на экран.

8. Создать абстрактный класс Испытание. На его основе реализовать классы Тест, Экзамен, Выпускной экзамен. Класс Испытание должен содержать атрибуты и методы, общие для производных классов. Основная программа должна создавать массивы объектов производных классов и выводить их на экран.

9. Создать иерархию классов Товар–Игрушка–Продукт–Молочный продукт. Класс Товар должен содержать атрибуты и методы, общие для производных классов. Основная программа должна создавать массивы объектов производных классов и выводить их на экран.

10. Создать абстрактный класс Документ. На его основе реализовать классы Квитанция, Накладная, Счет. Класс Документ должен содержать атрибуты и методы, общие для производных классов. Основная программа должна создавать массивы объектов производных классов и выводить их на экран.

11. Создать абстрактный класс Транспортное средство. На его основе реализовать классы Автомобиль, Поезд, Экспресс. Класс Транспортное средство должен содержать атрибуты и методы,
общие для производных классов. Основная программа должна создавать массивы объектов производных классов и выводить их на экран.

12. Создать иерархию классов Двигатель, Двигатель внутреннего сгорания, Дизель, Реактивный двигатель. Класс Двигатель должен содержать атрибуты и методы, общие для производных классов. Основная программа должна создавать массивы объектов производных классов и выводить их на экран.

13. Создать абстрактный класс Государство. На его основе реализовать классы Республика, Монархия, Королевство. Класс Государство  должен содержать атрибуты и методы, общие для производных классов. Основная программа должна создавать массивы объектов производных классов и выводить их на экран.

14. Создать абстрактный класс Животное. На его основе реализовать классы Млекопитающее, Парнокопытное. Класс Животное должен содержать атрибуты и методы, общие для производных классов. Основная программа должна создавать массивы объектов производных классов и выводить их на экран.

15. Создать иерархию классов Корабль–Пароход–Парусник– Корвет. Класс Корабль должен содержать атрибуты и методы, общие для производных классов. Основная программа должна создавать массивы объектов производных классов и выводить их на экран.

16. Создать иерархию классов Автомобиль–Грузовик–Автобус–Легковой автомобиль. Базовый класс Автомобиль должен содержать атрибуты и методы, общие для производных классов.
Основная программа должна создавать массивы объектов производных классов и выводить их на экран.

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

18. Создать иерархию классов геометрических фигур
Многоугольник–Прямоугольник–Квадрат–Треугольник. Базовый класс Многоугольник должен содержать атрибуты и методы, общие для производных классов. В производных классах следует определить методы для вычисления площади этих фигур.

19. Создать абстрактный класс Вычислительная сеть. На его основе реализовать классы Локальная сеть, Глобальная сеть. Класс Вычислительная сеть должен содержать атрибуты и методы, общие для производных классов. Основная программа должна создавать массивы объектов производных классов и выводить их на экран.

20. Создать абстрактный класс Программный продукт. На его
основе реализовать классы  Архиватор, Среда программирования, Текстовый редактор. Класс Программный продукт должен содержать атрибуты и методы, общие для производных классов. Основная программа должна создавать массивы объектов производных классов и выводить их на экран.

21. Создать иерархию классов Электронная вычислительная
машина
, Персональный компьютер, Ноутбук. Класс Электронная
вычислительная машина
должен содержать атрибуты и методы, общие для производных классов. Основная программа должна создавать массивы объектов производных классов и выводить их на экран.

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

23. Создать иерархию классов Выпускник вуза, Бакалавр, Магистр, Инженер. Класс Выпускник вуза должен содержать атрибуты и методы, общие для производных классов. Основная программа должна создавать массивы объектов производных классов и выводить их на экран.

24. Создать классы библиографических описаний книг СВоо k,
статей CArticle, а также класс библиографических описаний CBibliographicCard, который будет содержать атрибуты и методы, общие для обоих классов. Библиографическое описание книг должно содержать фамилию, имя, отчество автора, название, год издания. Библиографическое описание журнальных статей должно состоять из фамилии, имени, отчества автора, информации о наличии соавторов, названия журнала, в котором издана статья, года издания журнала, его номера и номеров страниц, на которых размещена статья.

25. Создать класс Рoint (точка), а также классы R ectangle (прямоугольник) и Circle (окружность), как потомки класса Рoint. Класс Рoint должен содержать атрибуты и методы, общие для обоих классов. Классы R ectangle и Circle должны содержать методы для вычисления площади этих фигур.

Лабораторная работа 4



Поделиться:


Последнее изменение этой страницы: 2022-09-03; просмотров: 150; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.145.2.184 (0.014 с.)