Программа дисциплины Объектно-ориентированный анализ и программирование для направления 080700. 62 "Бизнес-Инфоматика" подготовки бакалавра Автор профессор кафедры оииппо е. И. Забудский
Вид материала | Программа дисциплины |
- Программа дисциплины Культурология для направления 080700. 62 «Бизнес-информатика», 202.98kb.
- Программа дисциплины "Программирование" для направления, 488.76kb.
- Программа дисциплины Web-дизайн для направления 080700. 62 Бизнес-информатика подготовки, 136.32kb.
- Программа дисциплины Риторика и ораторское искусство для направления 080700. 62 «Бизнес-информатика», 144.38kb.
- Программа дисциплины «Введение в программирование» для направления 080700 «Бизнес-информатика», 101.22kb.
- Программа дисциплины Информатика и программирование для направления 080700 «Бизнес-информатика», 272.37kb.
- Программа дисциплины для направления 080700. 68 Бизнес-информатика подготовки бакалавра, 83kb.
- Программа дисциплины «Отечественная история» для направления 080700. 62 «Бизнес-информатика», 610.19kb.
- Программа дисциплины Организация аутсорсинга для направления 080700. 68 «Бизнес-информатика», 120.5kb.
- Программа дисциплины Экономическая история для направления 080700. 62 «Бизнес-информатика», 188.75kb.
Министерство экономического развития и торговли
Российской Федерации
Государственный университет - Высшая школа экономики
Факультет БИЗНЕС-ИНФОРМАТИКА
Программа дисциплины
Объектно-ориентированный анализ и программирование
для направления 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]
Контрольные вопросы
- Что такое процедурное программирование?
- Какими преимуществами обладает процедурное программирование по сравнению с неструктурным программированием?
- Что такое модульное программирование?
- Какими преимуществами обладает модульное программирование по сравнению
с процедурным программированием?
- Перечислите недостатки процедурного и модульного программирования.
- Что такое объектно-ориентированное программирование?
- Каковы преимущества и цели объектно-ориентированного программирования?
- Объясните одну из целей объектно-ориентированного программирования.
- Дайте определения следующих терминов: класс, объект, поведение.
- Как объекты обмениваются информацией?
- Что такое конструктор?
Тема 2. Инкапсуляция – базовое понятие объектно ориентированного программирования
Инкапсуляция – объектно-ориентированная характеристика модульности. Внешний интерфейс и внутренняя реализация инкапсулированного программного объекта. Характерные признаки эффективной инкапсуляции: абстракция, общедоступный интерфейс и сокрытие реализации.
Демонстрация и анализ концепций инкапсуляции в ^ C_Sharp программе «Объектно-ориентированный Банк» и др.
Литература [1, гл. 3] [4, Пр_Зан. 3, стр. 4сл.] [7, гл. 3, стр. 149…157] [8, cтр. 44…88]
Контрольные вопросы
- Каким образом использование инкапсуляции помогает достичь целей объектно-ориентированного программирования?
- Дайте определение понятию «абстракция» и приведите пример применения абстракции.
- Дайте определение понятию «реализация».
- Дайте определение понятию «интерфейс».
- Объясните разницу между интерфейсом и реализацией.
- Почему для достижения эффективной инкапсуляции важно четко распределить ответственность?
- Определите понятие типа.
- Что такое абстрактный тип данных?
- Как можно получить эффективное сокрытие реализации в сильносвязанной программе?
- Какие опасности таит абстракция?
Тема 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]
Контрольные вопросы
- Что такое наследование?
- Что такое простое наследование?
- Что такое многоуровневое наследование?
- Что такое множественное наследование?
- Что такое тесты «Is-a» и «Has-a»?
- Когда используется множественное наследование?
- Когда используется многоуровневое наследование?
- Каково максимальное количество уровней в многоуровневом наследовании?
- Какие члены класса может наследовать другой класс?
- Какова разница между базовым классом и производным классом?
- Как наследование разрушает инкапсуляцию?
Тема 4. Полиморфизм – центральное понятие в парадигме объектно ориентированного программирования
Полиморфизм – самое радикальное, универсальное средство – одно имя класса или метода представляет различный, выбранный автоматическим механизмом, программный код (полиморфизм – одно имя представляет различные поведения). Связь полиморфизма с инкапсуляцией и наследованием. Формы полиморфизма: полиморфизм включения, параметрический полиморфизм, переопределение метода, перегрузка метода. Ранее связывание (во время компиляции) и позднее связывание (во время выполнения).
Демонстрация и анализ концепций полиморфизма в модифицированной ^ C_Sharp программе «Банковский счет», в C_Sharp программе «Служащие с разной формой оплаты: начисление зарплаты» и др.
Литература [1, гл. 14] [4, Пр_Зан. 7, стр. 4сл.] [7, гл. 3, стр. 168…174] [8, cтр. 139…162]
Контрольные вопросы
- Что такое полиморфизм?
- Как реализуется полиморфизм?
- Что такое позднее связывание?
- Что такое раннее связывание?
- Каковы преимущества полиморфизма времени выполнения?
- Каковы преимущества полиморфизма времени компиляции?
- Что такое интерфейс?
- Как полиморфизм позволяет реализовать интерфейсы?
- Что такое виртуальная функция?
- Что такое перегрузка метода?
- Как инкапсуляция и наследование влияют на полиморфизм включения?
Тема 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]
Контрольные вопросы
- Что такое UML?
- Что в UML обозначают следующие символы: +, #, -?
- Каким образом выделяются абстрактные классы на UML-диаграмме?
- Что является конечной целью моделирования? Какие из этих целей являются более важными?
- Объясните суть понятий «ассоциация», «агрегация» и «композиция».
- Объясните, когда следует использовать каждое из отношений: «ассоциация», «агрегация» и «композиция».
- Что такое UML-диаграмма взаимодействия?
- Что такое сообщение с технической точки зрения?
- Что такое псевдокод, с какой целью используется?
- Есть ли специальные программные средства для использования 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]
Контрольные вопросы
- Что такое технология разработки программного обеспечения?
- Что такое итеративный процесс (итеративная технология)?
- Что является результатом проведения объектно-ориентированного анализа?
- Что описывают требования к системе?
- Что такое прецедент?
- Какие действия необходимо выполнить для определения прецедентов?
- Что такое действующий субъект?
- Какие вопросы помогают найти действующих субъектов?
- Какие отношения могут существовать между прецедентами?
- Что такое вариант прецедента?
- Что такое сценарий?
- Какие существуют способы описания прецедентов?
- Опишите разницу между различными моделями, используемыми для визуализации прецедентов.
- Чем полезна концептуальная модель?
- Чем полезно использование прецедентов?
Тема 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]
Контрольные вопросы
- Что такое ООПр?
- Что такое объектная модель?
- Каковы недостатки излишнего проектирования?
- Как определить, какие аспекты системы являются архитектурно важными?
- Каковы пять основных шагов ООПр?
- Как создать начальный список объектов?
- Что входит в полный проект?
- Что помогают определить карточки CRC?
- Что такое сотрудничество?
- Почему важно глубоко понять назначения и связи объектов?
- Что такое карточка CRC?
- Назовите хотя бы одну причину, по которой карточки CRC сделаны настолько простыми.
- Когда следует использовать карточки CRC?
- Какова основная проблема при использовании карточек CRC?
- Что такое точка взаимодействия?
Тема 8. Многократное использование проектов с помощью шаблонов проектирования
Многократное использование кода – одна из основных задач объектно-ориентированного программирования. Шаблон проектирования – это концепция проектирования доказавшая свое право на жизнь, которую можно применять многократно. Четыре элемента шаблона проектирования: название шаблона, абстрактная задача, решение, последствия. Реализация и практика применения шаблонов проектирования.
Литература [1, гл. 14, 15 ] [3, гл. 1, стр. 15…22; гл. 3, стр. 93…111; гл. 4, стр. 203…213;
гл. 5, стр. 249…263] [6, гл. 14, стр. 640…658] [8, стр. 253…301]
Контрольные вопросы
- Что такое шаблон проектирования?
- Какие четыре элемента содержит шаблон проектирования?
- Как правильно выбрать шаблон проектирования?
- Как определить, когда нужно использовать шаблон проектирования?
- Какую задачу решает шаблон Итератор (Iterator)?
- Когда следует использовать шаблон Итератор (Iterator)?
- Какую задачу решает шаблон Адаптер (Adapter)?
- Когда следует применять шаблон Адаптер (Adapter)?
- Какую задачу решает шаблон Proxy (модуль доступа, программа-посредник, агент, представитель, или заместитель)?
- Когда следует применять шаблон Proxy (модуль доступа, программа-посредник, агент, представитель, или заместитель)?
- Для решения какой задачи предназначен шаблон Абстрактной фабрики (Abstract Factory)?
- Почему следует применять шаблон Абстрактной фабрики (Abstract Factory)?
- Для решения какой задачи предназначен шаблон одноэлементного [одноточечного] множества (Singleton)?
- Почему следует применять шаблон одноэлементного [одноточечного] множества (Singleton)?
- Для решения какой задачи предназначен шаблон перечисления Typesafe Enum? Почему следует применять шаблон перечисления Typesafe Enum?
- Гарантирует ли использование шаблонов возможность создания первоклассного проекта? Объясните почему.
Тема 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]
^ Контрольные вопросы
- В чем отличие анализа, проектирования и реализации пользовательского интерфейса от соответствующих шагов разработки других частей программы?
- Почему нужно отделять пользовательский интерфейс от основной программы?
- Назовите составные MVC-триады.
- Назовите две возможные альтернативы шаблону MVC.
- Опишите обязанности модели.
- Опишите обязанности вида.
- Опишите обязанности контроллера.
- Сколько моделей может быть в системе? Сколько видов может быть в системе? Сколько контроллеров может быть в системе?
- Что может быть причиной снижения эффективности при использовании шаблона MVC?
- Какие допущения предполагает шаблон MVC?
Тема 10. Тестирование объектно ориентированного программного обеспечения
Хорошая объектно-ориентированная программа – результат тщательного анализа и проектирования, а также аккуратной реализации. Два метода испытания программного кода: тестирование методом «прозрачного ящика» и испытание методом «черного ящика». Четыре формы тестирования: тестирование элементов программы (блочное тестирование); проверка взаимодействия и функционирования компонентов системы (комплексные испытания, компоновочные испытания, совместные испытания); испытание системы (системное тестирование); регрессивное тестирование. Обработка исключений. Создание эффективной документации. JUnit – свободно распространяемый каркас тестирования для испытания Java-классов.
Демонстрация и анализ тестирования: класса ^ C_Sharp программы «Банковский счет»; класса Java программы «Банковский счет» с помощью инструмента тестирования JUnit.
Литература [6, гл. 14, стр. 658…674] [7, гл. 3, стр. 177…187] [8, стр. 324…352] [12]
Контрольные вопросы
- Почему разработчики программного обеспечения «ненавидят» тестирование?
- Что такое контрольный пример?
- Назовите два метода, которые можно положить в основу испытаний.
- Дайте определение тестирования методом «прозрачного ящика» и испытания методом «черного ящика».
- Назовите четыре формы тестирования.
- Определите понятие тестирования элементов программы.
- В чем смысл проверки взаимодействия и функционирования компонентов системы и испытания системы?
- Почему нельзя откладывать испытания до окончания проекта?
- Почему необходимо избегать ручной или визуальной проверки правильности при тестировании? В чем состоит альтернатива такой проверки?
- Что такое каркас?
- Что такое фиктивный объект?
- Почему необходимо использовать фиктивные объекты?
- Каково различие между ошибкой и состоянием ошибки?
- Как гарантировать качество программы во время написания кода?
Тематика заданий по формам контроля
1. Тематика домашних и аудиторных письменных работ
- Абстракция – учимся думать и программировать абстрактно.
- Эффективное применение инкапсуляции в объектно-ориентированном программировании.
- Открытый интерфейс и эффективное сокрытие реализации.
- Использование концепции наследования при объектно-ориентированном программировании.
- Применение простого наследования.
- Использование абстрактных классов при наследовании.
- Адаптация объектно-ориентированных программ к изменяющимся требованиям средствами полиморфизма.
- Применение полиморфизма включения.
- Переопределение – важный тип полиморфизма.
- Перегрузка – частный случай полиморфизма.
- Необходимое условие эффективного полиморфизма – эффективное применение инкапсуляции и наследования.
- Построение UML-диаграмм классов программных продуктов, разрабатываемых в домашних и аудиторных работах.
- Анализ прецедентов – случаев взаимодействия пользователя с системой – при выполнении объектно-ориентированного анализа с целью уяснения смысла задач, разрабатываемых в домашних и аудиторных работах.
- Построение концептуальной модели – выявление объектов предметной области, необходимых для адекватного описания системы – при выполнении объектно-ориентированного анализа с целью уяснения смысла задач, разрабатываемых в домашних и аудиторных работах.
- Построение объектной модели – установление взаимосвязей и структуры объектов – при выполнении объектно-ориентированного проектирования с целью приближения к искомой конструкции систем, разрабатываемых в домашних и аудиторных работах.
- Практическое применение шаблонов при выполнении объектно-ориентированного программирования.
- Программирование пользовательского интерфейса на основе объектно-ориентированного подхода в задачах, разрабатываемых в домашних и аудиторных работах.
- Реализация форм тестирования программного кода задач, разрабатываемых в домашних и аудиторных работах.
^ 2. Тематика рефератов
- Характеристика технологии .NET
- Парадигма объектно-ориентированного программирования и ее преимущества
- Моделирование реального мира в компьютерном приложении
- Сравнительный анализ основных парадигм программирования.
- Сравнительный анализ объектно-ориентированных языков программирования
- Полиморфизм, инкапсуляция и наследование – краеугольные камни парадигмы объектно-ориентированного программирования
- Интегрированные среды разработки программ
- Технологии разработки программных продуктов
- Принципы создания интерфейса пользователя
- Отладка и документирование программ
- Методы объектно-ориентированного анализа и проектирования программного обеспечения
- Принципы построения и элементы объектно-ориентированных моделей программных систем
- Библиотеки типовых компонент
- Принципы и методы классификации объектов
- Использование шаблонов при проектировании программных продуктов
- Основные направления развития объектно-ориентированной методологии
- Программная реализация концепций полиморфизма, инкапсуляции и наследования в объектно ориентированном языке программирования C#
- Интерфейсы в языке С# – эквивалент (имитация) множественного наследования
^ 3. Тематика курсовых работ
- Моделирование работы банка
- Моделирование работы и облуживания банкомата
- Моделирование работы четырех светофоров на перекрестке
- Моделирование системы лифтов здания
- Моделирование работы склада
- Моделирование работы отдела кадров
- Моделирование работы Дома Мод
- Моделирование Салона Красоты
- Моделирование игровой ситуации – компьютерная игра
- Моделирование концептуальной системы тестирования знаний
- Моделирование системы определения цены на новый товар
- Моделирование электронного магазина, специализирующегося на комиссионной торговле
- Моделирование электронного магазина с организацией лотерей
- Моделирование электронного магазина розничной торговли по оптовым ценам
- Моделирование концептуальной системы анализа поведения посетителей супермаркета
- Моделирование системы оплаты заказа с использованием терминала автоматизированной системы
- Моделирование поведения потребителя на рынке
- Моделирование системы формирования предложений для клиента торговой фирмы
- Авторские темы, предлагаемые студентами в соответствии с содержанием дисциплины
Вопросы для оценки качества освоения дисциплины
- Сложность программных систем: признаки сложности программной системы
- Методы проектирования сложных систем
- Методы декомпозиции сложных систем. Принципы объектно-ориентированной декомпозиции
- Виды объектно-ориентированных моделей системы
- Соотношение этапов объектно-ориентированной методологии: анализ, проектирование и программирование.
- Стили проектирования и виды абстракции
- Объект: определение, состояние, протокол объекта
- Абстракция и методы классификации объектов
- Идентификация классов и объектов
- Отношения между объектами: связи, агрегации
- Назначение и компоненты диаграммы объектов
- Классы: определение, спецификация класса
- Роль классов и объектов в анализе и проектировании. Ключевые абстракции.
- Назначение и компоненты диаграммы классов
- Отношения между классами
- Отношения наследования
- Критерии оценки качества классов и объектов.
- Состояния и события. Назначение и компоненты диаграммы состояний
- Компоненты диаграммы деятельности
- Моделирование жизненного цикла объекта
- Моделирование исключений. Программирование исключений на языке С#
- Моделирование взаимодействия объектов
- Виды диаграмм, описывающих взаимодействия. Компоненты диаграмм.
- Потоки управления. Активные классы и объекты. Моделирование потока управления.
- Виды взаимодействия объектов в системе, содержащей активные и пассивные объекты. Моделирование нескольких потоков управления.
- Прецеденты. Моделирование контекста системы с использованием прецедентов
- Организация прецедентов. Назначение и компоненты диаграммы прецедентов.
- Моделирование требований к системе с использованием прецедентов.
- Компоненты диаграммы развертывания. Использование диаграмм развертывания для анализа устройств.
- Рациональный унифицированный процесс: цели, особенности.
- Процессы, фазы, итерации и циклы разработки
- Определение прецедентов, создающихся на различных этапах планирования и анализа
- Моделирование системной архитектуры
- Моделирование системы с использованием представлений
- Качество программного продукта. Характеристики качества программного продукта
- Современные модели качества программного обеспечения
- Пространства имен в .NET
- Базовые классы пространства имен System
- Определение класса и его компонент в языке С#
- Методы классов. Перегрузка методов.
- Принципы инкапсуляции и модификаторы доступа в языке C#
- Отношения наследования. Реализация наследования в языке С#
- Формы полиморфизма. Реализация полиморфизма в языке С#
- Интерфейсы в языке С# и их программная реализация
- Делегаты и обработка событий в языке C#
- Шаблоны проектирования. Использование шаблонов проектирования при создании программного обеспечения
Автор программы / Забудский Е.И./
Приложение
Методические рекомендации и материалы преподавателю
Практические занятия по дисциплине проводятся в компьютерном классе в следующих средах:
- 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