- •Цели освоения дисциплины «Технология программирования»
- •2. Место дисциплины в структуре ооп: подготовки бакалавра по направлению 230400 Информационные системы и технологии
- •3. Компетенции обучающегося, формируемые в результате освоения дисциплины «Объектно – ориентированное программирование»
- •4. Объем дисциплины и виды учебной работы
- •5. Содержание дисциплины
- •5.1. Содержание разделов дисциплины
- •5.2 Разделы дисциплины и междисциплинарные связи с обеспечиваемыми (последующими) дисциплинами
- •8. Учебно-методическое и информационное обеспечение дисциплины:
- •9. Материально-техническое обеспечение дисциплины:
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). Потоки, взаимодействующие через общие (разделяемые) данные. |