РОССИЙСКАЯ ФЕДЕРАЦИЯ МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ Государственное образовательное учреждение высшего профессионального образования ТЮМЕНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ Институт математики, естественных наук и информационных технологий Кафедра программного обеспечения ВОРОБЬЕВА М.С. ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ Учебно-методический комплекс. Рабочая программа для студентов очной формы обучения, направления 230700.62 «Прикладная информатика», профили подготовки «Прикладная информатика в экономике» Тюменский государственный университет 2011 Воробьева М.С. Объектно-ориентированное программирование. Учебно-методический комплекс. Рабочая программа для студентов очной формы обучения, направления 230700.62 «Прикладная информатика», профили подготовки «Прикладная информатика в экономике». Тюмень. 2011, 21 стр. Рабочая программа составлена в соответствии с требованиями ФГОС ВПО с учетом рекомендаций и ПрООП ВПО по направлению и профилю подготовки. Рабочая программа дисциплины опубликована на сайте ТюмГУ: Объектно-ориентированное программирование [электронный ресурс] / Режим доступа: http://www.umk3.utmn.ru., свободный. Рекомендовано к изданию кафедрой программного обеспечения. Утверждено проректором по учебной работе Тюменского государственного университета. ОТВЕТСТВЕННЫЙ РЕДАКТОР: Захарова И.Г., д.п.н., профессор. © Тюменский государственный университет, 2011. © Воробьева М.С., 2011. 2 1. Пояснительная записка: 1.1.Цели и задачи дисциплины. Целью преподавания дисциплины "Объектно-ориентированное программирование" (ООП) является изучение основ объектно–ориентированного программирования и принципов создания приложений, поддерживающих требования интерфейса операционной среды WINDOWS. В качестве инструментального средства разработки приложений изучается RAD среда DELPHI компании Borland Software Corporation (программа ориентирована на Delphi 7.0) и среда MS Visual Studio компании Microsoft. Объектно–ориентированное программирование сегодня является наиболее мощным средством, позволяющим как моделировать объекты реального мира, так и генерировать виртуальные объекты, существующие только в электронной ауре компьютера. Использование визуального программирования существенно облегчает разработку интерфейса приложений, ориентированного на стандарт визуальных оболочек. Области применения ООП затрагивают практически каждого пользователя и специалиста, позволяя разрабатывать приложения от простейших расчетных форм до многопользовательских программных комплексов с применением графического интерфейса и средств сети INTERNET. Лабораторные занятия должны включать рассмотрение конкретных приемов как для создания отдельных объектных классов, так и построения виртуальной среды, насыщенной объектами различных классов, в структуру которых инкапсулированы возможности обмена данными и управления как между собой, так и с внешними объектами. В качестве глобального примера функционирования и расширения объектноориентированной среды на лабораторных занятиях рассматривается среда Windows, её классы и интерфейсы. В результате выпускник должен уметь пользоваться готовыми объектно-ориентированными конструкциями, расширяя их структуру и функционал и уметь разрабатывать в стиле объектного подхода собственные конструкции произвольной структурной сложности. Задачи дисциплины: обучить студентов основам объектно–ориентированного подхода в программировании информационных, вычислительных и имитационных систем; привить студентам знание способов использования основных компонент разработки приложений; дать опыт разработки собственных средств контроля и управления элементами программных систем; ознакомить студентов с принципами функционирования и управления специальными средствами WINDOWS–программирования (реализация многозадачности, COM технологии). 3 1.2. Место дисциплины в структуре ООП бакалавриата. Дисциплина «Объектно-ориентированное программирование» входит в профессиональный цикл дисциплин по выбору Федерального государственного образовательного стандарта высшего профессионального образования (ФГОС ВПО) по направлению «Прикладная информатика». Для изучения и освоения дисциплины нужны первоначальные знания из курсов: Информатика и программирование, Дискретная математика; Структуры и алгоритмы компьютерной обработки данных, Математические и алгоритмические основы программирования, Информационные системы и технологии. Знания и умения, практические навыки, приобретенные студентами в результате изучения дисциплины, будут использоваться при изучении курсов, характер практических работ которых предполагает разработку программных продуктов в стиле объектноориентированного подхода: Разработка программных приложений, Web-технологии и Web-дизайн, Вычислительные системы, сети и телекоммуникации, Базы данных, Интеллектуальные информационные системы. Кроме того, студент может использовать приобретённые компетенции при выполнении курсовых и дипломных работ, в которых важным элементом является построение системы объектного способа хранения, обработки данных и управления ими. 1.3. Компетенции выпускника ООП бакалавриата, формируемые в результате освоения данной ООП ВПО. В результате изучения дисциплины “Объектно-ориентированное программирование” цикла профессиональных дисциплин по выбору направления подготовки 230700.62 «Прикладная информатика» с квалификацией (степенью) “бакалавр” в соответствии с целями основной образовательной программы и задачами профессиональной деятельности, указанными в ФГОС ВПО, выпускник должен обладать следующими компетенциями: Общекультурными компетенциями: способен использовать, обобщать и анализировать информацию, ставить цели и находить пути их достижения в условиях формирования и развития информационного общества (ОК-1); Профессиональными компетенциями: 4 способен ставить и решать прикладные задачи с использованием современных информационно-коммуникационных технологий (ПК-4) способен моделировать и проектировать структуры данных и знаний, прикладные и информационные процессы (ПК-9) способен применять к решению прикладных задач базовые алгоритмы обработки информации, выполнять оценку сложности алгоритмов, программировать и тестировать программы (ПК-10) В результате освоения дисциплины обучающийся должен: Знать: основные способы представления структур данных; основные принципы объектно-ориентированного программирования; правила построения иерархии виртуальных объектов для моделирования реальных объектов и структур; возможности организации многопоточных приложений; свойства и методы элементов систем разработки приложений, реализующих функциональные возможности объектов WINDOWS, этапы производства программного продукта, способы эффективной реализации абстрактных структур данных, принципы построения, структуры и приемы работы с инструментальными средствами, поддерживающими разработку программного обеспечения; преимущества использования объектноориентированного подхода при создании сложных программных продуктов. Уметь: формализовать поставленную задачу; разработать структуры типов данных для представления предметной области решаемой задачи; тестировать и отлаживать приложения с целью повышения надёжности и эффективности; организовывать управления другими приложениями, используя механизмы автоматизации, использовать современные готовые библиотеки классов, технологии и инструментальные средства. Владеть: навыками алгоритмизации; приёмами разработки, отладки и тестирования WINDOWS–приложений; навыками программирования локальных баз данных; методами и технологиями разработки программных продуктов, использующих представление отдельных элементов предметной области в виде самостоятельных объектов пользовательских классов. Структура и трудоемкость дисциплины. Семестр 3. Форма промежуточной аттестации – курсовая работа, экзамен. Общая трудоемкость дисциплины составляет 6 зачетных единиц - 216 часа. 2. Вид учебной работы Аудиторные занятия (всего) В том числе: Лекции Лабораторные работы (ЛР) Самостоятельная работа (всего) Контрольные работы 5 Таблица 1. Семестр 3 72 54 54 108 + Курсовая работа Вид промежуточной аттестации (зачет, экзамен) Общая трудоемкость 216 час., 6 зач. ед. 3. + экзамен Тематический план. Таблица 2. Тематический план 2. 3. 1. 2. 3. 1. Модуль 1. Теоретические основы ООП Т1. Переход от структурного программирования к объектно-ориентированному Т2. Основные принципы и этапы ООП. Т3. Классы и объекты. Всего Модуль 2. Средства ООП в среде Delphi Т1. Элементы класса. Поля и методы. Наследование Т2. Свойства объектов. Инкапсуляция. Т3. Виртуальные и динамические методы. Полиморфизм. Всего Модуль 3. Создание приложений Windows в среде Delphi Т1. Использования стандартных и Итого количест во баллов 8 9 Самостоятельн ая работа* 1. 2 Из них в интеракт ивной форме Лабораторные занятия* 1 Итого часов по теме Лекции* Тема Виды учебной работы и самостоятельная работа, в час. недели семестра № 3 4 5 6 7 1 2 2 - 4 2-3 4 4 4 12 5 0-6 4-5 4 10 4 10 6 10 14 30 5 10 0-10 0-20 6-7 4 4 2 10 2 0-10 8-9 4 4 4 12 4 0-10 10-11 4 4 4 12 4 0-10 12 12 10 34 10 0-30 4 4 2 10 4 0-15 12-13 6 0-4 дополнительных компонент для создания интерфейса управления. 2. Т2. Организация механизма Drag&Drop, работа с графикой. 3. Т3. Разработка многооконных приложений. Стандартные окна диалога. Всего Итого (часов, баллов) за семестр: Из них в интерактивной форме 1. 2. 1. 2. 3. 1. 2. Модуль 4. Особенности разработки программ на языке С++ Т1. Синтаксис языка. Типы данных. Организация стандартных алгоритмических конструкций. Т2. Пользовательские типы данных. Работа с файлами. Организация функций. Всего Модуль 5. Средства разработки объектно-ориентированных программ в среде Visual Studio Т1. Элементы класса. Поля и методы. Конструкторы и деструкторы. Т2. Простое и множественное наследование. Полиморфизм. Т3. Дружественные функции и классы. Перегрузка операций. Всего Модуль 6 Специальные возможности использования ООП Т1. Принципы разработки оконных приложений в С++. Т2. Обработка 14-15 4 4 4 12 4 0-15 16-18 6 6 4 16 6 0-20 14 36 14 36 10 30 38 102 14 0-50 0 – 100 34 1-2 4 8 6 18 4 0-10 3-5 6 12 8 26 8 0-15 10 20 14 44 12 0-25 6-7 4 8 4 16 2 0-10 8-9 4 8 6 18 4 0-10 10-11 4 8 6 18 4 0-10 12 24 16 52 10 30 11-13 4 8 6 10 6 0-15 14-15 4 8 6 10 6 0-15 7 исключительных ситуаций и многопоточность. 3. Т3. Удалённое управление приложениями. СОМтехнологии. Всего Итого (часов, баллов) за семестр: Итого в интерактивной форме Итого часов 16-17 4 8 6 12 6 0-15 12 34 24 68 18 48 54 150 18 0-45 0 – 100 70 104 78 252 40 74 Таблица 3. Т1 Т2 Т3 Всего 0-2 0-2 0-4 0-8 0-2 0-2 0-4 Т1 Т2 Т3 Всего 0-4 0-4 0-4 0-12 0-2 0-2 0-2 0-6 Т1 Т2 Т3 Всего Итого за 3 семестр 0-6 0-6 0-10 0-22 0-16 0-2 0-2 0-2 0-6 0-14 Модуль 1 0-1 0-1 0-2 0-4 Модуль 2 0-1 0-1 0-1 0-3 Модуль 3 0-2 0-2 0-2 0-6 0-18 8 Информационные системы и технологии электронный практикумы Технические формы контроля программы компьютерного тестирования контрольная работа Письменные работы лабораторная работа № темы Итого количество баллов Виды и формы оценочных средств в период текущего контроля 0-1 0-1 0-2 0-4 0-4 0-6 0-10 0-20 0-3 0-3 0-3 0-9 0-10 0-10 0-10 0-30 0-5 0-5 0-6 0-16 0-52 0-15 0-15 0-20 0-50 0 – 100 Т1 Т2 Всего 0-5 0-8 0-13 0-2 0-2 0-4 Т1 Т2 Т3 Всего 0-5 0-5 0-5 0-15 0-2 0-2 0-2 0-6 Т1 Т2 Т3 Всего Итого за 4 семестр 0-8 0-8 0-8 0-24 0-52 0-2 0-2 0-2 0-6 0-16 Модуль 1 0-1 0-1 0-2 Модуль 2 0-1 0-1 0-1 0-3 Модуль 3 0-2 0-2 0-2 0-6 0-11 0-2 0-4 0-6 0-10 0-15 0-25 0-2 0-2 0-2 0-6 0-10 0-10 0-10 0-30 0-3 0-3 0-3 0-9 0-21 0-15 0-15 0-15 0-45 0 – 100 Планирование самостоятельной работы студентов По всем темам дисциплины предусмотрены следующие виды самостоятельной работы студентов: обязательные конспектирование материала на лекционных занятиях выполнение заданий лабораторных работ выполнение тестовых и контрольных работ дополнительные написание программ разработка пользовательского интерфейса к программам. Кроме того, по отдельным темам предусмотрены специальные виды самостоятельной работы студентов: Модуль 1. Теоретические основы ООП Т3: Работа с учебной литературой. Изучение языка UML. Модуль 2. Средства ООП в среде Delphi Т3. Работа с учебной литературой. Изучение примеров использования полиморфизма. Модуль 3. Создание приложений Windows в среде Delphi Т1. Работа с учебной литературой. Изучение многообразия визуальных компонент. Т3. Работа с учебной литературой. Изучение стандартных окон диалога. Модуль 4. Особенности разработки программ на языке С++ Т1. Работа с учебной литературой, работа с источниками в Intenet. Модуль 5. Средства разработки объектно-ориентированных программ в среде Visual Studio 9 Т2. Работа с учебной литературой. Обзор способов использования полиморфизма. Т3. Работа с источниками в Intenet. Изучение примеров перегрузки. Модуль 6. Специальные возможности использования ООП Т1. Работа с учебной литературой. Т2. Работа с учебной литературой. Т3. Работа с учебной литературой. 4. Разделы дисциплины и междисциплинарные связи с обеспечиваемыми (последующими) дисциплинами Таблица 4. Темы дисциплины, необходимые для изучения обеспечиваемых (последующих) дисциплин № Наименование Модули 1 2 3 4 5 6 п/ обеспечиваемых п (последующих) дисциплин 1. Системное T2 T1, T2 T1, T2 T1, T2 программирование 2. Технологии Webпрограммирования T2, T3 T1, T2 3 Системы искусственного интеллекта T2, T3 T1, T2, T3 5 Компьютерная графика 10 T1 T1, T2 T1, T3 T1, T2, T3 T1, T2 T1, T2, T3 T1, T2 T1, T2 T1, T2 T1, T2 5. Содержание дисциплины. Модуль 1. Теоретические основы ООП. Тема 1.1. Переход от структурного программирования к объектноориентированному. (лекции – 2 ч) Исторический аспект возникновения объектно-ориентрованного подхода в программировании. Принципы структурного программирования. Структурная декомпозиция. Виды структурирования данных. Модульный подход. Тема 1.2. Основные принципы и этапы ООП. (лекции – 4 ч) Принципы абстрагирования, ограниченного доступа, модульности, иерархичности, типизации, параллелизма, устойчивости. Обзор этапов разработки программного обеспечение в стиле ООП. Обзор реализации ООП в различных средах программирования. Тема 1.3. Классы и объекты. (лекции – 4 ч) Объектная декомпозиция. Объектные сообщения, классы. Средства разработки и описания классов. Ограничение доступа. Модуль 2. Средства ООП в среде Delphi. Тема 2.1. Элементы класса. Поля и методы. Наследование. (лекции – 4 ч) Классы и объекты. Поля и методы объектов. Жизненный цикл объектов. Области видимости. Конструкторы и деструкторы. Тема 2.2. Свойства объектов. Инкапсуляция. (лекции – 4 ч) Принцип инкапсуляции. Организация свойств. Организация событий. Событийное программирование. Защита объектов. Тема 2.3. Виртуальные и динамические методы. Полиморфизм. (лекции – 4 ч) Принцип полиморфизма. Особенности виртуальных и динамических методов. Горизонтальный и вертикальный полиморфизм. Функционирование полиморфных объектов. Модуль 3. Создание приложений Windows в среде Delphi Тема 3.1. Использования стандартных и дополнительных компонент для создания интерфейса управления. (лекции – 4 ч) Размещение компонентов на макете. Окно настройки параметров компонентов. Общие свойства и общие события компонентов. Взаимодействие элементов управления, элементов ввода-вывода данных различного типа друг с другом. Создание и настройка главного меню приложения и контекстного меню 11 Тема 3.2. Организация механизма Drag&Drop, работа с графикой. (лекции – 4 ч) Основные события, механизмы интерфейса Drag&Drop, разработка приложений, поддерживающих интерфейс Drag&Drop. Графические классы. Класс TСanvas: работа с фактурой, фигурами, графическими образами. Встроенный графический редактор. Тема 3.3. Разработка многооконных приложений. Стандартные окна диалога. (лекции – 4 ч) Принципы разработки приложений в стиле SDI и MDI интерфейсов. Модальные формы. Организация диалоговых окон. Стандартные окна диалога. Модуль 4. Особенности разработки программ на языке С++ Тема 4.1. Синтаксис языка С++. Типы данных. Организация стандартных алгоритмических конструкций. (лекции – 4 ч) Структура программы в С++. Особенности разработки консольного приложения. Идентификаторы. Стандартные типы данных. Операторы присваивания. Организация ввода-вывода данных. Организация ветвления. Организация циклов. Тема 4.2. Пользовательские типы данных. Работа с файлами. Организация функций. (лекции – 6 ч) Массивы одномерные и многомерные. Работа со строками. Текстовые файлы. Бестиповые файлы. Организация функций. Работа с указателями и структурами данных. Модуль 5. Средства разработки объектно-ориентированных программ в среде Visual Studio. Тема 5.1. Элементы класса. Поля и методы. Конструкторы и деструкторы. (лекции – 4 ч) Принцип построения класса. Инициализация полей. Статические компоненты класса. Многообразие и перегрузка конструкторов класса. Деструкторы. Тема 5.2. Простое и множественное наследование. Полиморфизм. (лекции – 4 ч) Вида наследования. Изменение видимости элементов класса при наследовании. Принцип полиморфизма. Раннее и позднее связывание. Абстрактные классы. Тема 5.3. Дружественные функции и классы. Перегрузка операций. (лекции – 4 ч) Механизм организации дружественных функций. Переопределение функций. Переопределение операторов. Работа с динамическими объектами. Модуль 6. Специальные возможности использования ООП. Тема 6.1. Принципы разработки оконных приложений в С++. (лекции – 4 ч) Обзор компонентов визуального представления и управления. Окно настройки параметров компонентов. Общие свойства и общие события компонентов. Взаимодействие элементов управления друг с другом. 12 Тема 6.2. Обработка исключительных ситуаций и многопоточность. (лекции – 4 ч) Понятие исключительной ситуации. Создание и обработка ИС в различных средах программирования. Организация многопоточных приложений. Тема 6.3. Удалённое управление приложениями. СОМ-технологии. (лекции – 4 ч) Использование технологии OLE. Создание OLE-контейнера. Использование технологии автоматизации. Создание automation-контейнера. СОМ – технология: объекты, интерфейсы, фабрика класса. 6. Планы семинарских занятий. Не планируется. 7. Темы лабораторных работ (Лабораторный практикум). Задания лабораторного практикума выполняются с использованием систем программирования Delphi, Microsoft Visual Studio. Тема 1.1. Разработка консольного приложения в среде Delphi в стиле структурного программирования. Исследование возможности объектной организации приложения. Тема 1.2. Построение макетов приложений, оформленных в стиле ООП. Описание диаграмм взаимодействия, диаграмм потоков данных. Тема 1.3. Построение макетов приложений, оформленных в стиле ООП с учётом объектной декомпозиции. Построение контекстных диаграмм. Тема 2.1. Построение консольных приложений в среде Delphi с использованием классов. Оформление полей и методов. Реализация принципа наследования. Разработка конструкторов и деструкторов. Тема 2.2. Построение консольных приложений в среде Delphi с учётом реализации принципа инкапсуляции. Организация свойств и событий. Тема 2.3. Построение консольных приложений в среде Delphi с учётом реализации принципа полиморфизма. Реализация горизонтального и вертикального полиморфизма. Тема 3.1. Разработка оконных приложений в среде Delphi с использованием стандартных и дополнительных визуальных компонент при создании интерфейса управления. Тема 3.2. Разработка оконных приложений в среде Delphi с использованием механизма Drag&Drop. Разработка программ, реализующих построение статических и динамических графических объектов. 13 Тема 3.3. Разработка многооконных приложений в среде Delphi с использованием SDI и MDI интерфейсов. Разработка приложений со стандартными и пользовательскими диалоговыми окнами. Тема 4.1. Построение консольных приложений на языке С++ в среде MS Visual Studio. Использование стандартных типов данных. Реализация ветвления и циклов. Тема 4.2. Построение консольных приложений, использующих пользовательские типы данных (массивы, строки, структуры, файлы). Тема 5.1. Построение консольных приложений на языке С++ в среде MS Visual Studio, реализующих работу с полями и методами классов. Использование конструкторов и деструкторов. Тема 5.2. Построение консольных приложений на языке С++ в среде MS Visual Studio, реализующих принципы наследования и полиморфизма. Тема 5.3. Построение консольных приложений на языке С++ в среде MS Visual Studio с учётом использования дружественный функций, перегрузки операций и операторов. Тема 6.1. Разработка оконных приложений в среде MS Visual Studio с использованием стандартных и дополнительных визуальных компонент при создании интерфейса управления. Тема 6.2. Разработка оконных приложений в средах Delphi и MS Visual Studio с использованием многопоточности и обработки исключительных ситуаций. Тема 6.3. Разработка оконных приложений в средах Delphi и MS Visual Studio, позволяющих привлекать ресурсы различных OLE серверов, а также приложений для правления COM серверами пакета MS Office 8. Примерная тематика курсовых работ Не планируются. 14 9. Учебно - методическое обеспечение самостоятельной работы студентов. Оценочные средства для текущего контроля успеваемости, промежуточной аттестации по итогам освоения дисциплины (модуля). Контроль качества подготовки осуществляется путем проверки теоретических знаний и практических навыков с использованием a) Текущей аттестации: проверка промежуточных контрольных работ и прием лабораторных работ, b) Промежуточной аттестации: Тестирование (письменное или компьютерное) по разделам дисциплины. Зачёт в конце 3-го семестра (к зачёту допускаются студенты после сдачи всех лабораторных работ, решения всех задач контрольных работ и выполнения тестовых заданий, предусмотренных содержанием учебных Модулей 1-3). Экзамен в конце 4-го семестра (к экзамену допускаются студенты, получившие зачёт по итогам 3-го семестра, после сдачи всех лабораторных работ, решения всех задач контрольных работ и выполнения тестовых заданий, предусмотренных содержанием учебных Модулей 4-6). Текущий и промежуточный контроль освоения и усвоения материала дисциплины осуществляется в рамках рейтинговой (100-бальной) системы оценок. Пример тестового задания по теме 2.1: «Элементы класса. Поля и методы. Наследование»: Какой результат будет иметь действие “MyObject.Create” (переменная MyObject : TMyClass ещё не создана)? 1) Обнуление значения полей объекта MyObject 2*) Ошибка доступа (Access violation) 3) Освобождается доступ к объекту MyObject 4) Объект MyObject будет создан Пример лабораторного задания по теме 3.2. "Организация механизма Drag&Drop " Создайте проект, содержащий 2 списка ListBox, компонент Edit, панель Panel1 с заголовком «Градиент цвета» и две кнопки. Реализовать следующие функции при переносе выделенных слов: * ListBox1 форма: строки в ListBox1 дублируются; * ListBox2 форма: строки в ListBox2 удаляются; * ListBox1 ListBox2: простой перенос выделенных строк; * ListBox1 Edit1: обмен первой строки списка (если такая есть) и строки в Edit1; 15 * ListBox2 Edit1: обмен последней строки списка (если такая есть) и строки в Edit1; * Edit1 ListBox1, Edit1 ListBox2: левой клавишей мыши – перенос текста (в начало списка), а правой – копирование текста (в конец списка); * ListBox1 (ListBox2) Button1: чтение всего списка из файла ‘Lab6.txt’; * ListBox1 (ListBox2) Button2: сохранение всего списка в файле ‘Lab6.txt’; * Panel1 ListBox1, Panel1 ListBox2: фон списка изменяет цвет на смесь красного и синего (доля каждого соответствует положению курсора мыши в момент начала буксировки – например, чем ближе к левому краю панели, то красного больше, а синего меньше); * ListBox1 Panel1, ListBox2 Panel1: строки списка изменяют цвет на смесь красного и синего (доля каждого соответствует положению курсора мыши в момент «сброса» на панель – например, чем ближе к правому краю панели, то синего больше, а красного меньше). При множественном выборе переносить все выбранные строки. При копировании из Edit вид курсора – crCross, при переносе – обычный crDrag. Рекомендация: Обработку начала буксировки из Edit1 выполнить вручную, т.е. установить Edit1.DragMode=dmManual и в обработчик Edit1.OnMouseDown записать нечто вроде: if (Shift=[ssLeft]) and (Edit1.Text<>'') then Edit1.BeginDrag(False); 16 Пример контрольной работы в 3 семестре Контрольная работа состоит из двух заданий. 1. Написать модуль, содержащий описание класса (использовать private и public). Варианты заданий см. ниже. Требуется написать модуль, содержащий описание необходимых типов. При описании класса требуется Формировать только независимые друг от друга поля. При описании свойств при обращении типа READ использовать поля (если есть соответствующие) или методы. При обращении типа WRITE использовать только методы. Реализуя принцип инкапсуляции открывать пользователям класса только заявленные в задании элементы класса. В одном из методов обеспечить взаимодействие с другим объектом того-же класса. В одном из методов организовать создание другого объекта того-же класса (данный метод оформить в виде процедуры). Тип одного из событий не должен быть уведомительным (TNotifyEvent). Организовать метод типа Info (информация обо всех свойствах объекта класса). Не использовать процедуры ввода-вывода на консоль. 2. Написать консольное приложение для проверки работы описанного класса. Требуется создать консольное приложение, имеющее русский интерфейс, позволяющее оценить корректность реализации класса из задания 1. В проекте для одного из событий (общее изменение) реализовать вывод информации об объекте на консоль. Для другого события реализовать сообщение о его наступлении. Для одного из событий, имеющего пользовательский тип в обработчике реализовать проверку некоего произвольного осмысленного ограничения, которая запретила бы объекту принимать некорректные значения свойств. В проекте проверить работу всех свойств на чтение и запись, всех методов (возможно, у некоторых методов для нескольких случаев), всех событий. Результаты контрольной работы представить в виде отчёта, имеющего титульный лист. В отчёте привести Номер варианта и текст задания (указать вид ограничения на объект для обработчика одного из событий). Текст модуля с описанием классов (без комментариев, но с таблицей свойств с указанием на обслуживающие методы). Текст консольного проекта, с пояснением, каким образом проверяется каждое свойство, метод и событие в проекте. Результат выдачи на консоль (распечатку вывода на экран). Для экономии краски можно настроить свойства. 17 Вопросы к экзамену 1. Предпосылки появления и развития объектно-ориентированного подхода в программировании. 2. Основные особенности ООП. 3. Ключевые понятия ООП. 4. Область действия полей объекта и параметр Self. Метод класса. 5. Понятие наследования и его назначение. Присваивание объектов. 6. Полиморфизм. Статические и виртуальные методы. 7. Внутренняя структура объекта. 8. Конструкторы и деструкторы, их назначение и правила использования. 9. Виртуальные и динамические методы, их назначение и механизмы вызова. 10. Понятие класса в Delphi. Отличие класса Delphi от записей Pascal. 11. Свойства и методы базового класса Delphi TObject. 12. Создание и уничтожение экземпляра класса в Delphi. 13. Понятие свойства класса. Синтаксис свойств и их достоинства. 14. Описание классов в Delphi. Области видимости и их отличительные особенности. 15. События и делегирование. 16. Библиотека компонент Delphi. Визуальные и невизуальные компоненты. 17. Иерархия классов Delphi. Краткая характеристика основных классов Delphi и их назначение. 18. Стандартные события (события мыши, клавиатуры, системные события) визуальных компонент. 19. Организация текстового диалога. Обзор стандартных окон и стандартных компонент. 20. Работа с многострочным текстом. Компонент TMemo, классы Tstrings, TStringList. 21. Обзор стандартных компонент управления (выключатели, переключатели, списки, контейнеры). Их взаимодействие. 22. Реализация механизма буксировки Drag&Drop. 23. Типовые окна диалога. 24. Организация меню. Главное меню приложения. Контекстное меню. 25. Использование графики. Вспомогательные графические классы. Возможности класса TCanvas. 26. Классы TGraphic, TPicture, компоненты для работы с графикой. 27. Работа с буфером обмена. Работа с принтером. 28. Таблицы строк и таблицы изображений. 29. Классы TComponent, TPersistent. Динамическое создание компонент. 30. Обработка исключительных ситуаций. Защищенные блоки. 31. Организация многопоточных приложений. 18 32. Технологии OLE. Пример создания OLE-контейнера. 33. СОМ – технологии. Пример OLE-контроллера. Автоматизация MS Office. Раннее и позднее связывание. 34. Средства Delphi для создания SDI-приложений. 35. Средства Delphi для создания MDI-приложений. 36. Программный интерфейс ОС Windows. Понятие API-интерфейса. Основные модули ядра Windows и их функции. 37. Динамически компонуемые библиотеки, их создание и использование в Delphi. 38. Основы синтаксиса языка C/C++ (алфавит, идентификаторы, переменные, константы, базовые типы данных, операторы, выражения, строки). 39. Ветвление в языке C/C++ (конструкции if-else, switch; условная операция ? :) 40. Циклы в языке C/C++ (for, while, do…while). Инструкции break и continue. 41. Массивы. Одномерные и многомерные массивы. Представление многомерных массивов в памяти. 42. Указатели. Операции * и &. Связь между указателями и массивами. 43. Функции. Назначение функций. Тип функции, формальные и фактические параметры функции. Инструкция return 44. Функции. Объявление функций, область видимости переменных, локальные и глобальные переменные. Рекурсия. 45. Функции. Параметры-указатели и параметры массивы. Многомерные массивы в качестве параметров функции. Функции со списком аргументов переменной длины. 46. Структуры. Определение структур. Операция доступа к элементу структуры. 47. Структуры. Операции над структурами. Структуры как параметры функции и как тип функции. 48. Вложенные структуры. Указатели на структуры. Операция ->. 49. Структуры. Массивы структур и структуры, содержащие массивы. Оператор sizeof. 50. Динамическая память. Виды памяти. Правила работы с динамической памятью. Операции new и delete. Динамические массивы. 51. Концепции ООП. Классы и объекты. Определение класса, создание объекта. Конструкторы и деструкторы. 52. Классы. Инкапсуляция. Спецификаторы доступа private, protected и public. 53. Классы. Наследование. Виды наследования. 54. Классы. Перегрузка методов, перегрузка операторов. 55. Классы. Полиморфизм. Статическое и динамическое связывание. 56. Классы. Статические поля и методы. 19 10. Образовательные технологии. Сочетание традиционных образовательных технологий в форме лекций, компьютерных лабораторных работ и проведение контрольных мероприятий (контрольных работ, промежуточного тестирования, экзамена). аудиторные занятия: лекционные и компьютерные лабораторные занятия; на лабораторных занятиях контроль осуществляется при сдаче лабораторного задания в виде программы (на одном из используемых языков программирования) и пояснительной записки к задаче. В течение семестров студенты выполняют задачи, указанные преподавателем к каждому занятию. активные и интерактивные формы компьютерное моделирование и анализ результатов при выполнении лабораторных работ внеаудиторные занятия: выполнение дополнительных заданий разного типа и уровня сложности при выполнении лабораторных работ, подготовка к аудиторным занятиям, изучение отдельных тем и вопросов учебной дисциплины в соответствии с учебно-тематическим планом, составлении конспектов. Подготовка индивидуальных заданий: выполнение самостоятельных и контрольных работ, подготовка ко всем видам контрольных испытаний: текущему контролю успеваемости и промежуточной аттестации; индивидуальные консультации. 11. Учебно-методическое и информационное обеспечение дисциплины. 11.1 Основная литература: 1. Фаронов В. В. Delphi : программирование на языке высокого уровня : учеб. для студ. / Санкт-Петербург: Питер, 2005 .-640 c. 2. Бобровский С. И. Delphi 7 : учеб. курс/ Санкт-Петербург: ПИТЕР, 2005 .-736 c. 3. Павловская Т. А. C/C++. Программирование на языке высокого уровня : учеб. для студ. вузов, обуч. по напр. "Информатика и вычислительная техника"/ СанктПетербург: ПИТЕР, 2005 .-461 c. 4. Иванова Г. С. Объектно-ориентированное программирование : учеб. для студ. / Москва: Изд-во МГТУ им. Н. Э. Баумана, 2003 .-368 c. 11.2. Дополнительная литература: 1. Костюкова Н. И. Язык Си и особенности работы с ним : учеб. пособие/ Москва: Интернет-Университет Информационных Технологий: БИНОМ, 2006 .-207 с. 2. Седжвик, Роберт, Фундаментальные алгоритмы на С++ / Санкт-Петербург : ДиаСофтЮП. – 2002.-688 c. 3. Павловская Т.А. С/C++. Программирование на языке высокого уровня. / Т.А. Павловская. - СПб.: Питер, 2002. - 464 с.: ил. 20 4. Павловская Т.А, Щупак Ю. С/С++. Объектно-ориентированное программирование: Практикум. – СПб.: Питер, 2004 – 265 с. 12. Технические средства и материально-техническое обеспечение дисциплины (модуля). При освоении дисциплины для проведения лекционных занятий требуются учебные аудитории, оснащённые мультимедийным оборудованием. Для выполнения лабораторных работ необходимы классы персональных компьютеров с набором базового программного обеспечения разработчика – системы программирования на языках Borland Delphi, С/С++. 21