Программа дисциплины Объектно-ориентированный анализ и программирование для направления 080700. 62 "Бизнес-Инфоматика" подготовки бакалавра Автор профессор кафедры оииппо е. И. Забудский

Вид материалаПрограмма дисциплины

Содержание


Тематический план учебной дисциплины
Итоговый контроль
Net, c++. м.: кудиц-образ, 2005.
C_Sharp программе «Объектно-ориентированный Банк» и др. Литература
C_Sharp программе «Банковский счет» и др. Литература
C_Sharp программе «Банковский счет», в C_Sharp
Объектно-ориентированный подход к созданию пользовательского интерфейса
C_Sharp программа в вариантах GUI
Контрольные вопросы
C_Sharp программы «Банковский счет»; класса Java
2. Тематика рефератов
3. Тематика курсовых работ
Подобный материал:

Министерство экономического развития и торговли

Российской Федерации


Государственный университет - Высшая школа экономики
Факультет БИЗНЕС-ИНФОРМАТИКА


Программа дисциплины


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

для направления 080700.62 “Бизнес-Инфоматика” подготовки бакалавра

Автор – профессор кафедры ОИиППО Е.И.Забудский,

e-mail: zei@inbox.ru , web-site: ссылка скрыта


Рекомендована секцией УМС

Бизнес-Информатика

Председатель

______________________ В.И.Грекул

“_____” __________________ 2007 г.

Одобрена на заседании кафедры

Основ информатики и прикладного

программного обеспечения

Зав. кафедрой

_____________________ С.В.Назаров

“____”_____________________ 2007 г.


Утверждена УС факультета

Бизнес-Информатики

Ученый секретарь

____________________ А.И.Олейник

“ ____” ___________________2007 г.






Москва, 2007

^ Тематический план учебной дисциплины


№ темы

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

Всего часов

по дисциплине

Аудиторные часы

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

Лекции

Семинар. и практич. занятия

1

Введение. Методология разработки объектно ориентирован­ного программного обеспечения

6

2

­–

4

2

Инкапсуляция – базовое понятие объектно ориентированного программиро­ва­ния

15

2

3

10

3

Наследование – базовое понятие объектно ориентированного программиро­ва­ния

15

2

3

10

4

Полиморфизм – центральное понятие в парадигме объектно ориентированного программиро­ва­ния

16

3

3

10

5

Основы UML – унифицированного языка моделирования объектно-ориентированных систем

16

3

3

10

6

Основы объектно ориентированного анализа

17

4

3

10

7

Основы объектно ориентированного проектирования

17

4

3

10

8

Многократное использование проектов с помощью шаблонов проектирования

16

3

3

10

9

Объектно ориентированный подход к созданию пользовательского интерфейса

18

4

4

10

10

Тестирование объектно ориентиро­ван­ного программного обеспечения

16

3

3

10

Итого

152

30

28

94


Формы контроля

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

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

Кроме того, в течение учебного года студент по своему выбору или выполняет курсовую работу или пишет реферат1.

Домашняя письменная работа включает разработку, кодирование, тестирование и отладку объектно-ориентированных программ, реализующих решение нескольких задач из предметной области изучаемой темы. За одну домашнюю работу выставляется одна оценка по десятибалльной шкале.

Аудиторная письменная контрольная работа предусматривает программную реализацию одной задачи и выполняется на практических занятиях (60 мин). За одну контрольную работу выставляется одна оценка по десятибалльной шкале.

^ Итоговый контроль включает дифференцированный зачет по курсовой работе (или зачет по реферату) и письменный экзамен (120 мин).

Итоговая оценка по дисциплине складывается из следующих промежуточных оценок:
  • оценка итогового контроля по модулям 2, 3 (Контроль 1),
  • оценка итогового контроля по модулям 4, 5 (Контроль 2),
  • оценка по курсовой работе (или реферату),
  • оценка по письменному экзамену.

Итоговая оценка по учебной дисциплине определяется как средневзвешенная оценка ОИт10 по десятибалльной шкале по формам контроля:

Формы контроля

Весовой коэффициент промежуточной оценки

Контроль 1 (K1)

0,15

Контроль 2 (K2)

0,15

Курсовая работа/реферат (Р)

0,25

Экзамен (Экз)

0,45



ОИт10 = 0,15*K1 + 0,15*K2 + 0,25*Р + 0,45*Экз

Если дробная часть оценки ОИт10 не меньше 0.5, то эта оценка округляется до большего целого, в ином случае – до меньшего целого. При определении итоговой оценки ОИт5 по пятибалльной шкале принято следующее соответствие между десятибалльной ОИт10 и пятибалльной ОИт5 оценками:

Десятибалльная шкала

Пятибалльная шкала

ОИт10  8

ОИт5 = 5 (“отлично”)

6  ОИт10 < 8

ОИт5 = 4 (“хорошо”)

4  ОИт10 < 6

ОИт5 = 3 (“удовлетворительно”)

ОИт10 < 4

ОИт5 = 2 (“неудовлетворительно”)

Литература

Базовый учебник

1. Мейер Б. Объектно-ориентированное конструирование программных систем. М.: Русская Редакция, 2005.

Основная

2. Буч Г., Якобсон А., Рамбо Дж. UML. С.-Петербург: Питер, 2006.

3. Гамма Э. Приемы объектно-ориентированного проектирования. Паттерны проектирования. С. Петербург: Питер, 2006.

4. Забудский Е.И. Учебно-методические материалы по дисциплине «Объектно-ориентиро­ван­ный анализ и программирование». М.: Кафедра ОИиППО ГУ-ВШЭ, 2005,

Internet-ресурс – ссылка скрыта .

5. Кватрани Т. Визуальное моделирование с помощью Rational Rose 2002 и UML. М.: Вильямс, 2003.

6. Лафоре Р. Объектно-ориентированное программирование в C++. С.-Петербург: Питер, 2005.

7. Троелсен Э. С# и платформа .NET. С.-Петербург: Питер, 2006.

8. Синтес А. Освой самостоятельно объектно-ориентированное программирование за 21 день. Москва; С.-Петербург; Киев: Вильямс, 2002.

Дополнительная – Internet-ресурсы

9. Новые книги раздела C#. – ссылка скрыта .

10. С# и .NET по шагам. – ссылка скрыта .

11. UML – язык графического моделирования. – ссылка скрыта .

12. JUnit – каркас тестирования для испытания Java-классов. – ссылка скрыта .

13. Пакет объектного моделирования Rational Rose. – ссылка скрыта .

Дополнительная – книги

14. Мэтт Вайсфельд. Объектно-ориентированный подход: Java, .^ NET, C++. М.: КУДИЦ-ОБРАЗ, 2005.

15. Дж. Кьоу, М. Джеанини. Объектно-ориентированное программирование. С.-Петербург: Питер, 2005.

Содержание программы


Тема 1. Введение. Методология разработки объектно ориентирован­ного программного обеспечения

Объектно-ориентированное мышление. Принципы объектно-ориентированного подхода. Объектно-ориентированное программирование в историческом контексте. Шесть этапов объектно-ориенти­ро­ван­ной методологии: Этап предпроектных исследованийУчет технических, временных и финансовых ограничений. Определение целесообразности продолжения работы над приложе­нием; Этап анализаСбор информации, необходимой для продолжения работы; Этап проектированияСоздание схемы интерфейса и структуры программы, без создания каких-либо фактических программ; Этап разработки (реализации)Создание прило­жения, включая все элементы интерфейса и программного кода; Этап внедренияПрименение и тестирование программы; Этап опытной эксплуатацииСовершенствование продукта, призванное устранить возможные проблемы или удовлетворить новые запросы.

Демонстрация реализации этапов объектно-ориенти­ро­ван­ной методологии на примере разработки проекта «Расчет оценки студента»: C_Sharp программа в вариантах GUI (Graphical User Interface) и консольном.

Литература [1, гл. 19] [4, Пр_Зан. 8, стр. 4сл.] [6, гл. 1, стр. 32…42]

Контрольные вопросы
  1. Что такое процедурное программирование?
  2. Какими преимуществами обладает процедурное программирование по сравнению с неструктурным программированием?
  3. Что такое модульное программирование?
  4. Какими преимуществами обладает модульное программирование по сравнению
    с процедурным программированием?
  5. Перечислите недостатки процедурного и модульного программирования.
  6. Что такое объектно-ориентированное программирование?
  7. Каковы преимущества и цели объектно-ориентированного программирования?
  8. Объясните одну из целей объектно-ориентированного программирования.
  9. Дайте определения следующих терминов: класс, объект, поведение.
  10. Как объекты обмениваются информацией?
  11. Что такое конструктор?

Тема 2. Инкапсуляция – базовое понятие объектно ориентированного программиро­ва­ния

Инкапсуляция – объектно-ориентированная характеристика модульности. Внешний интерфейс и внутренняя реализация инкапсулированного программного объекта. Характерные признаки эффективной инкапсуляции: абстракция, общедоступный интерфейс и сокрытие реализации.

Демонстрация и анализ концепций инкапсуляции в ^ C_Sharp программе «Объектно-ориентированный Банк» и др.

Литература [1, гл. 3] [4, Пр_Зан. 3, стр. 4сл.] [7, гл. 3, стр. 149…157] [8, cтр. 44…88]

Контрольные вопросы
  1. Каким образом использование инкапсуляции помогает достичь целей объект­но-ориентированного программирования?
  2. Дайте определение понятию «абстракция» и приведите пример применения абстракции.
  3. Дайте определение понятию «реализация».
  4. Дайте определение понятию «интерфейс».
  5. Объясните разницу между интерфейсом и реализацией.
  6. Почему для достижения эффективной инкапсуляции важно четко распределить ответственность?
  7. Определите понятие типа.
  8. Что такое абстрактный тип данных?
  9. Как можно получить эффективное сокрытие реализации в сильносвязанной программе?
  10. Какие опасности таит абстракция?

Тема 3. Наследование – базовое понятие объектно ориентированного программиро­ва­ния

Наследование – механизм, дающий возможность создавать новый класс на основе уже существующего класса. Базовый и производный классы. Абстрактные метод и класс. Наследование реализации, поведения и свойства. Переопределение метода. Типы наследования. Множественное наследование: проблемы (the diamond problem) и решения (interface – особый абстрактный класс). Сравнение отношений «Is-a» («Является») и «Has-a» («Содержит»): когда использовать наследование?

Демонстрация и анализ концепций наследования в ^ C_Sharp программе «Банковский счет» и др.

Литература [1, гл. 4, 14, 15, 16] [4, Пр_Зан. 6, стр. 4сл.] [6, гл. 9, стр. 362…380]

[7, гл. 3, стр. 158…163] [8, cтр. 92…118]

Контрольные вопросы
  1. Что такое наследование?
  2. Что такое простое наследование?
  3. Что такое многоуровневое наследование?
  4. Что такое множественное наследование?
  5. Что такое тесты «Is-a» и «Has-a»?
  6. Когда используется множественное наследование?
  7. Когда используется многоуровневое наследование?
  8. Каково максимальное количество уровней в многоуровневом наследовании?
  9. Какие члены класса может наследовать другой класс?
  10. Какова разница между базовым классом и производным классом?
  11. Как наследование разрушает инкапсуляцию?

Тема 4. Полиморфизм – центральное понятие в парадигме объектно ориентированного программиро­ва­ния

Полиморфизм – самое радикальное, универсальное средство – одно имя класса или метода представляет различный, выбранный автоматическим механизмом, программный код (полиморфизм – одно имя представляет различные поведения). Связь полиморфизма с инкапсуляцией и наследованием. Формы полиморфизма: полиморфизм включения, параметрический полиморфизм, переопределение метода, перегрузка метода. Ранее связывание (во время компиляции) и позднее связывание (во время выполнения).

Демонстрация и анализ концепций полиморфизма в модифицированной ^ C_Sharp программе «Банковский счет», в C_Sharp программе «Служащие с разной формой оплаты: начисление зарплаты» и др.

Литература [1, гл. 14] [4, Пр_Зан. 7, стр. 4сл.] [7, гл. 3, стр. 168…174] [8, cтр. 139…162]

Контрольные вопросы
  1. Что такое полиморфизм?
  2. Как реализуется полиморфизм?
  3. Что такое позднее связывание?
  4. Что такое раннее связывание?
  5. Каковы преимущества полиморфизма времени выполнения?
  6. Каковы преимущества полиморфизма времени компиляции?
  7. Что такое интерфейс?
  8. Как полиморфизм позволяет реализовать интерфейсы?
  9. Что такое виртуальная функция?
  10. Что такое перегрузка метода?
  11. Как инкапсуляция и наследование влияют на полиморфизм включения?

Тема 5. Основы UML – унифицированного языка моделирования объектно-ориентированных систем

Unified Modeling Language (UML) – язык графического моделирования, используемый для представления объектно-ориентированных программ. Краткая история UML. Псевдокод – представление алгоритма в пределах метода. Cистема обозначений языка UML для описания отношений классов и общей архитектуры программы. Моделирование отношений между классами: зависимость, accoциация, агрегация, композиция, обобщение. Интерактивный пакет Rational Rose – использование языка UML на стадии проработки проекта. Cреда MS VS .NET 2005 – генерация UML-диаграмм классов после разработки проекта и написания программного кода.

Демонстрация и анализ UML-диаграмм классов проектов «Банковский счет», «Служащие с разной формой оплаты: начисление зарплаты» и «Расчет оценки студента».

Литература [2, гл. 1, стр. 22…34; гл. 4, стр. 65…84]

[5, гл. 1, стр. 19…26; гл. 2, стр. 29…32; гл 6, стр. 83…91]

[4, Пр_Зан. 3, стр. 26сл.; Пр_Зан. 8, стр. 38сл.] [8, cтр. 197…212] [10] [11] [13]

Контрольные вопросы
  1. Что такое UML?
  2. Что в UML обозначают следующие символы: +, #, -?
  3. Каким образом выделяются абстрактные классы на UML-диаграмме?
  4. Что является конечной целью моделирования? Какие из этих целей являются более важными?
  5. Объясните суть понятий «ассоциация», «агрегация» и «композиция».
  6. Объясните, когда следует использовать каждое из отношений: «ассоциация», «агрегация» и  «композиция».
  7. Что такое UML-диаграмма взаимодействия?
  8. Что такое сообщение с технической точки зрения?
  9. Что такое псевдокод, с какой целью используется?
  10. Есть ли специальные программные средства для использования UML?

Тема 6. Основы объектно ориентированного анализа

Итеративная технология разработки программного обеспечения. Объектно ориентированный анализ (ООА) –это объектно-ориентированный подход к осмыслению разрабатываемого проекта. Результат ООА – понимание предметной области, формулировка технических требований к системе в терминах классов и взаимодействий между объектами (система – множество взаимодействующих объектов). Модель прецедентов – модель способов взаимодействия пользователей с системой. Концептуальная модель (модель предметной области) – скелет создаваемой системы. Паралич анализа (analysis paralysis).

Демонстрация реализации этапа объектно-ориенти­ро­ван­ного анализа на примере разработки проекта «Расчет оценки студента»: C_Sharp программа в вариантах GUI (Graphical User Interface) и консольном.

Литература [1, гл. 3, 19, 27] [4, Пр_Зан. 8, стр. 4сл.] [6, гл. 16, стр. 752…762] [8, cтр. 213…235]

Контрольные вопросы
  1. Что такое технология разработки программного обеспечения?
  2. Что такое итеративный процесс (итеративная технология)?
  3. Что является результатом проведения объектно-ориентированного анализа?
  4. Что описывают требования к системе?
  5. Что такое прецедент?
  6. Какие действия необходимо выполнить для определения прецедентов?
  7. Что такое действующий субъект?
  8. Какие вопросы помогают найти действующих субъектов?
  9. Какие отношения могут существовать между прецедентами?
  10. Что такое вариант прецедента?
  11. Что такое сценарий?
  12. Какие существуют способы описания прецедентов?
  13. Опишите разницу между различными моделями, используемыми для визуали­зации прецедентов.
  14. Чем полезна концептуальная модель?
  15. Чем полезно использование прецедентов?

Тема 7. Основы объектно ориентированного проектирования

Объектно ориентированное проектирование (ООПр) – итеративный процесс, определяющий назначение объектов и взаимодействие между ними. Пять шагов ООПр: шаг 1 – создание исходного списка объектов; шаг 2 – определение и уточнение назначений объектов при помощи карточек CRC (карточки связи и взаимодействия между классами – Class Responsibility Collaboration cards); шаг 3 – разработка точек взаимодействия; шаг 4 – детализация отношений между объектами; шаг 5 – построение объектной модели. Объектная модель – описание объектной структуры и отношения между объектами. Паралич проектирования (design paralysis).

Литература [4, Пр_Зан. 8, стр. 6сл.] [5, гл. 11, cтр. 129…139] [6, гл. 16, стр. 752…762]

[8, cтр. 236…252]

Контрольные вопросы
  1. Что такое ООПр?
  2. Что такое объектная модель?
  3. Каковы недостатки излишнего проектирования?
  4. Как определить, какие аспекты системы являются архитектурно важными?
  5. Каковы пять основных шагов ООПр?
  6. Как создать начальный список объектов?
  7. Что входит в полный проект?
  8. Что помогают определить карточки CRC?
  9. Что такое сотрудничество?
  10. Почему важно глубоко понять назначения и связи объектов?
  11. Что такое карточка CRC?
  12. Назовите хотя бы одну причину, по которой карточки CRC сделаны настолько простыми.
  13. Когда следует использовать карточки CRC?
  14. Какова основная проблема при использовании карточек CRC?
  15. Что такое точка взаимодействия?

Тема 8. Многократное использование проектов с помощью шаблонов проектирования

Многократное использование кода – одна из основных задач объектно-ориентированного программирования. Шаблон проектирования – это концепция проектирования доказавшая свое право на жизнь, которую можно применять многократно. Четыре элемента шаблона проектирования: название шаблона, абстрактная задача, решение, последствия. Реализация и практика применения шаблонов проектирования.

Литература [1, гл. 14, 15 ] [3, гл. 1, стр. 15…22; гл. 3, стр. 93…111; гл. 4, стр. 203…213;

гл. 5, стр. 249…263] [6, гл. 14, стр. 640…658] [8, стр. 253…301]

Контрольные вопросы
  1. Что такое шаблон проектирования?
  2. Какие четыре элемента содержит шаблон проектирования?
  3. Как правильно выбрать шаблон проектирования?
  4. Как определить, когда нужно использовать шаблон проектирования?
  5. Какую задачу решает шаблон Итератор (Iterator)?
  6. Когда следует использовать шаблон Итератор (Iterator)?
  7. Какую задачу решает шаблон Адаптер (Adapter)?
  8. Когда следует применять шаблон Адаптер (Adapter)?
  9. Какую задачу решает шаблон Proxy (модуль доступа, программа-посредник, агент, представитель, или заместитель)?
  10. Когда следует применять шаблон Proxy (модуль доступа, программа-посредник, агент, представитель, или заместитель)?
  11. Для решения какой задачи предназначен шаблон Абстрактной фабрики (Abstract Factory)?
  12. Почему следует применять шаблон Абстрактной фабрики (Abstract Factory)?
  13. Для решения какой задачи предназначен шаблон одноэлементного [одноточечного] множества (Singleton)?
  14. Почему следует применять шаблон одноэлементного [одноточечного] множест­ва (Singleton)?
  15. Для решения какой задачи предназначен шаблон перечисления Typesafe Enum? Почему следует применять шаблон перечисления Typesafe Enum?
  16. Гарантирует ли использование шаблонов возможность создания первокласс­ного проекта? Объясните почему.

Тема 9.^ Объектно-ориентированный подход к созданию пользовательского интерфейса

Формы пользовательского интерфейса (User Interface). Значение развязки пользовательских интерфейсов: не «навешивать» интерфейс на систему после ее создания. Развязка пользовательского интерфейса с помощью шаблона проектирования модель/вид/контроллер (Model View Controller – MVC) – ос­новная система полностью независима от интерфейса.

Демонстрация и анализ пользовательского интерфейса проекта «Расчет оценки студента»: ^ C_Sharp программа в вариантах GUI (Graphical User Interface) и консольном.

Литература [3, гл. 1, стр. 18…20] [4, Пр_Зан. 8, стр. 11сл.]

[7, гл. 8, стр. 343…375; гл. 9, стр. 409…416; гл. 10, стр. 471…490] [8, стр. 302…323]

^ Контрольные вопросы
  1. В чем отличие анализа, проектирования и реализации пользовательского ин­терфейса от соответствующих шагов разработки других частей программы?
  2. Почему нужно отделять пользовательский интерфейс от основной программы?
  3. Назовите составные MVC-триады.
  4. Назовите две возможные альтернативы шаблону MVC.
  5. Опишите обязанности модели.
  6. Опишите обязанности вида.
  7. Опишите обязанности контроллера.
  8. Сколько моделей может быть в системе? Сколько видов может быть в системе? Сколько контроллеров может быть в системе?
  9. Что может быть причиной снижения эффективности при использовании шаблона MVC?
  10. Какие допущения предполагает шаблон MVC?



Тема 10. Тестирование объектно ориентиро­ван­ного программного обеспечения

Хорошая объектно-ориентированная программа – результат тщательного анализа и проектирования, а также аккуратной реализации. Два метода испытания программного кода: тестирование методом «прозрачного ящика» и испытание мето­дом «черного ящика». Четыре формы тестирования: тестирование элементов программы (блочное тестирование); проверка взаимодействия и функционирования компонентов системы (комплексные испытания, компоновочные испытания, совместные испытания); испытание системы (системное тестирование); регрес­сивное тестирование. Обработка исключений. Создание эффективной документации. JUnit – свободно распространяемый каркас тестирования для испытания Java-классов.

Демонстрация и анализ тестирования: класса ^ C_Sharp программы «Банковский счет»; класса Java программы «Банковский счет» с помощью инструмента тестирования JUnit.

Литература [6, гл. 14, стр. 658…674] [7, гл. 3, стр. 177…187] [8, стр. 324…352] [12]

Контрольные вопросы
  1. Почему разработчики программного обеспечения «ненавидят» тестирование?
  2. Что такое контрольный пример?
  3. Назовите два метода, которые можно положить в основу испытаний.
  4. Дайте определение тестирования методом «прозрачного ящика» и испытания методом «черного ящика».
  5. Назовите четыре формы тестирования.
  6. Определите понятие тестирования элементов программы.
  7. В чем смысл проверки взаимодействия и функционирования компонентов системы и испытания системы?
  8. Почему нельзя откладывать испытания до окончания проекта?
  9. Почему необходимо избегать ручной или визуальной проверки правильности при тестировании? В чем состоит альтернатива такой проверки?
  10. Что такое каркас?
  11. Что такое фиктивный объект?
  12. Почему необходимо использовать фиктивные объекты?
  13. Каково различие между ошибкой и состоянием ошибки?
  14. Как гарантировать качество программы во время написания кода?

Тематика заданий по формам контроля

1. Тематика домашних и аудиторных письменных работ
  1. Абстракция – учимся думать и программировать абстрактно.
  2. Эффективное применение инкапсуляции в объектно-ориентированном программировании.
  3. Открытый интерфейс и эффективное сокрытие реализации.
  4. Использование концепции наследования при объектно-ориентированном программировании.
  5. Применение простого наследования.
  6. Использование абстрактных классов при наследовании.
  7. Адаптация объектно-ориентированных программ к изменяющимся требованиям средствами полиморфизма.
  8. Применение полиморфизма включения.
  9. Переопределение – важный тип полиморфизма.
  10. Перегрузка – частный случай полиморфизма.
  11. Необходимое условие эффективного полиморфизма – эффективное применение инкапсуляции и наследования.
  12. Построение UML-диаграмм классов программных продуктов, разрабатываемых в домашних и аудиторных работах.
  13. Анализ прецедентов – случаев взаимодействия пользователя с системой – при выполнении объектно-ориентиро­ванного анализа с целью уяснения смысла задач, разрабатываемых в домашних и аудиторных работах.
  14. Построение концептуальной модели – выявление объектов предметной области, необходимых для адекватного описания системы – при выполнении объектно-ориентированного анализа с целью уяснения смысла задач, разрабатываемых в домашних и аудиторных работах.
  15. Построение объектной модели – установление взаимосвязей и структуры объектов – при выполнении объектно-ориентированного проектирования с целью приближения к искомой конструкции систем, разрабатываемых в домашних и аудиторных работах.
  16. Практическое применение шаблонов при выполнении объектно-ориентированного программирования.
  17. Программирование пользовательского интерфейса на основе объектно-ориентированного подхода в задачах, разрабатываемых в домашних и аудиторных работах.
  18. Реализация форм тестирования программного кода задач, разрабатываемых в домашних и аудиторных работах.

^ 2. Тематика рефератов
  1. Характеристика технологии .NET
  2. Парадигма объектно-ориентированного программирования и ее преимущества
  3. Моделирование реального мира в компьютерном приложении
  4. Сравнительный анализ основных парадигм программирования.
  5. Сравнительный анализ объектно-ориентированных языков программирования
  6. Полиморфизм, инкапсуляция и наследование – краеугольные камни парадигмы объектно-ориентиро­ванного программирования
  7. Интегрированные среды разработки программ
  8. Технологии разработки программных продуктов
  9. Принципы создания интерфейса пользователя
  10. Отладка и документирование программ
  11. Методы объектно-ориентированного анализа и проектирования программного обеспечения
  12. Принципы построения и элементы объектно-ориентированных моделей программных систем
  13. Библиотеки типовых компонент
  14. Принципы и методы классификации объектов
  15. Использование шаблонов при проектировании программных продуктов
  16. Основные направления развития объектно-ориентированной методологии
  17. Программная реализация концепций полиморфизма, инкапсуляции и наследования в объектно ориентированном языке программирования C#
  18. Интерфейсы в языке С# – эквивалент (имитация) множественного наследования

^ 3. Тематика курсовых работ
    1. Моделирование работы банка
    2. Моделирование работы и облуживания банкомата
    3. Моделирование работы четырех светофоров на перекрестке
    4. Моделирование системы лифтов здания
    5. Моделирование работы склада
    6. Моделирование работы отдела кадров
    7. Моделирование работы Дома Мод
    8. Моделирование Салона Красоты
    9. Моделирование игровой ситуации – компьютерная игра
    10. Моделирование концептуальной системы тестирования знаний
    11. Моделирование системы определения цены на новый товар
    12. Моделирование электронного магазина, специализирующегося на комиссионной торговле
    13. Моделирование электронного магазина с организацией лотерей
    14. Моделирование электронного магазина розничной торговли по оптовым ценам
    15. Моделирование концептуальной системы анализа поведения посетителей супермаркета
    16. Моделирование системы оплаты заказа с использованием терминала автоматизированной системы
    17. Моделирование поведения потребителя на рынке
    18. Моделирование системы формирования предложений для клиента торговой фирмы
    19. Авторские темы, предлагаемые студентами в соответствии с содержанием дисциплины


Вопросы для оценки качества освоения дисциплины
  1. Сложность программных систем: признаки сложности программной системы
  2. Методы проектирования сложных систем
  3. Методы декомпозиции сложных систем. Принципы объектно-ориентированной декомпозиции
  4. Виды объектно-ориентированных моделей системы
  5. Соотношение этапов объектно-ориентированной методологии: анализ, проектирование и программирование.
  6. Стили проектирования и виды абстракции
  7. Объект: определение, состояние, протокол объекта
  8. Абстракция и методы классификации объектов
  9. Идентификация классов и объектов
  10. Отношения между объектами: связи, агрегации
  11. Назначение и компоненты диаграммы объектов
  12. Классы: определение, спецификация класса
  13. Роль классов и объектов в анализе и проектировании. Ключевые абстракции.
  14. Назначение и компоненты диаграммы классов
  15. Отношения между классами
  16. Отношения наследования
  17. Критерии оценки качества классов и объектов.
  18. Состояния и события. Назначение и компоненты диаграммы состояний
  19. Компоненты диаграммы деятельности
  20. Моделирование жизненного цикла объекта
  21. Моделирование исключений. Программирование исключений на языке С#
  22. Моделирование взаимодействия объектов
  23. Виды диаграмм, описывающих взаимодействия. Компоненты диаграмм.
  24. Потоки управления. Активные классы и объекты. Моделирование потока управления.
  25. Виды взаимодействия объектов в системе, содержащей активные и пассивные объекты. Моделирование нескольких потоков управления.
  26. Прецеденты. Моделирование контекста системы с использованием прецедентов
  27. Организация прецедентов. Назначение и компоненты диаграммы прецедентов.
  28. Моделирование требований к системе с использованием прецедентов.
  29. Компоненты диаграммы развертывания. Использование диаграмм развертывания для анализа устройств.
  30. Рациональный унифицированный процесс: цели, особенности.
  31. Процессы, фазы, итерации и циклы разработки
  32. Определение прецедентов, создающихся на различных этапах планирования и анализа
  33. Моделирование системной архитектуры
  34. Моделирование системы с использованием представлений
  35. Качество программного продукта. Характеристики качества программного продукта
  36. Современные модели качества программного обеспечения
  37. Пространства имен в .NET
  38. Базовые классы пространства имен System
  39. Определение класса и его компонент в языке С#
  40. Методы классов. Перегрузка методов.
  41. Принципы инкапсуляции и модификаторы доступа в языке C#
  42. Отношения наследования. Реализация наследования в языке С#
  43. Формы полиморфизма. Реализация полиморфизма в языке С#
  44. Интерфейсы в языке С# и их программная реализация
  45. Делегаты и обработка событий в языке C#
  46. Шаблоны проектирования. Использование шаблонов проектирования при создании программного обеспечения




Автор программы / Забудский Е.И./


Приложение

Методические рекомендации и материалы преподавателю

Практические занятия по дисциплине проводятся в компьютерном классе в следующих средах:
  • Microsoft Visual Studio .NET 2005,
  • Rational Rose [13]
  • World Wide Web.

Рекомендуются для использования следующие Internet-ресурсы, см. [4, 9…13].

Особенность дисциплины заключается в том, что для успешного усвоения и реализации парадигмы объектно-ориентированного программирования необходимо знание совокупности вопросов, которые по своему объему и сложности должны были бы составить предмет самостоятельных курсов. Имеются в виду: среда MS VS .NET; спецвопросы языка C#, касающиеся парадигмы ООП; язык UML; объектно-ориентированный анализ; объектно-ориентированное проектирование. Весьма непростым для студентов является анализ предметной области, рассматриваемой с целью ее компьютерного моделирования. Сложность обучения дисциплине также заключается в крайнем дефиците выделенного аудиторного времени. Поэтому особое внимание необходимо уделить организации самостоятельной работы студентов и ее методическому обеспечению.

Для решения вопроса автором программы разработаны по ключевым темам дисциплины учебные материалы, которые помещены на сайт ГУ-ВШЭ [4]. Далее приводится их перечень и соответствующие гиперссылки.

Учебные материалы (pdf-файлы)

0. ссылка скрыта – Введение в dotNet (235 KB) *.

1. ссылка скрыта – Парадигмы процедурно-ориентированного

и объектно ориентированного программирования.

Анализ структурных элементов С#-программ (474 KB).

2. ссылка скрыта – Демонстрация элементов языка C# (202 KB).

ссылка скрыта – Дополнение 1 – Конструкторы, Свойства (214 KB).

ссылка скрыта – Дополнение 2 – Индексаторы (214 KB).

3. ссылка скрыта – Абстракция, Инкапсуляция. Моделирование работы лифта,

UML диаграммы взаимодействия классов (986 KB).

4. ссылка скрыта – Типы C# . Форматирование числовых значений. Метаданные.

Компонентно-ориентированное программирование (980 KB).

5. ссылка скрыта – Моделирование работы банка и системы лифтов здания (606 KB).

Программа ссылка скрыта , Диаграмма взаимодействия модулей (222 KB) .

6. ссылка скрыта – Наследование. Часть I: Базовый и производный классы.

Переопределение и перегрузка методов (738 KB).

7. ссылка скрыта – Наследование. Часть II: Абстрактные функции.

Полиморфизм. Интерфейсы (812 KB).

8. ссылка скрыта – Разработка Windows-приложения (формат GUI)

“Проект Расчет оценки студента” (1151 KB).

9. ссылка скрыта: Темы. Рекомендации. Основные этапы компьютерного моделирования (116 KB).

10. ссылка скрыта – Будущее Компьютера. Спинтроника (140 KB).

* Кроме перечисленных рассмотрены и другие вопросы – см. Содержание занятий.

В указанных материалах к практическим занятиям приведены: тема и примерное количество аудиторных часов, отводимых на ее изучение; содержание; теория и листинги программ; резюме; контрольные вопросы и задания (упражнения) по объектно-ориентированному программированию; список литературы; ссылки на Internet ресурсы и др.

Существенным и необходимым для усвоения дисциплины является самостоятельная работа студентов во внеаудиторное время с содержательной частью разработанных материалов, составление ответов на контрольные вопросы и разработка программ согласно упражнениям, которые приведены в заключительной части материалов (следует рекомендовать студентам скопировать и распечатать “Учебные материалы”). На практических занятиях необходимо проводить блиц опрос студентов в соответствии с контрольными вопросами и осуществлять проверку выполнения упражнений.

Далее, на практических занятиях необходимо кратко разъяснить студентам основные положения, раскрывающие тему; затем предложить студентам реализовать в среде Visual Studio .NET соответствующие программные продукты, представленные в учебных материалах, и выполнить их анализ. Часть программ следует поручить студентам реализовать и проанализировать во внеаудиторное время.

Предусмотрены домашняя работа и аудиторная контрольная работа, а также выполнение курсовой работы/реферата. Содержанием курсовой работы является компьютерное моделирование реальных или концептуальных систем средствами среды Rational Rose, среды Visual Studio .NET и языка C_Sharp в соответствии с парадигмой компонентно-ориентированного программирования. С целью оказания помощи студентам в выполнении курсовой работы рекомендуется на практических занятиях осуществить компьютерное моделирование двух типических реальных систем (см. Учебные материалы # # 3, 5, 8, 9).

1 Распределение в студенческой группе – 50/50