Объектно-ориентированный анализ и программирование

Курс для магистрантов первого года обучения направлений «Прикладная математика и информатика» и «Информационные системы и технологии». Курс посвящен объектно-ориентированным методам разработки программного обеспечения.

Консультация и прием заданий
17.01, 15:15 в 217.
Экзамен
18.01, 11:30, аудитория по расписанию.
Пересдача экзамена и прием заданий
26.01 в 14:30 в 217.

Задание 1

Скачать и запустить среду Фаро. Выполнить предлагаемый при первом запуске урок (PharoTutorial).

Задание 2

Добавить на экран кнопку, переключающую полноэкранный режим. Кнопка должна отображать текущее состояние. См. классы PluggableButtonMorph и DisplayScreen.

Задание 3

Многоэтажное здание с одним лифтом. На каждом промежуточном этаже расположены две кнопки вызова, соответствующие направлениям вверх и вниз, на первом и последнем — по одной кнопке. Внутри лифта расположены кнопки, задающие этажи, на которых нужно остановиться. В одном лифте могут ехать пассажиры, выходящие на разных этажах. Лифт может останавливаться на промежуточных этажах, чтобы забрать посетителей, едущих в том же направлении. Каждый посетитель входит в здание на первом этаже, проводит какое-то время внутри, возможно, перемещаясь между этажами, и покидает здание через первый этаж.

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

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

Задание 4

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

Программа должна допускать возможность реализации различных алгоритмов планирования (управления лифтами) и поддерживать возможность создавать посетителей с различным поведением. Программа должна содержать минимум две реализации алгоритма планирования и два варианта поведения посетителя, в одном из которых посетитель запрашивает свои действия у пользователя (куда ехать и сколько ждать).

Вопросы к экзамену

  1. История развития ООП, основные языки программирования.
  2. Основные понятия объектно-ориентированного программирования. Классы и объекты.
  3. Абстрактные типы данных. Определение и мотивация.
  4. Классы. Поля, методы, экземпляры. Композиционные отношения классов.
  5. Наследование. Принцип подстановки и проблема «круг-эллипс», варианты ее решения.
  6. Множественное наследование и проблема ромба. Альтернативы множественному наследованию.
  7. Объекты. Тип, идентичность, изменяемость, состояние объектов, объекты-значения и объекты-ссылки.
  8. Жизненный цикл разработки ПО. Макропроцесс и микропроцесс (анализ и проектирование).
  9. Объектно-ориентированный анализ.
  10. Проектирование, основные принципы. Факторы, ограничивающие гибкость архитектуры.
  11. Шаблоны проектирования, их назначение, классификация и содержание.
  12. Порождающие шаблоны проектирования: абстрактная фабрика, фабричный метод.
  13. Порождающие шаблоны проектирования: строитель, прототип, объект-одиночка.
  14. Структурные шаблоны проектирования: адаптер, декоратор, заместитель.
  15. Структурные шаблоны проектирования: мост, фасад, приспособленец, компоновщик.
  16. Поведенческие шаблоны проектирования: команда, цепочка ответственности, интерпретатор.
  17. Поведенческие шаблоны проектирования: итератор, посредник, хранитель.
  18. Поведенческие шаблоны проектирования: наблюдатель, стратегия, состояние.

План лекций.

Литература и Интернет-ресурсы

  • Объектно-ориентированный анализ, проектирование и программирование
    • Meyer, B. Object-Oriented Software Construction. Prentice Hall, 1997.
    • Booch, G., Maksimchuk, R. A., Engel, M. W., Young, B. J., Conallen, J. and Houston, K. A. Object-Oriented Analysis and Design with Applications (3rd Edition). Addison-Wesley Professional, Hardcover, 2007.
    • Gamma, E., Helm, R., Johnson, R. and Vlissides, J. M. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley Professional, Hardcover, 1994.
  • Смолток

Пример

Пакет SimulationExample содержит простой пример имитационного моделирования. Несколько обслуживающих устройств (класс SEServer) обрабатывают заявки клиентов (SEClient) в порядке очереди. Реализовано два вида клинетов: SERandomClient выбирает случайное обсуживающее устройство, SESmartClient — устройство с наименьшей очередью.

Для загрузки пакета нужно скопировать в Playround и выполнить следующую команду:

Gofer new
        url: 'http://kappa.cs.petrsu.ru/~kryshen/oo/packages';
        version: 'SimulationExample-MikhailKryshen.2';
        load.

Запуск примера:

Transcript open.
SESimulator example.

Архив

Автор: М. А. Крышень

Created: 2017-01-22 Вс 05:13

Validate