Программа курса «Объектно-ориентированное программирование»
Вид материала | Программа курса |
- Рабочая программа учебной дисциплины (модуля) Объектно-ориентированное программирование, 99.17kb.
- Программа вступительного экзамена по специальности 05. 13. 18 Математическое моделирование,, 115.33kb.
- Программа дисциплины Объектно-ориентированное программирование Рекомендуется для направления, 591.42kb.
- Пояснительная записка к курсовому проекту по дисциплине: «Объектно-ориентированное, 43.57kb.
- Рабочая программа курса "Алгоритмические языки программирования, 25.98kb.
- Рабочая программа дисциплины «Объектно-ориентированное программирование» для специальности, 325.53kb.
- Лекции по курсу «Объектно-ориентированное программирование», 85.08kb.
- Рабочая программа наименование дисциплины Объектно-ориентированное программирование, 207.39kb.
- Учебно-методический комплекс для студентов заочного обучения специальности Прикладная, 63.23kb.
- «Основы алгоритмизации и объектно-ориентированного программирования на языке Gambas», 318.06kb.
Программа курса
«Объектно-ориентированное программирование»
ФИТ, 2 курс
3 семестр
Объектно-ориентированная модель
- Основные принципы объектно-ориентированного программирования (4 часа)
- Эволюция методологий программирования
- Начало начал, или первое поколение языков программирования.
- Развитие алгоритмических абстракций, или второе поколение языков программирования.
- Модуль как единица построения программных систем, третье поколение языков программирования.
- Зарождение объектной модели, четвертое поколение языков программирования.
- Объектные языки программирования, объектно-ориентированные языки программирования, объектно-ориентированный анализ, дизайн и проектирование.
- Парадигмы программирования.
- Начало начал, или первое поколение языков программирования.
- Составные части объектного подхода
- Абстрагирование
- Инкапсуляция
- Модульность
- Иерархия
- Типизация
- Параллелизм
- Сохраняемость
- Абстрагирование
- Эволюция методологий программирования
- Объектно-ориентированная модель (2 часа)
- Понятие объекта
- Свойства, присущие объектам
- Состояние
- Поведение
- Идентичность
- Состояние
- Отношения между объектами
- Типы отношений
- Связь (ассоциация)
- Агрегация
- Типы отношений
- Понятие объекта
- Классы (2 часа)
- Природа классов.
- UML – унифицированный язык моделирования. Четырехуровневая метамодель MOF
- Отношения между классами.
- Типы отношений
- Ассоциация
- Агрегация, Композиция.
- Использование
- Наследование
- Инстанцирование
- Типы отношений
- Отношения между классами и объектами
- Природа классов.
Инструментальные средства ООП языка программирования C++
- Основные алгоритмические отличия C++ от C (2 часа)
- Использование ссылок. Передача аргументов функции по ссылке.
- Использование констант.
- Логические тип и перечисления.
- Операторы управления динамической памятью, инициализация массивов.
- Структура программы, раздельная компиляция и особенности использования статической памяти.
- Функциональный полиморфизм.
- Пространства имен и исключения (краткий обзор)
- Библиотека ввода вывода (краткий обзор iostream)
- Использование ссылок. Передача аргументов функции по ссылке.
- Средства объектного программирования языка C++ (6 часов)
- Представление объектов и классов.
- Реализация поведения объектов на примере добавления функций—членов в структуры. Структура как вырожденный класс.
- Структура объявления класса.
- Доступ к членам класса.
- Поля данных класса как механизм реализации состояния объекта.
- Функции члены класса как механизм реализации поведения объекта.
- Спецификаторы доступа для обеспечения инкапсуляции.
- Средства управления жизнью объекта. Конструирование и уничтожение объектов и массивов объектов.
- Особенности использования конструктора копии, конструктора по умолчанию, оператора присваивания.
- Описание селекторов и модификаторов.
- Перегрузка операторов C++ как реализация поведения с предопределенным смыслом.
- Дружественность как механизм нарушения инкапсуляции. Достоинства и недостатки механизма дружественности.
- Статические поля и методы классов. Инициализация статических полей.
- Реализация поведения объектов на примере добавления функций—членов в структуры. Структура как вырожденный класс.
- Реализация отношений между объектами и классами
- Ассоциация и агрегация объектов и классов. Зависимость по времени жизни.
- Использование и зависимость от интерфейсов.
- Объекты при передаче параметров и возврате из методов.
- Варианты реализации отношения клиент-сервер.
- Внутренние классы.
- Ассоциация и агрегация объектов и классов. Зависимость по времени жизни.
- Представление объектов и классов.
- Средства объектно-ориентированного программирования С++ (7 часов)
- Наследование как средство организации иерархий классов. Принцип замещения Лисковой.
- Одиночное наследование.
- Понятие производного класса.
- Управление доступом в производных классах.
- Конструкторы и деструкторы, совмещение имен методов при наследовании, иерархии.
- Абстрактные классы и виртуальные функции.
- Виртуальный полиморфизм.
- Информация о типе на этапе выполнения. RTTI.
- Понятие производного класса.
- Множественное наследование
- Проблема множественного наследования. Виртуальное наследование как средство разрешения коллизий.
- Порядок вызовов конструкторов и деструкторов при множественном наследовании.
- Чистые виртуальные классы, понятие интерфейса.
- Принципы дизайна иерархий классов. OCP, DIP, ISP.
- Проблема множественного наследования. Виртуальное наследование как средство разрешения коллизий.
- Пространства имен.
- Пространства имен как средство реализации модульности.
- Поиск имен и разрешение конфликтов.
- Объединение пространств имен.
- Принципы дизайна пакетов.
- Пространства имен как средство реализации модульности.
- Обработка исключений.
- Обработка ошибок.
- Группировка и перехват исключений.
- Управление ресурсами.
- Исключения и эффективность.
- Альтернативные методы обработки ошибок.
- Стандартные исключения.
- Обработка ошибок.
- Наследование как средство организации иерархий классов. Принцип замещения Лисковой.
- Обобщенное программирование. (3 часа)
- Шаблоны классов.
- Определение шаблона.
- Инстанцирование.
- Параметры шаблонов и проверка типов.
- Определение шаблона.
- Шаблоны функций.
- Специализация.
- Наследование и шаблоны.
- Шаблоны классов.
- Стандартная библиотека С++. (6 часов)
- Библиотека стандартных шаблонов
- Общие сведения (понятия контейнеров, итераторов и объектов-функций)
- Контейнеры (виды контейнеров, последовательные и ассоциативные контейнеры, адаптеры)
- Итераторы (итератор как обобщение указателя, классы итераторов)
- Алгоритмы (примеры алгоритмов с использованием итераторов: алгоритмы сортировки, алгоритмы, не изменяющие содержание контейнера, алгоритмы, изменяющие содержание контейнера)
- Общие сведения (понятия контейнеров, итераторов и объектов-функций)
- Библиотека ввода-вывода
- Потоки вывода. Вывод типов определяемых пользователем.
- Потоки ввода. Ввод типов определяемых пользователем.
- Форматирование в потоках ввода-вывода.
- Буферизация.
- Потоки вывода. Вывод типов определяемых пользователем.
- Библиотека стандартных шаблонов
4 семестр
Инструментальные средства ООП языка программирования Java
1. Виртуальная машина Java (2 часа)
- История и предпосылки появления Java.
- Понятие виртуальной машины. Среда исполнения и байт-код. Взаимодействие виртуальной машины с операционной системой.
- Пространства классов. Структура приложений на Java. Загрузка классов и инициализация объектов.
- Сферы применения Java в современном информационном мире.
- Версии Java машины и их эволюция.
- Средства ООП, непосредственно поддерживаемые в Java.
- Простейшие приложение на Java.
- Алгоритмические средства языка Java. (1 час)
- Строгая типизация Java.
- Базовые типы языка. Строки и литералы.
- Преобразования типов в выражениях.
- Особенности инициализации массивов. Операторы управления памятью.
- Краткий обзор операторов. Использование break.
- Строгая типизация Java.
- Средства объектного программирования языка Java. (3 часа)
- Представление объектов и классов.
- Структура объявления класса.
- Доступ к членам класса.
- Спецификаторы доступа для обеспечения инкапсуляции.
- Спецификатор доступа final.
- Средства управления жизнью объекта. Конструкторы и метод finalize().
- Принципы работы сборщика мусора.
- Работа с массивами объектов.
- Статические поля и методы классов. Классы – утилиты.
- Блок статической инициализации.
- Принцип работы ClassLoader.
- Структура объявления класса.
- Реализация отношений между объектами и классами.
- Ассоциация и агрегация объектов и классов.
- Использование и зависимость от интерфейсов.
- Объекты при передаче параметров и возврате из методов.
- Реализация отношения Клиент – Сервер.
- Внутренние классы.
- Ассоциация и агрегация объектов и классов.
- Представление объектов и классов.
- Средства объектно-ориентированного программирования Java. (6 часов)
- Наследование в Java.
- Производные классы.
- Класс Object. Метод toString().
- Управление доступом в производных классах.
- Абстрактные классы и интерфейсы.
- Реализация интерфейсов как альтернатива множественному наследованию.
- Информация о типе на этапе исполнения. Оператор instanceof. Приведение типов.
- Использование класса Class.
- Производные классы.
- Пакеты.
- Определение пакета.
- Ограничение доступа.
- Импортирование пакетов. Разрешение конфликтов имен.
- Определение пакета.
- Обработка исключений.
- Основные принципы и типы исключительных ситуаций.
- Перехват исключительных ситуаций. Операторы try, throw, throws, catch, finally.
- Использование нескольких блоков catch и вложенный оператор try.
- Не перехваченные исключительные ситуации.
- Встроенные исключительные исключения Java. Классы Throwble и Exception.
- Принципы создания и использования исключительных ситуаций.
- Основные принципы и типы исключительных ситуаций.
- Многопоточное программирование на Java. Параллелизм.
- Модель потока в Java. Зависимость от реализации потока в операционной системе.
- Свойства потока. Синхронизация. Передача сообщений.
- Класс Thread и интерфейс Runnable.
- Главный поток и способы создания потоков.
- Управление потоками и приоритеты потоков.
- Группы потоков.
- Особенности написания многопоточных программ.
- Использование синхронизирующих блоков и мониторов объектов. Синхронизированные методы объектов.
- Взаимная блокировка.
- Использование пула потоков.
- Модель потока в Java. Зависимость от реализации потока в операционной системе.
- Наследование в Java.
- Стандартная библиотека Java. (8 часов)
- Организация пакетов стандартной библиотеки Java. Пакеты java и javax.
- Обработка строк.
- Использование и методы класса String
- Использование StringBuffer.
- Использование и методы класса String
- Пакет java.lang.
- Структура и назначение.
- Использование класса System. Управление средой исполнения.
- Использование классов Number, Double, Integer, Character и др.
- Класс Math.
- Класс Compiler и класс ClassLoader.
- Структура и назначение.
- Пакет java.util
- Общие принципы организации контейнеров и коллекций в Java.
- Использование множеств и списков.
- Использование отображений и ассоциативных контейнеров.
- Итераторы и исключительные ситуации при работе с классами утилит.
- Класс Properties.
- Классы Date и Calendar.
- Общие принципы организации контейнеров и коллекций в Java.
- Подсистема ввода вывода java.io
- Общие концепции организации ввода – вывода в библиотеке Java.
- Проблема платформенной независимости и локализации.
- Основные классы потоков ввода-вывода в Java и методы работы с ними.
- Использование потоков ввода вывода при работе с файлами. Эффективность.
- Концепция Reader и Writer. Управление локализацией.
- Использование Tokenizer.
- Общие концепции организации ввода – вывода в библиотеке Java.
- Пакет java.net.
- Основы работы с сетью в Internet. Адресация.
- Сокеты. Жизненный цикл сокета.
- Работа с протоколом HTTP и класс URL.
- Основы работы с сетью в Internet. Адресация.
- Организация пакетов стандартной библиотеки Java. Пакеты java и javax.
- Графическая подсистема Java. JFC. (4 часа)
- Классы AWT.
- Основы работы с окнами. Component, Container, Panel, Window, Frame, Canvas.
- Доставка и обработка событий в графической подсистеме. Механизм Listeners.
- Создание программы с оконным интерфейсом. Рисование графических примитивов.
- Использование управляющих элементов, диспетчеров компоновки и меню.
- Связь классов AWT с оконным интерфейсом операционной системы.
- Основы работы с окнами. Component, Container, Panel, Window, Frame, Canvas.
- Классы Swing.
- Основные принципы графической системы Swing. Платформенная независимость, понятие Look&Feel
- Написание графического интерфейса с использованием Swing компонентов.
- Работа с таблицами, текстом, диалогами и HTML.
- Основные принципы графической системы Swing. Платформенная независимость, понятие Look&Feel
- Апплеты.
- Основы работы с апплетом.
- Жизненный цикл апплета.
- Дескриптор APPLET.
- Передача параметров и загрузка апплета.
- Основы работы с апплетом.
- Классы AWT.
- Модель безопасности Java. (2 часа)
- Принципы организации и эволюция модели безопасности в Java.
- SecurityManager. Инициализация и функции.
- Права доступа. Управление и проверка прав доступа.
- Исключительные ситуации.
- Java Cryptography Extension
- Алгоритмы шифрования. Ключи и цифровые подписи.
- Принципы организации и эволюция модели безопасности в Java.
- Программирование распределенных приложений. (6 часов)
- Принципы построения распределенных приложений.
- Проблемы передачи объектов и синхронизации в распределенных приложениях.
- Реализация сохраняемости.
- Three-tier технология.
- Уровень интерфейса.
- Уровень бизнес логики.
- Уровень сохранения.
- Уровень интерфейса.
- Remote Method Invocation
- Основные принципы и протокол взаимодействия.
- Интерфейс Remote и класс UnicastRemoteObject.
- Класс Naming и rmiregistry сервис.
- RMI сервер.
- RMI клиент.
- Модель безопасности, синхронизация и сборка мусора в распределенных RMI приложениях.
- Механизм Activation.
- Основные принципы и протокол взаимодействия.
- Основы Java Enterprise технологии.
- Интеграция с Web.
- Java сервлеты.
- Java Server Pages. Web контейнеры.
- Механизм SessionBeans.
- EJB технология. Bean контейнеры.
- Интеграция с Web.
- JDBC технология.
- Java Micro Edition.
- Java для мобильных телефонов. K-virtual machine.
- CLDC, MIDP и iMode расширения Java 2 ME.
- Технология JavaCard.
- Примеры реальных приложений. Сложность разработки.
- Java для мобильных телефонов. K-virtual machine.
- Java media framework, технологии обработки звука и голоса.
- Принципы построения распределенных приложений.
- Технология коллективной разработки Java приложений. (2 часа)
- Использование документирующих комментариев.
- Соглашения при написании кода и именовании классов и объектов.
- Build система Ant. Автоматизация сборки и размещения Java приложений.
- Система log4j.
- Использование документирующих комментариев.
- Основы архитектурного анализа и проектирования объектно-ориентированных систем
- Правила дизайна классов и пакетов.
- Паттерны проектирования.
- Цикл разработки объектно-ориентированного приложения. RUP.
- Правила дизайна классов и пакетов.
(Возможна замена этой лекции на лекцию по C#)
Программа семинарских занятий
«Объектно-ориентированное программирование»
ФИТ, 2 курс
3 семестр
- ^ Тема: Введение в объектное программирование на С++.
Продолжительность: 4 занятия.
Цель: Обобщить знания студентов в инструментальном языке Си, познакомиться с концепцией объектного подхода, используя только механизм структур языка C++, написать командный интерпретатор, который понадобиться для выполнения последующих заданий.
^ Практические задания: Написание программы обеспечивающей функциональность записной книжки с использованием средств языка С. Запрограммировать структуры Record, Command и функции операций над ними. Объединить функции манипуляции с данными структур в интерфейс структуры (сделать их функциями-членами). Обеспечить выполнение команд поиска, редактирования и сохранения содержимого записной книжки в файл.
- ^ Тема: Знакомство со структурой класса в языке С++.
Продолжительность: 1 занятие.
Цель: Выработать понимание студентами структуры класса в языке С++, функциональности и назначения функций конструктора, конструктора по умолчанию, конструктора копии, оператора присваивания, деструктора. Познакомить студентов с механизмом создания и удаления объектов и массивов объектов.
^ Практические задания: Написать программу и реализовать класс – контейнер с элементарным набором операций, манипулирующий объектами заданного типа. Реализовать набор конструкторов, оператор присваивания и деструктор для объектов класса контейнера.
- ^ Тема: Знакомство с операторами языка С++.
Продолжительность: 2 занятия.
Цель: Научить студентов механизму перегрузки стандартных операторов языка С++, выработать понимание принципов приведения аргументов. Закрепить навыки описания классов и управления механизмом создания/уничтожения объектов.
^ Практические задания: Запрограммировать классы Vector и Matrix фиксированных размеров для реализации вектора и матрицы. Обеспечить полный набор операций для каждого типа. Модифицировать полученные классы так, чтобы обеспечить операции в комплексном унитарном пространстве.
- ^ Тема: Реализация “copy on write” механизма.
Продолжительность: 1 занятие.
Цель: Развитие навыков реализации сложных композиционных отношений между объектами. Операции с большим множеством объектов. Работа с большими объемами памяти.
^ Практические задания: Реализуйте класс String классическим образом и с помощью механизма “copy on write”. Замерьте разницу в производительности при операциях с большими массивами строк реализованных с помощью данных механизмов. В качестве источника данных можно взять текстовый файл размером несколько десятков мегабайт.
- ^ Тема: Итераторы.
Продолжительность: 1 занятие.
Цель: Развитие навыков работы с итераторами.
Практические задания: Реализуйте класс Iterator как внутренний класс контейнера из задания №2. Обеспечьте доступ к элементам контейнера в прямом и обратном порядке.
- ^ Тема: Наследование. Виртуальные функции.
Продолжительность: 1 занятие.
Цель: Знакомство с механизмом одиночного и множественного наследования в C++. Изучение порядка инициализации и вызовов конструкторов. Знакомство с абстрактными классами и виртуальными функциями.
^ Практические задания: Напишите программу, демонстрирующую порядок вызовов конструкторов и деструкторов при создании объекта класса в иерархии классов. Напишите программу, которая вызовет чисто виртуальную функцию. Объясните, как она работает.
- ^ Тема: Шаблоны.
Продолжительность: 3 занятия.
Цель: Знакомство с шаблонами классов и функций.
Практические задания: Переделайте класс контейнера и итератора с использованием шаблонов. Реализуйте итератор с произвольным доступом. Напишите шаблон класса Comparator для осуществления операции сравнения двух объектов. Напишите шаблон функции sort, реализующей механизм быстрой сортировки для контейнера с использованием класса Comparator. Напишите тестовую программу, сортирующую контейнер объектов типа String из задания №4 в прямом и обратном порядке.
- ^ Тема: Иерархии классов и объектов.
Продолжительность: 3 занятия.
Цель: Написание программы с использованием иерархии классов и объектов. Отработка и закрепление основных методов объектно-ориентированного программирования.
^ Практические задания: Используя командный интерпретатор из задания №1, напишите диалоговую программу управления базой данных сотрудников небольшого предприятия. Постройте иерархию классов и выделите ключевые абстракции. Должны присутствовать такие абстракции, как PersonalRecord, Department, Employer, Manager, Developer, Salary, TermOfEmployment. Программа должна поддерживать сохранение данных на диске и быть легко расширяемой для добавления новых абстракций в систему.
- ^ Тема: Сдача заданий, самостоятельная работа.
Программа семинарских занятий
«Объектно-ориентированное программирование»
ФИТ, 2 курс
4 семестр
- ^ Тема: Описание классов и структура приложения в Java.
Продолжительность: 1 занятие.
Практические задания: Напишите простой класс контейнер для хранения произвольных объектов Object, с обеспечением минимального набора операций.
- ^ Тема: Иерархии классов и объектов.
Продолжительность: 3 занятия.
Практические задания: Перенесите программу из задания №8 по C++ на язык Java.
- ^ Тема: Знакомство с механизмом загрузки и инициализации объектов.
Продолжительность: 2 занятия.
Практические задания: Напишите программу, реализующую механизм фабрики объектов классов реализующих определенный интерфейс. Для реализации данного механизма следует воспользоваться механизмом Properties, классом Class, для определения класса создаваемого объекта, его загрузки в память JVM и инстанцирования с помощью конструктора по умолчанию.
- ^ Тема: Многопоточное программирование.
Продолжительность: 2 занятия.
Практические задания: Напишите программу, моделирующую сборку машины на конвейере. Каждый изготовитель деталей и сборщик машин представлены своими потоками, синхронизирующимися на общем складе продукции. Задачу можно усложнить тем, что детали сами могут быть составными.
- ^ Тема: Графическая подсистема Java.
Продолжительность: 2 занятия.
Практические задания: Напишите простейший текстовый редактор с поддержкой загрузки и сохранения файлов.
- ^ Тема: Апплеты.
Продолжительность: 1 занятие.
Практические задания: Напишите апплет, реализующий часы со стрелками в окне броузера. Основные параметры апплет должен брать из дескриптора апплета.
- ^ Тема: Модель безопасности Java.
Продолжительность: 1 занятие.
Практические задания: Модифицируйте программу из пятого задания так, чтобы она работала как апплет в окне броузера. С помощью настроек системы безопасности Java обеспечьте возможность апплету редактора работать с файлами пользователя на локальном диске.
- Тема: Распределенное программирование.
Продолжительность: 2 занятия.
Практические задания: Модифицируйте программу из задания №4 так, чтобы разные потоки завода по сборке машин работали в разных JVM.
- Тема: Java Enterprise технология.
Продолжительность: 2 занятия.
Практические задания: С помощью JSP/EJB технологии реализуйте счетчик посещений сайта.