Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программа - объектно ориентированное программир...doc
Скачиваний:
1
Добавлен:
19.08.2019
Размер:
184.83 Кб
Скачать

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

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

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

Всего часов

Семестры

1

2

3

4

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

68

В том числе:

-

-

-

-

-

Лекции (Л)

34

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

Семинары (С)

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

34

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

148

В том числе:

-

-

-

-

-

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

36

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

Реферат (РЕ)

Домашнее задание (ДЗ)

Самостоятельная подготовка к занятиям (СП)

76

Конспектирование источников (КИ)

Экзамен (Э)

36

Общая трудоемкость час

зач. ед.

216

6

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

5.1. Содержание разделов дисциплины

№ п/п

Наименование раздела дисциплины

Содержание раздела

1.

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

Базовая метафора объектно – ориентированного программирования: взаимодействующие объекты. Язык графического представления объектов UML. Поля и атрибуты. Действия и сообщения. Понятие класса. Переменные и методы. Переменные экземпляра и переменные класса. Создание объекта. Уничтожение объекта. Сборщик мусора в Java (garbage collection). Наследование и иерархия классов.

2

Ключевые операции с классом.

Описание класса в Java и C++. Создание объектов в Java и С++ - общие черты и отличия. Определение дочернего класса в Java и С++. Блокирование наследования. Печатное представление объектов (метод toString()). Уничтожение объектов. Пакеты в Java и пространства имен в C++. Управление доступом к членам и методам класса. Абстрактные классы , интерфейсы. Сравнение объектов. Статические члены (переменные класса). Шаблонные классы. Вложенные классы.

3.

Объектные ссылки и выделение памяти. Функции и декларации.

Объектные ссылки в Java. Выделение памяти в С++ и в в Java. Структуры в С++.

Декларация методов класса в C++. Передача аргументов в метод в С++ и Java. Функции С++, возвращающие ссылочные типы.

Инлайн - функции в С++. Статические переменные в С++. Константные параметры функции в С++ и Java. Аргументы с типом массив. Перегрузка методов в С++ и Java, область ее видимости. Указатели на функции в С++.

4.

Работа со строками.

Объекты строк в Java и C++. Создание объекта строки – общее и отличия в Java и C++. Доступ к отдельным символам в строке. Сравнение строк в Java и С++. Объединение строк в Java и С++. Поиск подстроки и символов в строке. Извлечение подстроки из строки. Стирание подстрок. Вставка одной строки в другую. Понятие размера и емкости объекта строки. Объект StringBuffer в Java. Сравнение строк.

5.

Контейнерные классы в С++.

Понятие класса – контейнера. Вектор в С++. Операции над вектором С++ как над списком. Параметризованный вектор в С++. Использование массива для инициализации вектора. Список в С++. Стек в С++. Очередь в С++. Отображение (map) в C++. Множество (Set) в C++.

6.

Контейнерные классы в Java.

Интерфейс Collection в Java. Интерфейс List в Java и класс-реализация ArrayList. Интерфейс Set и классы-реализации TreeSet и SortedSet. Интерфейс Map и классы-реализации HashMap и SortedMap. Интерфейс Vector в Java. Алгоритмы для классов контейнеров в Java.

7.

Исключительные ситуации и их обработка.

Обработка исключительных ситуаций в С++. Типовые сценарии обработки исключительных ситуаций в С++. Java – синтаксис для обработки исключительных ситуаций. Отличия в обработке исключений между Java и C++. Типовые сценарии обработки исключительных ситуаций в Java. Обрабатываемые и необрабатываемые исключительные ситуации в Java.

8.

Параметризованные классы. Расширение классов.

Параметризованные классы и методы в С++. Понятие об итераторах. Параметризованные классы в Java.

Конструктор расширяющего класса в С++. Конструкторы копирования в С++. Деструкторы расширяющих классов в С++. Виртуальные функции – члены в С++. Виртуальные деструкторы в С++. Порядок вызова конструкторов в расширенных классах С++. Абстрактные классы в С++. Защищенные и private расширенные классы в С++.

Расширение классов в Java. Переопределение и перегрузка методов в Java. Порядок вызова конструкторов в расширенных классах Java. Абстрактные классы и интерфейсы в Java.

9.

Множественное наследование в C++.

Основные проблемы, возникающие при множественном наследовании. Использование виртуальных классов в качестве базовых классов при множественном наследовании. Виртуальные базовые классы и конструкторы копирования. Конфликты имен функций – членов и данных – членов при множественном наследовании и пути разрешения таких конфликтов.

10.

Применение ООП - парадигмы при разработке многопоточных приложений.

Создание простых потоков (thread) в Java и вызов их на исполнение. Интерфейс Runnable в Java. Состояния объекта потока. Интерфейс Thread в Java. Синхронизация потоков в Java. Понятие замка (deadlock). Решение проблемы замка в Java посредством механизма ожидания и уведомления (wait – notify). Потоки, взаимодействующие через общие (разделяемые) данные.