русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Практические задания


Дата добавления: 2015-07-09; просмотров: 1682; Нарушение авторских прав


Задание 1. Реализация взаимодействия классов на основе агрегации

Постановка задачи:

Разработанные в первом задании отдельные классы для графических примитивов необходимо модифицировать с целью реализации возможности их агрегационного взаимодействия. Для этого требуется ввести класс точек и заменить в классах для графических примитивов непосредственное использование свойств-координат объектами-точками.

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

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

2. Добавить новый класс для примитивов-точек, содержащий:

· два свойства для хранения координат точки;

· конструктор для инициализации свойств-координат и вывода сообщения о создании объекта (это будет использоваться в дальнейшем при проверке правильности вложенных вызовов конструкторов взаимодействующих классов);

· Set/Get-методы для доступа к координатам точки.

3. Внести следующие изменения в ранее созданный класс Окружность:

· заменить свойства-координаты одним свойством-точкой;

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

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

– вывод сообщения о создании объекта-окружности;

· в методе прорисовки окружности вместо прямого использования координат центра применить вызовы соответствующих методов класса точек;

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

4. Проверить работу приложения, обратив внимание на порядок создания взаимодействующих объектов.

5. Создать новый класс Кольцо, содержащий два свойства-окружности, два конструктора с выводом сообщения, а также методы прорисовки и перемещения.



6. Проверить работоспособность всех методов созданных классов.

7. Внести аналогичные изменения в классы Отрезок и Прямоугольник.

8. Самостоятельно придумать и реализовать 1-2 класса для манипуляций со сложными объектами, включающими более простые объекты Точка, Отрезок, Прямоугольник, Окружность; проверить работоспособность этих классов.

 

Задание 2. Создание и использование библиотеки классов для графических примитивов на основе принципа наследования.

Постановка задачи:

Требуется создать небольшую иерархию классов, описывающих основные графические примитивы (окружность, треугольник, отрезок, прямоугольник и т.д.). Корнем всей иерархии является класс TFigure, определяющий общие свойства и поведение всех объектов-примитивов: координаты базовой точки примитива, конструктор, методы доступа, абстрактные методы прорисовкиShow и перемещенияMoveTo. В каждом классе необходимо реализовать свой конструктор и методы прорисовки и перемещения. Кроме того, классы могут содержать методы, уникальные только для соответствующего поддерева, например – изменение радиуса окружности, изменение линейных размеров прямоугольника, поворот треугольника и т.д.

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

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

1. Открыть один из ранее созданных проектов и сохранить его в собственном каталоге.

2. В интерфейсный раздел модуля-библиотеки ввести описание класса TFigure, используя для задания абстрактных методов директиву abstractв заголовке метода.

3. Привести программную реализацию всех неабстрактных методов класса ТFigure(в конструкторе предусмотреть вывод сообщения об инициализации свойств-координат).

4. Создать класс окружностей TCircle как потомка класса TFigure с добавлением нового свойства – радиуса окружности, собственным конструктором, методом Show,методомMoveTo и новым методом изменения радиуса.

5. Дать программную реализацию конструктора дочернего класса окружностей, ОБЯЗАТЕЛЬНО начинающуюся с вызова конструктора родителя:

· inherited Create(параметры);

· в конце предусмотреть вывод сообщения о создании объекта

6. Дать программную реализацию остальных методов класса окружностей

7. В основном (демонстрационном) модуле предусмотреть создание объектов-окружностей, их перемещение и изменение радиуса.

8. Проверить работоспособность созданных классов.

9. На базе класса TCircle создать дочерний подкласс эллипсов добавлением свойства-полуоси. Реализовать свой конструктор и методы прорисовки и перемещения. Для поворота на 90 градусов ввести новый метод.

10. Проверить работоспособность созданных классов.

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

Контрольные вопросы

1. Какие способы взаимодействия классов являются основными?

2. В каких случаях между классами можно установить отношение агрегации?

3. Какие возможности дает использование механизма агрегации классов?

4. Приведите примеры агрегации и композиции объектов.

5. Какие шаги надо выполнить для программной реализации отношения агрегации?

6. Как необходимо строить конструкторы классов, взаимодействующих на основе агрегации?

7. Приведите примеры программной реализации композиции объектов.

8. Как графически задается отношение агрегации между классами?

9. В чем состоит отличие отношений агрегации и композиции?

10. В каких случаях между классами можно установить отношение наследования?

11. В чем состоит суть механизма наследования?

12. В чем состоят отличия агрегации и наследования?

13. Чем дочерние подклассы отличаются от своих родителей?

14. Что такое иерархия классов?

15. Чем множественное наследование отличается от простого?

16. В чем преимущества и недостатки множественного наследования?

17. Какие преимущества дает использование механизма наследования?

18. Как задается отношение наследования в разных языках?

19. Что происходит при отсутствии родительского класса в заголовке нового класса?

20. Приведите примеры иерархий классов.

21. Как изменяется механизм ограничения доступа к элементам класса при использовании наследования?

22. Какие правила надо соблюдать при реализации конструкторов дочерних классов?

23. Как вызываются родительские конструкторы в разных языках?

Примеры тестовых заданий

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

1. Какое правило используется для проверки возможности установления отношения агрегации между классами:

· объект А есть разновидность объекта В;

· объект А есть часть объекта В;

· объекты А и В являются экземплярами одного и того же класса;

· объект А имеет право вызывать методы объекта В.

2. Между какими классами можно установить отношение агрегации:

· Студент – Учащийся – Человек;

· Цилиндр – Двигатель – Автомобиль;

· Студент – Группа – Факультет;

· Упорядоченный список – Линейный список – Структура данных.

3. Какие утверждения относительно принципа агрегации являются правильными:

· агрегация применяется для отражения связей типа Часть – Целое;

· агрегация позволяет сводить более сложные объекты к более простым;

· агрегация основана на использовании полиморфных (виртуальных) методов;

· агрегация определяет правила ограничения доступа к элементам класса.

4. Какие из следующих фрагментов описания классов на языке DP реализуют агрегацию:

· TFio = class Fam, Name : string; . . . end;

TStudent = class Fio : TFio; Age : integer; . . . end;

· TFio = class Fam, Name : string; . . . end;

TStudent = class Age : integer; Ocenky : array [1..50] of byte; . . . end;

· TItem = class I : integer; s : string; . . . end;

TList = class Arrs : array [1..100] of string; . . . end;

· TItem = class I : integer; s : string; . . . end;

TList = class Arrs : array [1..100] of TItem; . . . end;

5. Какие объявления конструкторов класса отрезков Line являются правильными при реализации агрегации вида Point – Line в языке Java:

· Line (int x1, int y1, int x2, int y2);

· Line (Point p1, Point p2);

· Line (int x1, int y1, Point p2);

· Line (Point p1, int x2, int y2);

6. Какие утверждения относительно принципа наследования классов являются правильными:

· на основе родительского класса можно создать любое число дочерних классов;

· в дочерних классах унаследованные свойства и методы определять не надо;

· родительский класс является более общим, дочерний – более конкретным

· дочерний класс содержит больше свойств и методов по сравнению со своим родителем.

7. Какое правило используется для проверки возможности установления наследственной связи между объектами:

· объект А есть часть объекта В;

· объекты А и В являются экземплярами одного и того же класса;

· объект А имеет право вызывать методы объекта В;

· объект А есть разновидность объекта В.

8. Между какими классами можно установить наследственную связь:

· Упорядоченный список – Линейный список – Структура данных;

· Цилиндр – Двигатель – Автомобиль;

· Студент – Группа – Факультет;

· Студент – Учащийся – Человек.

9. Какие заголовки дочерних классов в языке Java являются правильными:

· class Stack extends List;

· class Ellipse extends Figure, Circle;

· class Student extends Object;

· class Car.

10. Какие уровни доступа могут иметь элементы классов:

· привилегированный (privileged);

· открытый (public);

· защищенный (protected);

· закрытый (private).

 




<== предыдущая лекция | следующая лекция ==>
Private | Переопределение методов. Полиморфные (виртуальные) методы


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.006 сек.