Министерство образования Российской Федерации Санкт-Петербургский государственный электротехнический университет “ЛЭТИ”
...
12 downloads
179 Views
153KB Size
Report
This content was uploaded by our users and we assume good faith they have the permission to share this book. If you own the copyright to this book and it is wrongfully on our website, we offer a simple DMCA procedure to remove your content from our site. Start by pressing the button below!
Report copyright / DMCA form
Министерство образования Российской Федерации Санкт-Петербургский государственный электротехнический университет “ЛЭТИ”
РАБОЧАЯ ПРОГРАММА дисциплины
ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ
Для подготовки бакалавров по направлению: 552800 “Информатика и вычислительная техника” Для подготовки дипломированных специалистов по направлению: 654600 “Информатика и вычислительная техника” по специальности: 220400 “Программное обеспечение вычислительной техники и автоматизированных систем”
Санкт-Петербург 2000
Санкт-Петербургский государственный электротехнический университет “ЛЭТИ”
“УТВЕРЖДАЮ” Проректор по учебной работе проф. ___________ Ушаков В.Н.
РАБОЧАЯ ПРОГРАММА дисциплины ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ Для подготовки бакалавров по направлению: 552800 “Информатика и вычислительная техника” Для подготовки дипломированных специалистов по направлению: 654600 “Информатика и вычислительная техника” по специальности: 220400 “Программное обеспечение вычислительной техники и автоматизированных систем” Факультет компьютерных технологий и информатики Кафедра математического обеспечения и применения ЭВМ Курс – 4 Семестр – 7 Лекции
48 ч.
Экзамен
7 семестр
Лабораторные занятия
16 ч.
Зачет
7 семестр
Курсовое проектирование
16 ч.
Аудиторные занятия Самостоятельные занятия Всего часов
80 ч. 60 ч. 140 ч.
2000
2
Рабочая программа обсуждена на заседании кафедры математического обеспечения и применения ЭВМ 20 апреля 2000 г., протокол № 2. Рабочая программа составлена в соответствии с государственными образовательными стандартами: Для подготовки бакалавров по направлению: 552800 “Информатика и вычислительная техника” Для подготовки дипломированных специалистов по направлению: 654600 “Информатика и вычислительная техника” по специальности: 220400 “Программное обеспечение вычислительной техники и автоматизированных систем” Рабочая программа согласована с рабочими программами изученных ранее дисциплин: 1) Программирование 2) Структуры и алгоритмы обработки данных 3) Моделирование Рабочая программа одобрена методической комиссией факультета компьютерных технологий и информатики 27 апреля 2000 г.
3
Цели и задачи дисциплины •
•
Изучение и практическое освоение методов и средств объектно-ориентированного программирования как одной из основных, перспективных и бурно развивающихся моделей программирования, являющейся в настоящее время базой для создания программных систем и составляющей фундаментальную компоненту образования программиста-профессионала. Приобретение знаний и навыков, активно востребованных на рынке труда в области информационных технологий.
Требования к уровню освоения дисциплины В результате изучения дисциплины студенты должны: • знать и уметь использовать: - основные положения концепции объектно-ориентированного программирования, - основные приемы объектно-ориентированного решения задач и способы построения объектноориентированных алгоритмов, - теоретические основы, методы, способы и приемы объектно-ориентированного программирования, - способы отладки и испытания объектно-ориентированных программ;
• • -
иметь опыт: самостоятельной разработки, отладки, испытаний и документирования программ на языке объектноориентированного программирования для решения задач обработки числовой и текстовой информации, организации диалога с пользователем, моделирования; иметь представление: о способах проектирования объектно-ориентированных программных систем,
-
об архитектуре и возможностях современных языков объектно-ориентированного программирования.
-
Содержание дисциплины Введение Причины появления и актуальность объектно-ориентированного программирования (ООП) как направления современной теории и практики создания программных систем. Основные области применения ООП: разработка программ, создание баз данных, построение прикладных систем. Основные преимущества применения ООП при создании программных систем. Предмет дисциплины, краткая характеристика содержания курса, место дисциплины в ряду дисциплин учебного плана. 1. ТЕОРЕТИЧЕСКИЕ ОСНОВЫ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ Тема 1. Основные идеи ООП Факторы, обусловившие появление и содержание концепции ООП. Основные идеи ООП: использование объекта в качестве основной компоненты программы и децентрализация управления, реализуемое представлением программы как описания взаимодействия объектов. Структура концепции ООП.
4
Тема 2. Основные модели ООП Объект как совокупность данных и набора операций. Семантика объекта: данные как отражение состояния объекта и методы как средства обеспечения взаимодействия объектов. Представление данных. Классификация методов: конструкторы, деструкторы, селекторы и модификаторы. Примеры. Объекты ООП и объекты реального мира. Наглядное представление объектов. Классы объектов: назначение и семантика. Класс как абстракция совокупности объектов. Классы и абстрактные типы данных. Инкапсуляция: назначение, предмет, прагматика. Инкапсуляция и области видимости. Защита на уровне объекта и на уровне класса. Наглядное представление классов. Объекты как экземпляры классов. Необходимость определения состояния. Основные действия с объектами: создание, инициализация, использование, разрушение (уничтожение). Отношение наследования для классов. Реализация спецификации и обобщения свойств объектов. Простое и множественное наследование. Сценарии наследования. Иерархия классов. Наглядное представление классов, связанных отношением наследования. Модель вычислений: управление объектами с помощью передачи сообщений. Программа как описание взаимодействия объектов. Полиморфизм: назначение и семантика. Виды и реализации полиморфизма: чистый, включения, параметрический, специализации. Формулировка концепции ООП. Место и роль ООП в теории и практике разработки программных систем.
2. ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ С++ Тема 3. Реализация концепции ООП в языках программирования Основные свойства языка ООП. Классификация и номенклатура языков, сферы применения. Место языка С++ во внедрении и развитии средств ООП. Метафора объектноориентированного программирования, реализуемая языком С++. Значение языка С++ для профессиональной подготовки программистов. Тема 4. Классы объектов Синтаксическая структура определения класса. Члены-данные и члены-функции. Клиенты класса. Способы задания доступа к членам класса. Члены-данные: назначение и основные свойства. Синтаксис и семантика определений членов-данных. Использование предопределенных и пользовательских типов, массивов и указателей. Примеры. Члены-функции: назначение и основные свойства. Доступ членов-функций к членам класса. Функции-селекторы и функции-модификаторы. Примеры. Определение и объявление членов-функций в классе. Параметры членов-функций. Способы передачи значений в тело и из тела функции. Встроенные функции: определение, семантика, использование. Определение членов-функций вне класса: синтаксис и семантика. Рекомендации по использованию. Инкапсуляция данных и методов в классах языка С++. Способы задание класса в программе. Проект класса: назначение и использование. 5
Файловые структуры задания класса. Тестирование класса. Тема 5. Члены класса, общие для всех экземпляров Назначение членов класса, общих для всех объектов класса. Примеры. Реализация с помощью статических членов-данных и статических членов-функций. Рекомендации по использованию в программах. Примеры. Тема 6. Создание объектов класса Конструкторы класса как средства создания объектов. Возможность наличия нескольких конструкторов у одного класса. Создание объектов на основе различной априорной информации: конструкторы со значениями параметров, задаваемыми по умолчанию, конструкторы копирования, конструкторы преобразования. Конструкторы, создаваемые компилятором по умолчанию: виды, способы доступа и назначение. Явное описание (определение или объявление) конструктора. Параметры конструктора, их спецификация и возможности использования. Программирование алгоритма конструктора. Размещение описания в определении класса и влияние размещения на способы создания объектов. Конструкторы со значениями параметров, задаваемыми по умолчанию. Конструкторы копирования: назначение, номенклатура, способы задания. Конструкторы преобразования: назначение, номенклатура, способы задания. Вызов конструктора: назначение, способы реализации, задание аргументов. Явный и автоматический вызовы: ситуации использования, рекомендации по применению. Возможности конструкторов для реализации моделей ООП. Использование конструкторов для инициализации объектов и преобразования значений объектов различных классов. Отладка и тестирование конструкторов класса. Тема 7. Проектирование конструкторов Ситуации, в которых необходимо явное задание конструкторов. Информация, требуемая для разработки конструктора: структура объекта, условия его создания и использования в программе. Необходимость проектирования согласованной системы конструкторов. Методика и пример проектирования. Отладка и тестирование системы конструкторов. Тема 8. Разрушение (уничтожение) объектов Деструктор как средство разрушения и уничтожения объекта: основные свойства. Деструктор, создаваемый компилятором по умолчанию: семантика и способ доступа. Явное задание деструктора. Программирование тела: использование членов-данных и членов функций класса. Размещение описания в определении класса и влияние размещения на способы уничтожения объектов. Размещение описания вне класса. Вызов деструктора: ситуации автоматического вызова. Исполнение тела: вызов деструкторов членов-данных. Отладка и тестирование деструкторов. Тема 9. Конструирование класса объектов Необходимость конструирования класса. Принципы построения класса и их реализация. Примеры. Этапы построения класса. Определение состава членов класса и их свойств, способов доступа к членам класса. Проектирование класса по контракту. Контракт: назначение, содержание, 6
прагматика. Инварианты класса, пред- и постусловия для членов-функций. Определение инвариантов и формулирование пред- и постусловий. Проектирование согласованной системы конструкторов и деструкторов класса: ситуации, требующие проектирования, определение состава системы. Реализация системы. Использование в классе переопределений операторов и функций. Определение структуры набора файлов, задающих определение класса. Методика тестирования класса на основе контракта. Тема 10. Классы, связанные отношением наследования Отношение наследования: способ задания в языке С++. Базовый и производный классы. Вложение моделей классов и областей видимости. Реализация сценариев наследования, предусмотренных моделями ООП. Соотношение наследования класса и включения в производный класс объекта этого же класса. Пример. Клиенты базового класса. Управление доступом к членам базового класса: влияние спецификаторов доступа, использованных при установлении отношения наследования. Построение производного класса специализацией базового. Построение базового класса обобщением свойств набора классов. Иерархия классов, определяемая отношением наследования. Конструирование иерархий классов. Принципы построения, рекомендации, примеры. Конструкторы и деструкторы производного и базового классов: определение, вызов. Виртуальные функции: назначение, определение, семантика. Вызов виртуальных функций. Программирование виртуальных функций. Рекомендации по использованию. Абстрактные классы: назначение, построение, использование. Виртуальные базовые классы: назначение, определение, семантика, применение. Множественное наследование как способ представления объекта с нескольких точек зрения. Определение отношения множественного наследования: синтаксис и семантика. Практическое использование множественного наследования. Виртуальные функции при множественном наследовании. Тестирование систем классов, связанных отношением наследования. Тема 11. Разработка объектно-ориентированных программ Структура объектно-ориентированной программы: разделение описаний (проектов) классов и определений членов-функций. Области видимости и время существования переменных. Локальные, статические и глобальные переменные. Организация файловой структуры программы для эффективной разработки, отладки и модификации. Методика тестирования объектно-ориентированных программ. Заключение
Преимущества и недостатки объектно-ориентированного программирования, выявленные практикой разработки программных систем. Основные тенденции и направления развития объектно-ориентированных технологий создания программ в условиях распределения процесса разработки в пространстве и во времени и необходимости обеспечения качества программных продуктов.
7
Перечень лабораторных работ
№
Наименование работы
1
Программирование и использование классов объектов, представленных каждый с одной точки зрения Программирование и применение системы средств создания и уничтожения объектов Программирование и использование классов, содержащих члены, общие для всех экземпляров класса Программирование и применение классов, содержащих члены, являющиеся объектами пользовательских классов Программирование и использование классов, специализированных с помощью отношения простого наследования Программирование и применение классов объектов, представленных с нескольких точек зрения (использование множественного наследования) Программирование, отладка и тестирование класса, представляющего клиента системы обмена сообщениями Программирование, отладка и тестирование класса, представляющего сервер системы обмена сообщениями
2 3 4 5 6 7 8
Номер темы программы 3, 4 4, 6, 8 4, 5, 6, 7, 8 6, 7, 8, 9 7, 10, 11 7, 10, 11 2, 3, 10, 11 2, 3, 10, 11
Цели и содержание курсового проекта Цель состоит в практическом освоении методов, приемов и инструментальных средств разработки объектно-ориентированных программ на основе концепции жизненного цикла, включая построение объектно-ориентированной модели решаемой задачи|, этапы проектирования, реализации, отладки и тестирования программы на языке С++. Содержание составляет построение объектно-ориентированной программы методом сборки из ранее созданных программных компонентов и реализация взаимодействия компонентов с помощью обмена сообщениями. Способ выполнения предусматривает поэтапную модернизацию объектноориентированных программ, создаваемых на основе индивидуальных заданий в цикле лабораторных работ и реализует профессиональный процесс повторного использования программных продуктов и накапливаемого при разработке опыта. Ориентировочная трудоемкость – 32 час.
8
Распределение учебных часов по темам и видам занятий
Номер темы
Объем учебных часов Наименование разделов
Введение Основные идеи ООП Основные модели ООП 3 Реализация концепции ООП в языках программирования 4 Классы объектов 5 Члены классов, общие для всех экземпляров 6 Создание объектов класса 7 Проектирование конструкторов 8 Уничтожение объектов 9 Конструирование класса объектов 10 Классы, связанные отношением наследования 11 Разработка объектноориентированных программ Заключение Курсовое проектирование ИТОГО 1 2
Лекции
Лаборат. Занятия
Практич. занятия
Аудитор. Занятия
Самост. Работа
Всего
Семестр
1 1 5
1,5 2 16
7 7 7
0,5 1 10
1
0,5 1 11
1
1
2
1
3
7
7 2
2 1
9 3
6 2
15 5
7 7
4
1
5
2
7
7
3
1
4
2
6
7
1
1
2
1
3
7
5
2
7
3
10
7
10
3
13
10
23
7
3
3
6
10
16
7
16 60
0,5 32 140
7
16
0,5 16 80
0,5 48
7
9
ЛИТЕРАТУРА Основная
№
1
2 3
Название, библиографическое описание
Л Лр Кр
Буч Г. Объектно-ориентированный анализ и проектирование с примерами приложений на С++, 2- 7 ое издание. Учебник / Пер. с англ.. – М.:"Издательство Бином", СПб.: "Невский диалект", 1999. – 560 с. Бадд Т. Объектно-ориентированное 7 программирование в действии. Учебник / Пер. с англ. – Питер, 1997. – 464 с. Фридман А.Л. Основы объектно-ориентированного 7 программирования на языке С++.- Учебник М.: Горячая линия –Телеком, Радио и связь, 1999. – 208 с.
К-во экз. в библ. (на каф.) 3:
7
7
1998ф1; 2001ф2;
7
7
20
7
7 Уч 0 Ф2
Гриф
Мин. общ. и проф. обр.РФ
Мин. общ. и проф. обр.РФ Мин. обр. РФ
Дополнительная №
Название, библиографическое описание 1
К-во экз. в библ. (на каф.)
Страуструп Б. Язык программирования С++, 3-е изд./ Пер. с англ. - СПб.: Уч -10, Ф-2 ″Невский диалект″, М.: ″Издательство БИНОМ″.- 1999.- 991 с. Чз1-2
2
Дейтел Х., Дейтел П. Как программировать на С++ /Пер. с англ.- М.: ЗАО Уч –28, Ф-2 ″Издательство БИНОМ″, 1998.- 1024 с.
3
Фридман А.Л. Основы объектно-ориентированной разработки программных систем.- М.: Финансы и статистика, 2000.- 192 с. (Прикладные информационные технологии) Пол А. Объектно-ориентированное программирование на С++, 2-ое изд. / Пер. с англ. – СПб.: ″Невский диалект″, М.: Издательство ″БИНОМ″, 1999. – 462 с.
4
Уч 0 Ф-0 Уч 0 Ф-0
10
Автор: к.т.н., доцент
Смольянинов А.В.
Рецензент к.т.н., доцент
Сульповар В.Л.
Зав. кафедрой математического обеспечения и применения ЭВМ д.т.н., профессор
Лисс А.Р.
Декан факультета компьютерных технологий и информатики д.т.н., профессор
Герасимов И.В.
Программа согласована: Зав. отделом учебной литературы
Смирнова О.Н.
Председатель методической комиссии факультета компьютерных технологий и информатики к.т.н., доцент
Михалков В.А.
Руководитель методического отдела к.т.н., доцент
Марасина Л.А.
11