КАЗАНСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

им. А. Н. ТУПОЛЕВА

УТВЕРЖДАЮ:

Проректор по учебно-методической

работе

_________________

«_____» _______________ 2006 г.

ПРОГРАММА ДИСЦИПЛИНЫ

"ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ"

Рекомендуется УМЦ КГТУ им. для направлений

(специальностей)

направления: 230100 «Информатика и вычислительная техника»

230200 «Информационные системы»

специальности: 230102 «Автоматизированные системы обработки

информации и управления»

230201 «Информационные системы и технологии»

230101 «Вычислительные машины, комплексы,

системы и сети»

специализации:

формы обучения: очная, очно-заочная

1.  Цели и задачи дисциплины

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

Задачами дисциплины является изучение основных понятий и положений объектно-ориентированного программирования, знакомство с объектно-ориентированными средствами языков программирования C++, C++.NET и C#, организацией процесса разработки и отладки консольных и Windows приложений.

Материал курса основан на знаниях, навыках и умениях полученных студентами при изучении дисциплин: «Дискретная математика» и «Программирование на языках высокого уровня

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

НЕ нашли? Не то? Что вы ищете?

Студенты должны иметь практические навыки разработки программ на языке С, навыки работы c операционными системами.

Знания, умения и навыки, полученные в процессе изучения данного курса, могут быть использованы студентами для изучения дисциплин «Технология программирования», «Базы данных», «Управление данными», «Информационные технологии», «Сетевые технологии», «Организация ЭВМ и систем», а также при выполнении бакалаврских и дипломных работ.

2.  Требования к уровню освоения содержания дисциплины

В результате изучения дисциплины студенты должны:

- знать:

-  основные положения объектно-ориентированного программирования;

-  организацию отладки объектно-ориентированных программ;

-  разработку классов и создания из них объектов;

-  создание потоков и синхронизацию их параллельного выполнения;

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

-  создание консольных и Windows приложений на базе библиотеки классов. NET Framework;

-  основные диаграммы языка UML;

- основы .NET технологии программирования;

-уметь разрабатывать много объектные программы на основе .NET технологии программирования;

- иметь представление о перспективах и тенденциях развития объектно-ориентированного программирования.

3.  Объем дисциплины и виды учебной работы

Виды учебной работы

Очное

Очно-заочное

Всего

Семестры

Семестры

3(4)

3

Общая трудоемкость дисциплины

102

102

102

Аудиторные занятия (всего)

34

34

34

Лекции

34

34

34

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

17

17

17

Семинары (С)

0

0

0

Лабораторные работы (ЛР)

34

34

34

Другие виды аудиторных занятий

0

0

0

Самостоятельная работа (всего)

34

34

34

Курсовой проект (работа)

0

0

0

Расчетно-графические работы

0

0

0

Реферат

0

0

0

Другие виды самостоятельной работы

0

0

0

Вид итогового контроля

Экзамен

Экзамен

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

4.1.  Тематический план *):

*) Используемые сокращения: ЛК –лекции, ЛБ – лабораторные работы, ПК – практическое занятие.

№ пп

Наименование тем
Очное

Очно-заочное

ЛК

ЛБ

ПК

ЛК

ЛБ
ПК

1

Введение

1

0

0

1

0

0

2

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

4

0

2

4

0

2

3

.NET технология программирования

1

0

0

1

0

0

4

Некоторые особенности языков C++, C++.NET и C#.

4

4

2

4

4

2

5

Классы

2

0

2

2

0

2

6

Виртуальные функции

2

0

0

2

2

0

7

Управляемые данные и их использование

4

4

4

4

4

4

8

Программа ввода-вывода информации

2

0

0

1

0

0

9

Потоки и синхронизация их выполнения

4

4

3

3

4

3

10

Библиотека .NET Framework

6

4

4

6

4

4

11

Разработка программ с потоковыми компонентами, контейнером и удалённым объектом

4

0

0

4

0

0

Всего

34

17

17

34

17

17

4.2.  Содержание тем (Курсивом выделены понятия, указанные в ГОСах)

1.  Введение (очное: 1/1; очно-заочное: 1/1)

Цель и задачи дисциплины. Обзор литературы. Место объектно-ориентированного программирования в разработке программ.

2.  Основные понятия объектно-ориентированного программирования (очное: 6/6; очно-заочное: 6/6)

Объекты. Классы. UML, объекты и классы. Основные свойства объектно-ориентированного программирования. Библиотеки классов. Компоненты.

3.  .NET технология программирования (очное: 1/1; очно-заочное: 1/1)

Общеязыковая среда выполнения. Управляемый и неуправляемый код и данные. Сборка мусора. Ссылочные типы и типы-значения. Метаданные. Пространство имён

4.  Некоторые особенности языков C++, C++.NET и C# (очное: 10/10; очно-заочное: 10/10)

Консольный ввод и вывод. Объявления переменных. Операторы динамического распределения памяти. Массивы. Объявления структур и перечислений. Ссылки. Перегрузка функций. Объявления функций и передача аргументов по умолчанию. Передача аргументов функций в языках C++.NET и C#.

5.  Классы (очное: 4/4; очно-заочное: 4/4)

Определение класса. Подставляемые функции и оператор привязки. Некоторые замечания о классах. Объекты в объектах. Конструкторы и деструкторы. Статические функции классов. Наследование классов. Упаковка и распаковка типов данных.

6.  Виртуальные функции (очное: 12/12; очно-заочное: 12/12)

Преобразование типов. Виртуальные функции. Таблица виртуальных функций, интерфейсы и абстрактные классы.

7.  Управляемые данные и их использование (очное: 4/4; очно-заочное: 4/4)

Свойства. Делегаты. События и их использование События и данные событий.

8.  Программа ввода-вывода информации (очное: 2/2; очно-заочное: 2/2)

Постановка задачи. Диаграмма вариантов использования. Диаграмма классов. Диаграмма последовательности. Особенности реализации программы на разных языках

9.  Потоки и синхронизация их выполнения (очное: 11/11; очно-заочное: 11/11)

Процессы. Потоки. Параллельно выполняющиеся потоковые объекты. Потоковые объекты, генерирующие и получающие события. Синхронизация потоков.

10.  Библиотека.NET Framework (очное: 14/14; очно-заочное: 14/14)

Windows-приложения. Классы, объекты и элементы Windows. Простейшее Windows-приложение. События и делегаты Windows. Графические классы. Событие и функция перерисовки. Управляющие элементы. Дочерние окна.

11.  Разработка программ с потоковыми компонентами, контейнером и удалённым объектом (очное: 4/4; очно-заочное: 4/4)

Потоковые компоненты и их взаимосвязи. Коллекции. Списки и их использования для объединения компонентов. Поэтапная реализация многокомпонентной программы, особенности её разработки и отладки.

4.3.  Лабораторный практикум

№п/п

Номер темы дисцип-лины

Объем в часах

Наименование лабораторных работ

Очное

Очно-заочное

1.

4

4

4

Особенности языков C++.NET и C# их использования.

2

7

4

4

Реализация свойств, делегатов и событий на C++.NET и C#.

3.

9

4

4

Реализация потоков на C++.NET и C# и особенности их использования с событиями.

4

10

4

4

Использование библиотеки. NET Framework.

Лабораторный практикум включает 4 лабораторные работы:

Лабораторная работа 1. Использование Visual Studio .NET для разработки простых программ на языках C++.NET и C#.

Лабораторная работа 2. Реализация свойств, делегатов и событий на C++.NET и C#.

Лабораторная работа 3. Реализация потоков на C++.NET и C# и особенности их использования с событиями

Лабораторная работа 4. Использование библиотеки.NET Framework.

При выполнении лабораторных работ используются изданные пособия:

Медведев на C++, С++.NET и С#. – Казань: Мастер Лайн, 2005. – 270 c.: ил.

В начале лабораторной работы выполняется один из многочисленных примеров программ из книги соответствующей теме. Затем эта программа многократно модифицируется студентами.

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

№п/п

Номер темы дисцип-лины

Объем в часах

Наименование практических занятий

Очное

Очно-заочное

1.

2

2

2

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

2

4

2

2

Некоторые особенности языков C++, C++.NET и C#.

3.

5

2

2

Классы

4

7

4

4

Управляемые данные и их использование

5

9

3

3

Потоки и синхронизация их выполнения

6

10

4

4

Библиотека. NET Framework

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

4.5.  Курсовой проект (работа) и его содержание

Курсовая работа связана с разработкой многокомпонентной программы на базе современной. NET технологии. В курсовой работе поэтапно разрабатываются потоковые компоненты с использование диаграмм унифицированного языка моделирования UML. Реализация компонентов осуществляется на языках объектно-ориентированного программирования С++.NET и С#. Широко использованы потоки как в компонентах, так и для управления функционирования компонентов.

5. Учебно-методическое обеспечение дисциплины

5.1 Рекомендуемая литература

а) основная литература:

1. Медведев объектно-ориентированных программ. – Казань: Мастер Лайн, 2004. – 124 c.: ил.

2. Медведев -ориентированное программирование. Учебник. –

Казань: Мастер Лайн, 2004. – 252 c.: ил.

3. Медведев на C++, C++.NET и C# (Серия “Современная прикладная математика и информатика”). – Казань: Мастер Лайн, 2005. – 270 c.: ил.

б) дополнительная литература:

1. Аравинд Корера, Стивен Фрейзер, Сэм Джентайл, Нираджан Кумар, Скотт Маклин, Саймон Робинсон, . Visual C++.NET: Пособие для разработчиков С++. – М.: Издательство “ЛОРИ”, 2003. – 398 с.: ил.

2. .NET Framework. Секреты создания Windows-приложений. – М.: СОЛОН-Пресс, 2004. – 496 с.: ил.

3. Гербердт Шилдт. C#: учебный курс. – СПб.: Питер; К.: Издательская группа BHV, 2003. – 512 c.: ил.

4. и др. Объектно-ориентированное программирование: Учеб. для вузов. – М.: Изд-во МВТУ им. , 2001. – 320 c.

5. Программирование для Microsoft Windows на C#. В 2-х томах/Пер. с англ. – М.: Издательско-торговый дом “Русская Редакция”, 2002. – 576 + 624 с.: ил.

6. Рамбо Дж., UML: специальный справочник. – СПб.: Питер, 2002. – 656 c.

7. Язык программирования С++: Пер. с англ. – СПб.; М.: Невский проспект - Изд-во БИНОМ, 1999. – 991 с.

5.2 Средства обеспечения освоения дисциплины

Программное обеспечение для выполнения лабораторных работ и самостоятельной работы студентов:

1.  Windows XP.

2  Visual .

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

Для проведения лабораторных работ и организации самостоятельной работы студентов необходимо иметь учебный класс, оснащенный локальной вычислительной сетью с рабочими станциями :IBM PC:, процессором Pentium  IV и выше, 512 Mбайт ОЗУ, SVGA, видеокарта 800´600, 65536 цветов, 16-битная звуковая карта, MS Windows совместимая мышь, CD-ROM, DVD.

Программу составили:

, доцент каф. АСОИУ КГТУ им.

_____________________

Программа обсуждена и одобрена на заседании кафедры АСОИУ

13 г., протокол

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

д. т.н., профессор

Председатель Учебно-методической

комиссии факультета, доцент

Декан факультета

д. т.н., профессор

ПРИЛОЖЕНИЕ 1

СПИСОК ВОПРОСОВ ДЛЯ САМОСТОЯТЕЛЬНОГО ИЗУЧЕНИЯ

1.  Дайте определение класса.

2.  Дайте определение объекта.

3.  Что понимается под состоянием и поведением объекта, как они представляются в классе?

4.  Объясните достоинства и недостатки языков С++, С++.NET и C#?

5.  Поясните понятие инкапсуляция.?

6.  Поясните понятие наследование.

7.  Поясните понятие полиморфизм.

8.  Какие библиотеки классов Вы знаете и в чём их отличие?

9.  Что такое компонент?

10.  Какая основная функция общеязыковой среды выполнения?

11.  Поясните назначение сборщика мусора.

12.  Определите достоинства и недостатки неуправляемого и управляемого кода.

13.  Как определить управляемые, неуправляемые данные и данные типа значения на языке С++.NET?

14.  Расскажите об особенностях распределения памяти для неуправляемых и управляемых данных.

15.  Перечислить ключевые слова управляемого расширения языка С++.NET.

16.  Какие модели системного структурирования вы знаете?

17.  В чём отличие описания и использования массивов в языках С++.NET и C#?

18.  Что такое пространство имён?

19.  Какие существуют особенности при передаче значений параметров в функциях языков С++.NET и C#?

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

21.  Что такое оператор привязки?

22.  Как и где используются подставляемые функции?

23.  Назначение конструктора и деструктора.

24.  Определите понятие статической функции.

25.  Какая грамматика наследования классов?

26.  Чем отличается наследование классов в языках С++.NET и C#?

27.  Для чего необходима упаковка типов данных?

28.  Поясните необходимость виртуальных функций и их отличие от обычных функций.

29.  Как описываются и используются свойства классов?

30.  Что такое делегат?

31.  Дайте общую характеристику способов описания типов делегатов, создания и использования их экземпляров.

32.  В чём отличие события от делегата?

33.  Поясните термины источник, приёмник, издатель и подписчик.

34.  Как создать рабочий поток?

35.  Какие особенности удаления рабочих потоков?

36.  Охарактеризуйте способы синхронизации параллельного выполнения потоков.

37.  В чём отличие классов, объектов и элементов Windows?

38.  Как создать прикладное окно?

39.  Поясните шаги создания приложения, реагирующего на нажатие клавиши мыши.

40.  Поясните шаги создания приложения, реагирующего на нажатие на кнопку.

41.  Как осуществить перерисовку области клиента прикладного окна?

42.  Какие графические классы Вы знаете?

43.  Что такоё дочернее окно и как его создать?

44.  Дайте характеристику диаграммы классов?

45.  Дайте характеристику диаграммы последовательности?

46.  Какие строительные блоки образует словарь UML? Охарактеризуйте их.

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

ПРИЛОЖЕНИЕ 2

МЕТОДИЧЕСКИЕ УКАЗАНИЯ К КУРСОВОЙ РАБОТЕ

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

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

Среда реализации. Разрабатываемый программный код необходимо реализовать, используя. NET технологию в среде Visual .

Требования к разработке.

1.  Разрабатываемую программную систему реализовать на языках C++.NET и C#.

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

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

4.  Первая версия программы системы реализовать на языке C#, а вторую – на C++.NET.

5.  Обязательно разработать базовые интерфейсы и базовые классы, которые активно использовать при разработке других интерфейсов и классов.

6.  Продумать синхронизацию параллельного выполнения потоков.

7.  Тщательно продумать взаимосвязь между объектами с помощью событий.

8.  Использовать с событиями данные в соответствии с рекомендацией фирмы Microsoft.

9.  Активно использовать делегаты.

10.  Функционирование объектов и их взаимосвязь должны быть отображены в прикладном и дочерних окнах.

11.  При реализации пользовательского интерфейса использовать максимально возможные типы интерфейсных элементов библиотеки классов. NET Framework.

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

Содержание пояснительной записки.

1.  Задание. Содержит исходные данные к курсовой работе и описание функционирования программы.

2.  Уточнение задания. По желанию студента задание уточняется, учитывая ряд деталей, предлагаемых студентом.

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

4.  Описание объектов программы и их взаимосвязи. На предварительном уровне рассматриваются всевозможные типы объектов проектируемой программы и их интерфейсная и событийная связи.

5.  Описание классов объектов программной системы. Для каждого типа объекта предыдущего раздела разрабатывается класс. Классы связываются друг с другом, образуя предварительную диаграмму классов программы, которая будет уточняться в процессе поэтапной разработки программной системы.

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

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

8.  Описание всех используемых событий, делегатов событий и данных событий. Описать события применительно к совместному функционированию объектов.

9.  Проблемы, возникшие при разработке программы и их разрешение. Описать задержки в разработке программной системы, связанные с допущенными ошибками в алгоритмах. Как эти проблемы были разрешены?

10. Список используемой литературы.

11. Приложение 1. Листинг программы на языке С++.NET. C#

12. Приложение 2. Листинг программы на языке C#.

13. Приложение 3. Диаграмма классов программы.