bigpo.ru
добавить свой файл
1


Министерство образования и науки Российской Федерации

Московский физико-технический институт

(государственный университет)


УТВЕРЖДАЮ

Проректор по учебной работе

__________ Ю.А. Самарский

“_____” ____________ 2008 г.


ПРОГРАММА


По курсу: ОЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ (факультетский)

по направлению: 511600

факультет: ФУПМ

кафедра: ИНФОРМАТИКИ

курс: 5

семестр: 10 экзамен: 10 семестр

лекции: 32 часа

практические занятия: 32 часа


ВСЕГО ЧАСОВ: 64


Программу составил: к.ф.-м.н., доцент Б.Г. Кухаренко


Программа обсуждена на заседании

Кафедры информатики

28 августа 2008 года


Заведующий кафедрой,

профессор И.Б.Петров

Объектно-ориентированное проектирование

I. Обеспечение повторного использования клиентских программ

  1. Диаграммы проектирования клиентских классов в С++ , Java и C#.

2. язык UML.

3. Использование паттернов проектирования при разработке архитектуры программ на основе Swing/JFC (Java 2) и WinForms (.NET).

II. Канонические паттерны проектирования в С++, Java и C#

1. Порождающие паттерны:

а) абстрактная фабрика Abstract Factory

б) строитель Builder

в) фабричный метод Factory Method

г) прототип Prototype

д) одиночка Singleton

2. Структурные паттерны:

а) адаптер Adapter

б) мост Bridge

в) компоновщик Composite

г) декоратор Decorator

д) фасад Facade

е) приспособленец Flyweight

ж) заместитель Proxy

3. Паттерны поведения:

а) цепочка обязанностей ChainOfResponsibility

б) команда Command

в) интерпретатор Interpreter

г) итератор Iterator

д) посредник Mediator

е) хранитель Memento

ж) наблюдатель Observer

з) состояние State

и) стратегия Strategy

к) шаблонный метод TemplateMethod

л) посетитель Visitor


III. Подходы к выбору паттернов для решения задач проектирования

1. Файловая система на основе TemplateMethod.

2. Файловая система на основе Composite + Proxy + ChainOfResp + Iterator + Visitor + Observer + Command.

3. Файловая система на основе 7 предыдущих паттернов + Decorator.


Задачи


  1. В экранную форму поочередно вводятся строки вида ‘LastName, FirstName’ либо ‘FirstName LastName’. Реализовать фабрику объектов вида {String ‘FirstName’, String ‘LastName’}.

  2. Создать класс Singleton используя статический метод.

  3. На основе Builder реализовать графический интерфейс (GUI), имеющий вид ListBox или CheckBox в зависимости от числа отображаемых объектов иерархической базы данных.

  4. На основе Prototype реализовать клонирование инверсного вектора.

  5. На основе Adapter реализовать GUI для формирования списка записей, обеспечивающий перенос выделенных записей в другой список.

  6. На основе Bridge реализовать GUI, представляющий список в ListBox и Table одновременно.

  7. На основе Composite реализовать иерархическое дерево субординации объектов бинарного отношения часть-целое.

  8. На основе Decorator реализовать GUI, подсвечивающий кнопки панели управления при продвижении курсора мыши.

  9. На основе Facade реализовать класс, обеспечивающий соединение с базой данных.

  10. На основе Flyweight реализовать GUI в виде экранной формы с папками, представляющими объекты.

  11. Реализовать класс ImageProxy, рисующий в экранной форме прямоугольник соответствующего размера в том месте, где будет загружено изображение класса Image.

  12. На основе ChainOfResponsibility реализовать GUI системы HELP, которая после выбора ключевого слова (команды) показывает содержимое графических либо текстовых файлов, а также предлагает выбрать родственные ключевые слова (команды).

  13. На основе Command реализовать GUI, принимающий и отменяющий команды фиксированного меню.

  14. На основе Interpreter реализовать класс Parser для разбора алгебраических выражений с операциями +, -, *, /.

  15. Реализовать класс Iterator для перечисления Enumeration объектов классов, полученных с помощью Wrapper из базовых типов данных.

  16. На основе Mediator реализовать GUI, обеспечивающий взаимодействие элементов управления в виде 2-х кнопок Button: Copy и Clear, и 2-х списков ListBox.

  17. Реализовать класс рисования прямоугольников в экранной форме и класс Memento для сохранения параметров предыдущего рисунка.

  18. На основе Observer реализовать форму с радио кнопками выбора цвета с отображением выбранного цвета в графическом окне и истории выбора цветов в виде списка ListBox.

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

  20. На основе Strategy реализовать класс с динамическим выбором алгоритма для представления графиков функций в декартовых либо полярных координатах.

  21. На основе паттерна Template реализовать абстрактный класс представления графиков функций без конкретизации типа используемых координат (функции масштабирования присутствуют).

  22. Реализовать класс Visitor для перечисления классов.



Список литературы

1. Preiss B.R. Data structures and algoritms with object-oriented design patterns in C++. John Wiley and Sons. 1997.

2. Preiss B.R. Data structures and algoritms with object-oriented design patterns in Java. John Wiley and Sons. 1998.

3. Preiss B.R. Data structures and algoritms with object-oriented design patterns in C#. John Wiley and Sons. 2001.

4. Александреску А. Современное проектирование на С++. Обобщенное программирование и прикладные шаблоны проектирования. Вильямс. Москва. 2002. 335 с.

5. Гамма Э., Хелм Р., Джонсон Р., Влиссидес Дж. Приемы объектно-ориентированного проектирования. Паттерны проектирования. Питер. Санкт-Петербург. 2003. 366 с.

6. Влиссидес Дж. Применение паттернов проектирования. Дополнительные штрихи. Вильямс. Москва. 2003. 136 с.

7. Стелтинг С., Маасен О. Применение шаблонов Java. Вильямс. Москва. 2002

8. Cooper J.M. The design patterns. Java companion. Addison-Wesley. Reading, MA. 1998. 218 p.