Главная
страница 1


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

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

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

УТВЕРЖДАЮ

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

__________ О.А. Горшков

«____» ____________ 2012г.

ПРОГРАММА

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

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

Магистерская программа:

010956 Математические и информационные технологии

010990 Интеллектуальный анализ данных

010957 Управляющие и информационные системы

010958 Прикладная информатика

010960 Системное программирование



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

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

курс: 5 (магистратура), семестр: 2

Трудоёмкость в зач. ед.: базовая часть – 0 зач. ед.; вариативная часть – 3 зач.ед.; по выбору студента – 0 зач. ед.

лекции: базовая часть – 0 час., вариативная часть – 32 час. 1 зач.ед.; по выбору студента – 0 зач. ед.

практические (семинарские) занятия: базовая часть – 0 час., вариативная часть – 0 час.; по выбору студента – 0 зач. ед.

лабораторные занятия: базовая часть – 0 часа, вариативная часть – 32 час. 1 зач.ед.; по выбору студента – 0 зач. ед.;

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

курсовая работа: нет

самостоятельная работа: вариативная часть – 10 час.

экзамен: вариативная часть – 1 зач.ед.;

ВСЕГО АУДИТОРНЫХ ЧАСОВ: 64

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

Программа обсуждена на заседании кафедры информатики
29” мая 2012г.

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

член-корр. РАН И.Б. Петров

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

Ученого совета ФУПМ « ___» ___________2012г.

Декан ФУПМ А.А. Шананин



ОБЪЁМ УЧЕБНОЙ НАГРУЗКИ И ВИДЫ ОТЧЁТНОСТИ.

Вариативная часть, включая:

3 зач. ед.

Лекции

32 часа 1 зач. ед.

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

0 часов

Лабораторные работы

32 часа 1 зач. ед.


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

40 часов

Экзамен

1 зач. ед.

ВСЕГО

3 зач. ед.

Итоговая аттестация

Экзамен 2 семестр



  1. ЦЕЛИ И ЗАДАЧИ

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

Задачами данного курса являются:

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

  • обучение студентов принципам создания программных комплексов, выявление особенностей их создания в парадигме объектно-ориентированного программирования;

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




  1. Место дисциплины в структуре ООП МАГИСТРАТУРЫ

Дисциплина Объектно-ориентированное программирование _ включает в себя разделы, которые могут быть отнесены к части цикла по выбору __М.2__ (шифр цикла).



Дисциплина «Объектно-ориентированное программирование» базируется на материалах курсов бакалавриата: базовая и вариативная часть кода УЦ ООП Б.2 (математический естественнонаучный блок) по дисциплинам математический анализ, высшая алгебра, дифференциальные уравнения, методы математической физики и вычислительная математика), блока «Информатика» и региональной составляющей этого блока и относится к профессиональному циклу.
Компетенции обучающегося, формируемые в результате освоения дисциплины
Освоение дисциплины «Объектно-ориентированное программирование» направлено на формирование следующих общекультурных и профессиональных компетенций магистра:

а) общекультурные (ОК):

  • способность использовать на практике фундаментальные знания для понимания сущностных явлений окружающего мира (ОК 1);

  • способность активно и целенаправленно применять полученные знания, навыки и умения для выбора тематики выполнения индивидуальной научно-исследовательской работы (ОК-2);

  • готовность работать с информацией в объектно-ориентированного программирования из различных источников: отечественной и зарубежной научной периодической литературы, монографий и учебников, электронных ресурсов Интернет (ОК-3);

  • способность работать в коллективе и применять навыки эффективной организации труда и командной работы (ОК-4).

б) профессиональные (ПК):

  • готовность использовать методы программной инженерии и объектно-ориентированного программирования в последующей профессиональной деятельности в качестве научных сотрудников, преподавателей вузов, инженеров, технологов (ПК-1);

  • готовность к решению практических задач по моделированию, численным методам и созданию комплексов программных средств (ПК-2);

  • готовность выявить сущность проблем моделирования, возникающих в ходе профессиональной деятельности в различных областях науки и техники, и способности привлекать для решения освоенный математический аппарат (ПК-3);

  • готовность к творческому подходу в реализации научно-технических задач, основанному на систематическом обновлении полученных знаний, навыков и умений и использовании последних достижений в различных областях науки и техники (ПК-4);

  • способность к созданию математических и физических моделей исследуемых процессов, явлений и объектов, относящихся к профессиональной сфере (ПК-5);

  • способность применять на практике умения и навыки в организации исследовательских работ и проводить научные исследования, готовность к участию в инновационной деятельности (ПК-6).




  1. конкретные Знания, умения и навыки, формируемые в результате освоения дисциплины


В результате освоения дисциплины Объектно-ориентированное программирование,_обучающийся должен:

    1. Знать:

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

  • современные проблемы моделирования, численных методов и создания комплексов программ;

  • теоретические подходы к создания комплексов программ;

  • принципы программной инженерии;

  • новейшие тенденции в программной инженерии;

  • постановку проблем моделирования в науке и технике.

    1. Уметь:

  • эффективно использовать на практике теоретические компоненты науки: понятия, суждения, умозаключения, законы;

  • представить панораму методов программной инженерии;

  • использовать современные средства создания комплексов программ;

  • абстрагироваться от несущественного при математическом моделировании;

  • планировать оптимальное проведение численного эксперимента.

    1. Владеть:

  • планированием, постановкой и обработкой результатов численного эксперимента;

  • объективной картиной теории и практики объектно-ориентированного программирования;

  • навыками самостоятельной работы в среде объектно-ориентированного программирования на С++ MicroSoft Visual Studia;

  • математическим моделированием научных задач и задач проектирования техники.




  1. Структура и содержание дисциплины

    1. Структура преподавания дисциплины

Перечень разделов дисциплины и распределение времени по темам


№ темы и название

Количество часов

1. Принцип открытости-закрытости в программной инженерии и объектно-ориентированное программирование

4

2. Диаграммы проектирования классов в объектно-ориентированном программировании. Паттерны проектирования.

4

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

8

4. Структурные паттерны

12

5. Поведенческие паттерны

24

6. Проектирование файловой системы

4

7. Проектирование шаблонов арифметических выражений

4

8. Автоматическое обнаружение паттернов проектирования в компилированном программном коде

4

ВСЕГО ( зач. ед.(часов))

64 час. (2 зач.ед.)


Вид занятий

ЛЕКЦИИ

№ п.п.

Темы

Трудоёмкость в зач. ед.

(количество часов)



1

Принцип открытости-закрытости в программной инженерии и объектно-ориентированное программирование

2

2

Диаграммы проектирования классов в объектно-ориентированном программировании. Паттерны проектирования.

2

3

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

4

4

Структурные паттерны

6

5

Поведенческие паттерны

12

6

Проектирование файловой системы

2

7

Проектирование шаблонов арифметических выражений

2

8

Автоматическое обнаружение паттернов проектирования в компилированном программном коде

2

ВСЕГО ( зач. ед.(часов))

32часа 1 зач.ед.



Вид занятий Лабораторные работы

№ п.п.

Темы

Трудоёмкость в зач. ед.

(количество часов)



1

Принцип открытости-закрытости в программной инженерии и объектно-ориентированное программирование

2

2

Диаграммы проектирования классов в объектно-ориентированном программировании. Паттерны проектирования.

2

3

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

4

4

Структурные паттерны

6

5

Поведенческие паттерны

12

6

Проектирование файловой системы

2

7

Проектирование шаблонов арифметических выражений

2

8

Автоматическое обнаружение паттернов проектирования в компилированном программном коде

2

ВСЕГО ( зач. ед.(часов))

32часа 1 зач.ед.


ВИДЫ САМОСТОЯТЕЛЬНОЙ РАБОТЫ

№ п.п.

Темы

Трудоёмкость в зач. ед.

(количество часов)



1.

Изучение теоретического курса - выполняется самостоятельно каждым студентом по итогам каждой из лекций, результаты контролируются преподавателем на лекционных занятиях, используются конспект (электронный) лекций, учебники, рекомендуемые данной программой;

5

2.

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


5

3.

Подготовка к экзамену

30

ВСЕГО ( зач. ед.(часов))

40 час. (1 зач.ед.)




    1. Содержание дисциплины

Развёрнутые темы и вопросы по разделам



п/п

Название модулей

Разделы и темы лекционных занятий

Содержание

Объем

Аудиторная работа

(зачетные

единицы/часы)


Самостоятельная работа

(зачетные

единицы/часы)


1

I

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


Принцип открытости-закрытости в программной инженерии и объектно-ориентированное программирование

Библиотеки компонентов и улучшенный механизм доступа к их содержимому. Проблема несоответствие архитектур (architectural mismatch). Общие факторы, приводящие к несоответствию архитектур:

природа компонент (включая модель управления),

природа соединений (connectors) (протоколы и данные),

глобальная архитектурная структура и процесс создания (construction process) (среда и метод разработки (development environment and build)).



4




2

Диаграммы проектирования классов в объектно-ориентированном программировании. Паттерны проектирования.

Унифицированный язык моделирования UML (Unified Modeling Language) для документирования предоставляемых компонент и требуемых ресурсов, и описания различных форм поведения компонент. Среда разработки программного обеспечения FUJABA.

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

Объектно-ориентированное программирование на основе паттернов (design patterns): аддитивность иерархической структуры классов, блокирование опасных зависимостей между классами и гибридизация - способность реализации нескольких паттернов в единственной иерархической структуре классов.


4




3

II

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

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

Паттерн абстрактная фабрика (Abstract Factory). Предоставление интерфейса для создания семейства связанных или зависимых объектов без указания их конкретных классов.

Паттерн фабричный метод (Factory Method). Определение интерфейса для создания объекта, позволяя подклассам решать, образец какого подкласса создается.

Паттерн прототип (Prototype). Спецификация типа чтобы создавать объекты, используя образец прототипа.

Паттерн строитель (Builder). Рассматриваются приложения, требующие создания элементов сложного агрегата. Разделение процесса конструкции сложного объекта от его представления делается так, что процесс конструкции под контролем создает различные представления.

Паттерн одиночка (Singleton).

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



8

2

4

Структурные паттерны

Паттерн адаптер (Adapter). Конвертирование интерфейса класса в иной (несовместимый с прежним) интерфейс по запросу клиента.

Идиома Коплина дескриптор/тело(Coplien "handle/body" idiom).

Паттерн мост (Brаdge). Развязывание абстракции и ее реализации, обеспечивающее независимое изменение каждой из них. Повторно используемые библиотеки, основанные на нескольких стилях иерархии наследования или на нескольких стилях комбинирования.

Паттерн фасад (Façade).

Предоставление унифицированного интерфейса набору интерфейсов в программной системе.

Паттерн компоновщик (Composite). Композиция объектов в древовидную структуру для представления иерархий типа «часть-целое». Однородная трактовка индивидуальных объектов и композиций. Гибридизация паттернов Composite и Prototype.

Паттерн декоратор (Decorator)

Трехуровневая иерархия наследования: интерфейс, ядерный класс и класс-декоратор среднего уровня, и классы слоев нижнего уровня. Слоеная архитектура, предполагающая ядерный объект (слои – необязательные). Пре- и постпроцессирование запроса объектами-слоями. Гибридизация паттернов Abstract Factory и Decorator

Паттерн заместитель (Proxy). Предоставление объекта-заместителя (placeholder) для другого объекта с целью контроля доступа к нему. Шаблонная форма класса заместителя. Интеллектуальные указатели в библиотеке Boost С++.

Паттерн приспособленец (Flyweight). Использование разделения объектов с тонкой структурой. Библиотека Boost Flyweight Library.



12

2

5

Поведенческие паттерны

Паттерн цепочка обязанностей (Chain of Responsibility). Двухуровневая иерархия: базовый класс, классы фильтров одного ранга. Передача запроса по цепи до обработки объектом фильтром. Гибридизация Chain of Responsibility и Composite.

Паттерн команда (Command)

Инкапсуляция запроса как объекта. Ассемблирование объектов Command в композицию (или макро-) команды.

Внешний полиморфизм.

Подобие аддитивности паттернов и аддитивности систем представления знаний в Искусственном интеллекте - системы правил (продукций).

Паттерн интерпретатор (Interpreter). Определение представления грамматики языка (заданного системой продукций), вместе с его интерпретатором. Паттерн Composite в роли дерева абстрактного синтаксиса паттерна Interpreter. Демонстрация аддитивности реализации паттерна Interpreter.

Паттерн шаблонный метод (TemplateMethod). Стандартизации скелета алгоритма в абстрактном базовом классе. Резервирование мест (placeholders) под шаги алгоритма, подлежащие реализации. Демонстрация аддитивности реализации паттерна TemplateMethod. Связь паттерна Interpreter и паттерна TemplateMethod.

Паттерн итератор (Iterator). Предоставление способа последовательного доступа к элементам объекта-агрегата без показа представления, лежащего под ним. Гибридизация паттернов Iterator и Composite.

Паттерн хранитель (Memento). Без нарушения инкапсуляции, фиксация и вывод наружу внутреннего состояния объекта, чтобы объект возвращался к исходному состоянию после его изменения. Гибридизация паттернов Iterator, Composite и Memento. Гибридизация паттернов Memento и Command.

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

Паттерн стратегия (Strategy). Определение семейства алгоритма, инкапсуляция их и обеспечение взаимозаменяемости (замена алгоритмов независимо от клиента). Две реализации Strategy (первая подобна оеализации State).

Паттерн посредник (Mediator). Определение объекта, инкапсулирующего правила взаимодействия набора объектов. Паттерн наблюдатель (Observer). Определение зависимости один/многие между объектами, чтобы при изменении состояния одного объекта, все зависимые извещаются и обновлялись автоматически.

Паттерн посетитель (Visitor).

Абстрагирование функциональности, применяемой к иерархии классов, производных от абстрактного класса. Определение операции, выполняемой на элементах структуры объекта, без изменения классов элементов. Гибридизация паттернов Visitor и Composite. Паттерн Acyclic Visitor. Шаблонная форма паттерна Acyclic Visitor. Гибридизация паттернов Acyclic Visitor и Observer.



28

2

6

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

системы классов

Проектирование файловой системы

Файловая система на основе TemplateMethod. Файловая система на основе Composite + Proxy + ChainOfResponsibility + Iterator + Visitor + Observer + Command. Файловая система на основе 7 предыдущих паттернов + Decorator.


4




7

Проектирование шаблонов арифметических выражений

Метапрограммирование на основе шаблонов классов. Использование паттерна Composite при проектировании шаблонов арифметических выражений. Использование паттерна Intepreter при проектировании шаблонов арифметических выражений. Отображения типа (трейты).

4

2




IV

Обнаружение паттернов проектирования в компилированном программном коде

Автоматическое обнаружение паттернов проектирования в компилированном программном коде

Методы автоматического обнаружения паттернов проектирования. Алгоритм вычисления матрицы сходства для диаграмм классов. Обнаружение паттернов компилированного Java-кода посредством пакета Design Pattern detection v.4.5

4

2




  1. Образовательные технологии

В учебном процессе используются следующие образовательные технологии:

№ п/п

Вид занятия

Форма проведения занятий

Цель

1

лекция

Изложение теоретического материала

Получение теоретических знаний по дисциплине

2

лекция

Изложение теоретического материала с помощью презентаций

Повышение степени понимания материала

3

лекция

Разбор конкретных примеров применения эффектов в твердых телах для реализации функциональных устройств

Осознание связей между теорией и практикой, а также взаимозависимостей разных дисциплин

4

Самостоятельная работа студента

Решение задач

Повышение степени понимания материала

  1. Оценочные средства для текущего контроля успеваемости, промежуточной аттестации по итогам освоения дисциплины и учебно-методическое обеспечение самостоятельной работы студентов


Контрольные материалы

Перечень контрольных вопросов для сдачи экзамена в 10-ом семестре;

Дать сравнительный анализ паттернов Adapter, Decorator и Facade;

Дать сравнительный анализ паттернов Adapter и Proxy;

Дать сравнительный анализ паттернов Decorator и Chain of Responsibility;

Сравнить структуру паттернов Bridge, State, Strategy (все они разделяют элементы идиомы Коплина дескриптор/тело (Coplien "handle/body" idiom));

На каких стадиях проектирования классов объектно-ориентированной программы используются паттерны Adapter и Bridge;

Сравнить диаграммы паттернов Composite и Decorator (оба основаны на рекурсивной композиции);

Как паттерн Composite упрощает реализацию паттерна Mediator;

Каким образом паттерн Decorator и паттерн Strategy позволяют изменить объект;

Почему паттерны Composite и Decorator часто используются совместно;

Сравнить структуру паттернов Decorator и Proxy;

Почему паттерны Facade и Singleton часто используются совместно;

В каком случае паттерн Abstract Factory может использоваться как альтернатива паттерну Façade;

С какой целью паттерн Flyweight часто комбинируется с паттерном Composite;

Что паттерн Flyweight может дать при использовании объектов State;

Каково назначение поведенческих паттернов (Behavioral patterns);

Как паттерны Chain of Responsibility, Command, Mediator и Observer развязывают отправителя и получателя запроса;

Как паттерн Chain of Responsibility может использовать паттерн Command;

Как паттерн Command может использовать паттерн Memento;

Как MacroCommands могут реализовываться, используя паттерн Composite;

В каком случае паттерн Command действует как паттерн Prototype;

Как паттерн Interpreter может использовать паттерн State;

Как паттерн Composite может использоваться в качестве дерева абстрактного синтаксиса паттерна Interpreter;

Что общего между применением паттернов Mediator и Observer и в чем различие;

Что общего между паттернами Mediator и Façade;

Как паттерн Iterator может использовать паттерн Memento;

Что общего между паттернами State и Strategy;

Как паттерн State может использовать паттерн Singleton;

Какая реализация паттерна Strategy подобна реализации паттерна State;

В чем подобие паттернов Strategy и Template Method, и в чем различие;

Дать сравнительный анализ возможностей паттернов Visitor и Command.




  1. Материально-техническое обеспечение дисциплины

    1. Необходимое оборудование для лекций и практических занятий: компьютер и мультимедийное оборудование (проектор, звуковая система)

    2. Необходимое программное обеспечение - среда объектно-ориентированного программирования на С++ MicroSoft Visual Studia;.

Обеспечение самостоятельной работы – доступ к Internet-ресурсу http://home.earthlink.net/~huston2/dp/patterns.html;.


  1. Наименование возможных тем курсовых работ

Проектирование менеджера памяти с использованием паттернов Chain of Responsibility и Iterator.

Интеграционное решение для двух систем по модели "Point-to-point". Процесс синхронный, схема request-reply.

Контроль доступа к коэффициентам многочлена с использованием паттерна Proxy.

Применение паттерна Bridge к моделированию ненаправленного графа.

На основе паттерна Observer реализовать структуру классов, которая позволяет объявлять несколько обработчиков сообщений журнала.

Реализация инструмента для тестирования rpm5 пакетов с использованием паттернов Memento и Singleton.

Реализация интеллектуального указателя и различных стратегиях владения: запрещающая копирование стратегия, стратегия подсчета ссылок (счетчик, список) и разрушающая стратегия владения.

Реализация поиска в ширину с различными выполняемыми (например над пройденными клетками) действиями, используя паттерн Template Method.



Реализация класса, выполняющего функции счётчика (итерационного и счётчика времени) в экспериментальной программе с использованием паттерна Singleton.

Реализация паттерна Observer на примере движения шарика и его отражения от стенок.

Реализация аналога SQL базы данных. Для создания базового класса, представляющего собой единицу информации хранящейся в базе данных использовать паттерн Prototype.
9. ТЕМАТИКА ЛАБОРАТОРНЫХ РАБОТ
В экранную форму поочередно вводятся строки вида ‘LastName, FirstName’ либо ‘FirstName LastName’. Реализовать фабрику объектов вида {String ‘FirstName’, String ‘LastName’}.

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

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

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

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

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

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

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

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

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

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

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



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


  1. ТЕМАТИКА ИТОГОВЫХ РАБОТ учебным планом не предусмотрено

  2. Учебно-методическое и информационное обеспечение дисциплины



    1. Основная литература.

  1. Garlan D., Allen R., Ockerbloom J. Architectural mismatch or, Why it's hard to build systems out of existing parts // IEEE Software. 1995. V.12. Issue 6. P.17−26.

  2. Garlan D., Allen R., Ockerbloom J. Architectural mismatch: Why reuse is still so hard // IEEE Software. July 2009. V.26. Issue 4. P.66-69.

  3. Fowler M., Scott K. UML Distilled: A Brief Guide to the Standard Object Modeling Language. Addison-Wesley Professional. 1999.

  4. Nickel U.A., Niere J., Zundorf A. Tool demonstration: The FUJABA environment // Proceedings of the 22nd International Conference on Software Engineering (ICSE). Limerick, Ireland. ACM Press. 2000. P.742−745.

  5. Martin R.C. Designing Object Oriented Applications using UML. 2nd. ed. Prentice Hall. 1999.

  6. Meyer B. Object-Oriented Software Construction. 2nd edition. Prentice-Hall. 1997.

  7. Martin R.C. The open-closed principle // More C++ gems. New York, NY: Cambridge University Press. 2000. P.97–112.

  8. Huston V. Design Patterns in a Nutshell. Sebastopol, CA: O’Reilly & Associates. 2007.

  9. Рассел С., Норвиг П. Искусственный интеллект: современный подход. 2-е изд. М.: Издательский дом «Вильямс». 2006.

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

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

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

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

  1. Cooper J.W. The Design Patterns, with CD-Rom. Addison-Wesley Design Patterns Series. Addison-Wesley Professional. 1998.

  2. Cooper J.W. Java Design Patterns: A Tutorial, with CD-Rom. Addison-Wesley Professional. 2000.

  3. Cooper J.W. C# Design Patterns: A Tutorial, with CD-Rom. Addison-Wesley Professional 2002.




    1. Дополнительная литература.

  1. Кухаренко Б.Г. Принцип открытости-закрытости в программной инженерии и паттерны проектирования. Часть 1 // Программная инженерия. 2011. № 4. С.20–25.

  2. Кухаренко Б.Г. Принцип открытости-закрытости в программной инженерии и паттерны проектирования. Часть 2 // Программная инженерия. 2011. № 5. С.2–9.

  3. Кухаренко Б.Г. Принцип открытости-закрытости в программной инженерии и паттерны проектирования. Часть 3 // Программная инженерия. 2011. № 6. С.2–15.

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

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

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


Электронные ресурсы, включая доступ к базам данных и . т.д.

Soulie J. C++ Language Tutorial. 2006. http://www.cplusplus.com/doc/introduction.html

C++ Programming Tutorials. 2005. http://www.CoderSource.net:

Электронное пособие по языку С++. http://www.find-info.ru/doc/cpp



Huston V. Design Patterns. http://home.earthlink.net/~huston2/dp/patterns.html




Смотрите также:
Программа по курсу: оъектно-ориентированное программирование (факультетский) по направлению
226.09kb.
1 стр.
Рабочая программа по курсу «Объектно-ориентированное программирование» для специализации «Компьютерные технологии в образовании и научной деятельности»
55.49kb.
1 стр.
Рабочая программа дисциплины объектно-ориентированное программирование
292.06kb.
1 стр.
Программирование, объектно-ориентированное программирование. Оценка сложности алгоритмов. Классы P, np. Np – полные задачи
3210.51kb.
16 стр.
Программа курса факультетский лабораторный практикум по направлению 010600 Прикладные математика и физика
25.22kb.
1 стр.
Объектно-ориентированное программирование
548.52kb.
4 стр.
Рабочая программа дисциплины программирование на языке C# Направление (специальность) подготовки
97.36kb.
1 стр.
Методические указания к выполнению курсовой работы по дисциплине «Объектно-ориентированное программирования» для студентов направления подготовки 050101 «Компьютерные науки»
75.4kb.
1 стр.
Рабочий план практических занятий по курсу «Объектно-ориентированное программирование»
40.5kb.
1 стр.
В объектно -ориентированное программирование
43.45kb.
1 стр.
Программа дисциплины "Объектно-ориентированное программирование" для подготовки инженеров
93.32kb.
1 стр.
Программа Научного семинара «Компонентно-ориентированное программирование» для направления 080700. 62 «Бизнес-информатика»
92.06kb.
1 стр.