АВТОНОМНАЯ НЕКОММЕРЧЕСКАЯ ОБРАЗОВАТЕЛЬНАЯ ОРГАНИЗАЦИЯ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ « ИНДУСТРИАЛЬНЫЙ ИНСТИТУТ » Кафедра информационных систем и программирования РАБОЧАЯ ПРОГРАММА УЧЕБНОЙ ДИСЦИПЛИНЫ ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ РАССМОТРЕНО: УТВЕРЖДАЮ: Проректор по научно – методической работе______________М. В. Кузнецова (подпись, расшифровка подписи) «___»_________201_ г. Направление подготовки: на заседании кафедры информационных систем и программирования Заведующий кафедрой информационных систем и программирования _______________________ Д.В. Тюпин (подпись, расшифровка подписи) протокол №__1__от «___»_________201_ г. 09.03.01(230100.62) Информатика и вычислительная техника Профиль подготовки: программное обеспечение вычислительной техники и автоматизированных систем Квалификация (степень) выпускника бакалавр Форма обучения: заочная (ускоренное обучение) Курск – 201_ Составитель: Д.В.Тюпин Рабочая учебная программа по дисциплине «Объектно-ориентированное программирование» разработана в соответствии с Федеральным государственным образовательным стандартом высшего профессионального образования и учебным планом, рекомендациями и ПрООП ВПО по направлению подготовки 09.03.01(230100.62) Информатика и вычислительная техника профиль «Программное обеспечение вычислительной техники и автоматизированных систем» Рабочая программа утверждена на заседании информационных систем и программирования протокол № 1 от «___»_________201_ г. Заведующий кафедрой информационных систем и программирования 2 _________________ Д.В.Тюпин СОДЕРЖАНИЕ Название раздела программы 1 Перечень планируемых результатов обучения по дисциплине (модулю), соотнесенных с планируемыми результатами освоения образовательной программы 2 Место дисциплины в структуре ООП ВПО 3 Объем дисциплины (модуля) в зачетных единицах с указанием количества академических часов, выделенных на контактную работу обучающихся с преподавателем (по видам занятий) и на самостоятельную работу обучающихся 4 Содержание дисциплины (модуля), структурированное по темам (разделам) с указанием отведенного на них количества академических часов и видов учебных занятий 5 Перечень учебно-методического обеспечения для самостоятельной работы обучающихся по дисциплине (модулю) 6 Фонд оценочных средств для проведения промежуточной аттестации обучающихся по дисциплине (модулю) 7 Перечень основной и дополнительной учебной литературы, необходимой для освоения дисциплины (модуля) 8 Перечень ресурсов информационно-телекоммуникационной сети "Интернет" (далее - сеть "Интернет"), необходимых для освоения дисциплины (модуля)* 9 Методические указания для обучающихся по освоению дисциплины (модуля) 10 Перечень информационных технологий, используемых при осуществлении образовательного процесса по дисциплине (модулю), включая перечень программного обеспечения и информационных справочных систем (при необходимости) 11 Описание материально-технической базы, необходимой для осуществления образовательного процесса по дисциплине (модулю) 3 с. 4 5 5 5 19 20 45 46 46 48 48 1. Перечень планируемых результатов обучения по дисциплине (модулю), соотнесенных с планируемыми результатами освоения образовательной программы В результате освоения дисциплины обучающийся должен овладеть следующими знаниями, умениями и навыками: Коды Результаты освоения Перечень планируемых результакомпетенций ООП тов обучения по дисциплине по ФГОС - стремится к саморазвитию, Знать: основные приемы объектноОК-6 повышению своей квалифика- ориентированного решения задач и способы построения объектноции и мастерства; ориентированных алгоритмов; Уметь: самостоятельно разрабатывать, производить отладку, испытания и документирование программ на языке объектно-ориентированного программирования для решения задач обработки числовой и текстовой информации; Владеть: языками процедурного и объектно-ориентированного программирования; навыками владения одной из технологий программирования; - осознает социальную значи- Знать: основные положения концепОК-8 мость своей будущей профес- ции объектно-ориентированного просии, обладает высокой моти- граммирования; вацией к выполнению профес- Уметь: организовать диалог с сиональной деятельности; пользователем, осуществлять моделирование. Владеть: методами объектноориентированного программирования; - проблемно-задачной формой представления естественнонаучных знаний. - разрабатывать интерфейсы Знать: теоретические основы, метоПК-3 «человек – электронно- ды, способы и приемы объектновычислительная машина»; ориентированного программирования; Уметь: организовать диалог с пользователем, осуществлять моделирование. Владеть: основами алгоритмизации; ПК-5 -разрабатывать компоненты программных комплексов и баз данных, использовать современные инструментальные средства и технологии программирования; 4 Знать: способы отладки и испытания объектно-ориентированных программ; Уметь: ставить и решать прикладные задачи с использованием современных информационнокоммуникационных технологий; программировать на одном из алгоритмических языков; Владеть: навыками решения практических задач объектноориентированного программирования; 2. Место дисциплины в структуре ООП бакалавриата Дисциплина «Объектно-ориентированное программирование» (Б3.В.ОД.3) относится к основным дисциплинам вариативной части базового цикла. Основывается на ранее изученных дисциплинах Учебного «Информатика», «Программирование», «Операционные системы», «Базы данных». 3. Объем дисциплины (модуля) в зачетных единицах с указанием количества академических часов, выделенных на контактную работу обучающихся с преподавателем (по видам занятий) и на самостоятельную работу обучающихся Общая трудоемкость дисциплины составляет 9 зачетных единиц(324ч) № п/п 1 1.1 1.3 2 3 4 4.1 Виды учебной работы ЗЕТ/час. Аудиторная работа, в том числе: Лекции Лабораторные занятия Самостоятельная работа Курсовая работа Промежуточная аттестация: Экзамен 30 час. 12 час. 18 час. 285 час. 9 час 5 семестр 324 ВСЕГО час. 4. Содержание дисциплины (модуля), структурированное по темам (разделам) с указанием отведенного на них количества академических часов и видов учебных занятий 4.1 Разделы дисциплины (модуля) и трудоемкость по видам учебных занятий (в академических часах) для заочной (ускоренное обучение) формы обучения № п\п Наименование тем Всего часов 1 Раздел 1. Основы объектноориентированного программирования Основания и история возникновения объектно-ориентированного подхода Основные понятия и модели: объ- 47 1.1 1.2 22 25 5 Аудиторные лекции/ лабораторинтер.ф ные/ интер.ф 2/2 - 2/2 СРС 45 20 25 ект, класс, данные, методы, доступ, наследование свойств, системы объектов и классов 2 Раздел 2. Проектирование программного обеспечения при объектно-ориентирован-ном подходе 2.1 Проектирование объектноориентированных программ: методы и алгоритмы. 2.2 Объектно-ориентированные языки, классификация, архитектура, выразительные средства, технология применения 3 Раздел 3. Интерфейс: правила организации, методы и средства программирования 4 Раздел 4. Объектноориентированные системы: методы, языки и способы программирования 4.1 Проект приложения системы визуального объектноориентированного проектирования Delphi 4.2 Структура класса. Области видимости класса 4.3 Библиотека визуальных компонентов 4.4 Класс для операций со строковыми данными 4.5 Создание компонента. Описание класса нового компонента 4.6 Форма как главный компонент приложения 4.7 Организация взаимодействия форм 4.8 Меню как основной элемент управления приложением 4.9 Класс исключений 4.10 Разработка справочной помощи 4.11 Преимущества и недостатки объектно-ориентированного программирования Экзамен Итого за дисциплину 30 45 20 20 25 25 32 2 - 30 191 8/4 18/8 165 21 2/2 4/2 15 2/2 15 17 17 2 15 15 15 19 2 2/2 15 19 2/2 2/2 15 17 17 2 2 15 15 17 17 15 2 2 15 15 15 18/8 285 9 324 12/6 4.2 Содержание дисциплин Тема 1.1. Основания и история возникновения объектно-ориентированного подхода Введение: программирование как область человеческой деятельности, связь с другими сферами деятельности человека. Цели и задачи изучаемой дисциплины, связь с другими дисциплинами. 6 Эволюция разработки программного обеспечения. Процедурный стиль программирования. Причины появления функциональных языков. Исследования в области тестирования программ, организации процесса разработки программного обеспечения. Создание методик программирования. Структурный подход к программированию. Основные принципы структурного программирования. Проблемы программного обеспечения. Основания и история объектно-ориентированного подхода к программированию. Технологические достижения, способствующие возникновению объектно-ориентированного программирования. Причины появления и актуальность объектно-ориентированного программирования (ООП) как направления современной теории и практики создания программных систем. Основные области применения ООП: разработка программ, создание баз данных, построение прикладных систем. Основные преимущества применения ООП при создании программных систем. Тема 1.2 Основные понятия и модели: объект, класс, данные, методы, доступ, наследование свойств, системы объектов и классов Реальные системы как системы взаимодействия объектов. Понятие объекта. Механизм взаимодействия объектов. Модель клиент-сервер как модель взаимодействия объектов. Определение объекта: сущность, способная сохранять свое состояние (информацию) и обеспечивающая набор операций (поведение) для проверки и изменения этого состояния. Состояние объекта, атрибуты объекта. Изменяемые и неизменяемые атрибуты. Идентификация объекта, методы идентификации объекта. Понятие уникального атрибута. Значение правильности идентификации объекта в распределенных объектах. Интерфейс объекта как описание взаимодействия объекта с окружающим миром. Понятия: сообщение, событие, метод. Факторы, обусловившие появление и содержание концепции ООП. Основные идеи ООП: использование объекта в качестве основной компоненты программы и децентрализация управления, реализуемая представлением программы совокупностью взаимодействующих объектов. Формулировка концепции ООП. Место и роль ООП в теории и практике разработки программных систем. Структура концепции ООП. Основные концепции ООП: инкапсуляция, наследование, полиморфизм. Определение и сущность указанных понятий. Объект как совокупность данных и набора операций. Семантика объекта: данные как отражение состояния объекта и методы как средства обеспечения взаимодействия объектов. Представление данных. Классификация методов: конструкторы, деструкторы, селекторы и модификаторы. Примеры. Объекты ООП и объекты реального мира. Наглядное представление объектов. Инкапсуляция данных и скрытие информации. Классы объектов: назначение и семантика. Классы и абстрактные типы данных. Инкапсуляция: назначение предметы, прагматика. Инкапсуляция и области видимости. Защита на уровне объекта и на уровне класса. Наглядное представление классов. Объекты как экземпляры классов. Необходимость определения состояния. Основные действия с объектами: создание, инициализация, использование, разрушение. Тема 2. Проектирование объектно-ориентированных программ: методы и алгоритмы. Разработка структуры программного обеспечения при объектно-ориентированном подходе. Определение отношений между объектами.. Уточнение отношений классов. Отношение наследования для классов. Реализация спецификации и обобщения свойств объектов. Простое и множественное наследование. Сценарии наследования. Иерархия классов. Проектирование классов. 7 Модель вычислений: управление объектами с помощью передачи сообщений. Компоновка программных компонентов. Программа как система взаимодействующих объектов. Полиморфизм: назначение и семантика. Виды и реализации полиморфизма: полиморфные, переопределяемые и виртуальные функции, шаблоны функций и классов. Проектирование размещения программных компонентов для распределения программных средств. Особенность спиральной модели разработки. Реорганизация проекта. Тема 2.2 Объектно-ориентированные языки, классификация, архитектура, выразительные средства, технология применения. Классификация объектно- ориернтированных языков программирования. Язык программирования Си++: основные черты Си++; примеры программ на Си++; обобщенная сортировка на Си++; оценка Си++. Язык программирования Оберон: история Оберона; характеристика языка Оберон; Оберон-2; примеры программ на языке Оберон; сортировка на Обероне. Язык программирования на Ява: основные свойства языка Ява; устройство языка Ява; примеры программ на Яве. Тема 3. Интерфейс: правила организации, методы и средства программирования Типы интерфейсов и этапы их разработки. Психофизические особенности человека, связанные с восприятием, запоминанием и обработкой информации. Пользовательская и программная модели интерфейса. Классификация диалогов и общие принципы их разработки. Основные компоненты графических пользовательских интерфейсов. Реализация диалогов в графическом пользовательском интерфейсе. Пользовательские интерфейсы прямого манипулирования и их проектирование. Интеллектуальные элементы пользовательских интерфейсов. Тема 4. Проект приложения системы визуального объектно-ориентированного проектирования Delphi Понятие проекта. Разработка простейшего приложения: 1. Создание интерфейса приложения 2. Определение функциональности приложения Понятие интерфейса как способа взаимодействия пользователя и приложения. Способы определения функциональности приложения как реакции компонентов на те или иные действия пользователя: использование процедур, которые выполняются при возникновении определенных событий. Структура головного файла программы (проекта). Принцип модульности. Структура модуля. Разделы модуля: interface, implementation, initialization, finalization. Основные файлы проекта. Файлы, создаваемые компилятором. Взаимосвязь между отдельными частями проекта. Области видимости класса. Определение процедуры и функции как программных блоков, которые могут вызываться из разных частей программы. Объявление процедуры и функции. Различные варианты передачи параметров в функции и процедуры. Понятие формальных и фактических параметров (аргументов). Способы передачи параметров при вызове процедуры или функции: Передача по значению: создание временных переменных; Передача по ссылке (как переменных): использование указателя на место хранения аргумента; Передача как константы: нельзя изменять значение аргумента; Передача как выходного: не передается начальное значение. 8 Тема 4.1. Структура класса. Области видимости класса Класс как специальный тип данных. Объект как экземпляр класса или переменная этого типа. Члены класса: поля, свойства и методы. Структура описания класса. Объявление свойств, методов и событий. Понятие класса-родителя и класса-потомка. Класс TObject как базовый класс для всех классов. Разделы описания классов: private, protected, public, published. Объявления объектов как экземпляров класса. Доступ к конкретному элементу объекта (полю, свойству, методу). Виды методов. Конструктор, деструктор, их назначение. Сообщения и события, определения и понятие. Тема 4.2. Библиотека визуальных компонентов. Библиотека визуальных компонентов VCL . Иерархия классов. Взаимодействие классовпотомков и классов-родителей. Абстрактный класс Tobject и его наиболее общие для всех классов-потомков методы: create, destroy, free. Характеристика классов Tpersistent, Tcomponent, Tcontrol. Класс Tpersistent – абстрактный класс для объектов, работающих с потоками. Метод Assign, позволяющий передавать поля и свойства одного объекта другому. Класс Tcomponent – базовый класс для всех компонентов: визуальные и невизуальные компоненты. Класс Tcontrol – базовый класс для визуальных компонентов: оконные и неоконные. Общая характеристика визуальных компонентов. Класс TwinControl – базовый класс оконных элементов. Примеры оконных элементов: редакторы (Edit, DBEdit, Memo), компоненты, не связанные с редактированием текста (Button, ListBox, DBListBox). Понятие дескриптора окна. Класс TgraphicControl – базовый класс неоконных элементов управления (примеры Label, DBText). Ввод и отображение чисел, дат и времени. Специализированные компоненты для ввода целых чисел: UpDown, SpinEdit. Компоненты для ввода и отображения дат и времени DateTimePicker, MonthCalendar, Calendar. Компонент F1Book – страницы Excel. Проектирование компонента F1Book. Принципы обеспечения синтаксически правильного ввода текстовых и цифровых данных. Кнопки, индикаторы и другие управляющие элементы. Управляющие кнопки Button, BitBtn. Свойство Caption, Cancel, Default, Glyph, метод Click, событие OnClick. Кнопка с фиксацией SpeedButton. Использование переключателей и флажков. Компонент CheckBox – флажок (независимый переключатель). Свойства: Checked, Enabled, AllowGrayed, State. Событие OnClick. Компонент RadioButton – зависимый переключатель. Компонент-контейнер RadioGroup и его свойства Items, Columns, ItemIndex. Панели и компоненты внешнего оформления. Многостраничные панели – компоненты TabControl, PageControl, TabSet, TabbedNoteBook, NoteBook. Компонент PageControl. Свойства Style, MultiLine, TabPosition, TabHeight, TabWidth, ScrollOpposite, ActivePage, Pages[i], PageCount. События OnChanging, OnChange. Страница компонента как объект типа TtabSheet и егосвойства: Name, Caption, PageIndex, ImageIndex. Компонент TabControl и его особенности. Инструментальные панели – компоненты ToolBar и PageScroller. 9 Компонент ToolBar и его свойства Align, ButtonHeight, ButtonWidth, Wrapable. Занесение кнопок на панель ToolBar и появление кнопки типа TtoolButton. Свойства: Images, DisabledImages, HotImages, MenuItem, Wrap, Style, Marked. Компонент PageScroller и его свойства Control,Margin, AutoScroll. Полоса состояния StatusBar и свойства Panels, Items. Объединение элементов управления. Специальные компоненты – контейнеры. Универсальные контейнеры: группа GroupBox, панель Panel, область с прокруткой ScrollBox, фрейм (рамка) Frame. Тема 4.3. Класс для операций со строковыми данными. Класс Tstrings – базовый класс для операций со строковыми данными. Примеры компонентов: ListBox, DBListBox, RadioGroup, DBRadioGroup, Memo. Компоненты-списки ListBox, ComboBox. Основные свойства и методы: Свойство Сount типа integer задаёт число элементов в списке. Методы Add и insert служат для добавления/вставки строк в список. Для заполнения списка можно использовать методы Addstrings и AddObject. Процедуры Addstrings (strings: TStrings) добавляет с конец списка группу строк, определяемую параметром strings. Функция AddObject (const S: Strings; AObject: TObject): Integer добавляет в конец списка строку s и связанную с ней ссылку на объект, указываемую параметром AОbject. Процедура Assign (Source: TPersistent) присваивает один объект другому. Функция Equals (Strings:Tstrings) : Boolean используется для определения, содержат ли два списка строк одинаковый текст. Для удаления элементов списка используются методы Delete и clear. Поиск элемента в списке можно выполнить с помощью метода indexof. У класса Tstrings есть методы saveToFile и LoadFromFile, позволяющие непосредственно работать с текстовыми файлами. Технология drag-and-drop (“перетаскивание”) позволяет пользователю перемещать различные объекты, например, элементы одного списка в другой. С этой технологией перемещения объектов связаны события: - onstartDrag; - onDragOver; - onDragDrop; -onEndDrag. Компоненты ввода и отображения текстовой информации. Memo, RichEdit. Однострочные компоненты редактирования: Edit, MaskEdit. Компонент Edit и его свойства: CharCase, PasswordChar. Компонент MaskEdit и его свойство EditMask. Создание шаблона. Обработка событий нажатия клавиш. Обработчик события OnKeyPress. Многострочные компоненты редактирования: Memo, RichEdit. Компонент Memo и его свойства: Text, Lines, ScrollBars, Alignment. Методы LoadFromFile, SaveToFile. Тема 4.4. Создание компонента. Описание класса нового компонента. Создание компонентов. Этапы создания компонентов: 1. создание шаблона класса – выбор компонента- предка для оформления на его основе описания класса 2. описание класса нового компонента: 3. задание новых свойств и методов компонента 4. переопределение методов предка компонента 5. создание значка компонента 10 6. инсталляция компонента Тема 4.5. Форма как главный компонент приложения Понятие формы в Delphi. Класс TForm. Определение формы как контейнера или окна, содержащего интерфейсную часть приложения. Понятие главного окна приложения. Содержание файла проекта dpr. Вид формы: область заголовка, клиентская часть, строка состояния, полосы прокрутки, строка меню. Понятие модальной формы. Формы-диалоги как пример модальной формы. Два основных типа приложений в Windows: SDI (однодокументное приложение), MDI (многодокументное приложение). Характеристики формы: свойства, методы и события. Управление видимостью форм на экране: использование свойства Visible, применение методов Show, Hide. Свойства формы: 1. FormStyle - стиль формы 2. BorderStyle – вид и поведение рамки 3. BorderIcons – набор кнопок 4. Icon- определение пиктограммы 5. Wigth, Height, ClientWigth, ClientHeight – размеры формы и клиентской области формы 6. Menu – определение главного меню 7. Position – размещение и размер формы при отображении 8. Active – определение активности формы 9. WindowState – состояние отображения формы 10. ActiveControl – определение элемента, находящегося в фокусе События, наступающие при создании и использовании формы: OnCreate, OnShow, OnResize, OnActivate, OnPaint. Событие OnResize, возникающее при каждом изменении размеров формы. Методы закрытия и уничтожения формы: Close, Release, Free, Destroy. События, наступающие при закрытии и уничтожении формы: OnCloseQuery, OnClose, OnDeactivate, OnHide, OnDestroy. Тема 4.6. Организация взаимодействия форм Организация взаимодействия форм. Определение ссылки на модуль второй формы. Методы вызова формы: Show, ShowModal. Особенности модальных форм. Функция ShowModal. Использование свойства ModalResult кнопки, закрывающей форму. Вывод заставки. Два способа определения формы заставки: как обычная форма и как модальная форма. Информационное окно. Использование стандартных диалоговых окон для выполнения операций открытия, сохранения файлов. Компоненты: OpenDialog, SaveDialog. Свойства компонентов и метод Execute. Создание одноэкземплярного приложения. Использование API-функций. Запуск других приложений из разрабатываемого приложения. Функции: WinExec, ShellExecute. Тема 4.7. Меню как основной элемент управления приложением Меню как основной элемент управления приложением. Главное меню - компонент MainMenu и контекстное меню – компонент PopupMenu. Меню как список пунктов, объединенных по функциональному признаку, каждый из которых обозначает команду или вложенное меню (подменю). Виды меню: главное, контекстное меню (всплывающее). 11 Пункт меню как объект типа TMenuItem. Основные свойства пункта меню: Caption, Bitmap, Enabled, Visible, ShortCut, Break, Checked, RadioItem, Items, Count.основное событие пункта меню OnClick. Конструктор меню, используемый для создания меню при разработке приложения. Главное меню: компонент MainMenu. Динамическая настройка меню: добавление пункта, удаление пункта, подключение меню к форме. Контекстное меню PopupMenu. Способы вызова контекстного меню: нажатием правой кнопки мыши, программно с помощью метода Popup. Работа с файлами и каталогами с помощью компонентов: DriveComboBox, DirectoryListBox, FileListBox, FilterComboBox. Выбор дисковода: компонент DriveComboBox. Основные свойства: Drive, DirList, Items, TextCase. Основное событие OnChange. Просмотр и перемещение по дереву каталогов: компонент DirectoryListBox. Основные свойства: Directory, DirLabel, FileList. Основное событие OnChange. Просмотр списка и выбор имени файла: компонент FileListBox. Основные свойства: Directory, Items, FileEdit, MuliSelect, FileName, FileType, Mask. Выбор маски для списка файлов: компонент FilterComboBox. Основное свойство Filter. Функция для отображения файлов графического типа GraphicFilter. Тема 4.8. Класс исключений. Понятие исключительной ситуации. Виды ошибок: синтаксические, логические, динамические (ошибки времени выполнения RuntimeError). Причины возникновения исключительной ситуации. Цель обработки исключительной ситуации – нейтрализация динамической ошибки, вызвавшей ее. Класс Exception, объединяющий механизмы обработки ошибок в Delphi. Объекты исключительной ситуации. Понятие глобального и локального обработчика исключительной ситуации. Описание класса Exception, содержащее два свойства и восемь методов. Свойства: Message, HelpContext. Методы: Create, CreateFmt, CreateHelp, CreateFmtHelp. Классы – потомки: EAbort, EMathError, EOutOfMemory, EIntOutError, EIntError, EConvertError, EDivByZero, EZeroDivide, EFCreateError, EFOpenError. Классы исключений для работы с базами данных: EDatabaseError, EDBClient, EDBEngineError, ENoResultSet. Глобальная обработка исключений. Объект Application типа TApplication. Событие ONException объекта Application, являющееся глобальным обработчиком исключительной ситуации. Методы HandleException, ShowException. Компонент ApplicationEvents, позволяющий создать собственный глобальный обработчик. Локальная обработка исключений. Конструкции try … finally … end, try … except … end. Конструкция on … do, позволяющая анализировать класс исключительной ситуации с целью ее обработки. Вызов исключительной ситуации с помощью оператора raise, выполнение которого приводит к созданию объекта исключительной ситуации экземпляра класса Exception или его потомка. Особенности отладки обработчиков ошибок. Тема 4.9. Разработка справочной помощи. Создание текстового файла справки. Текстовый файл справки как документ формата RTF. Атрибуты разделов текстового файла справки: контекст – строка, однозначно идентифицирующая раздел заголовок – название раздела 12 список ключевых слов – слова для поиска раздела в окне справки номер в последовательности просмотра – положение раздела при последовательном просмотре справочного файла Оформление ссылок, используемых для навигации по справочной системе. Разработка справочной помощи в приложении. Этапы организации справочной системы: 1. определение номеров контекста справочной системы для управляющих элементов формы 2. создание с помощью редактора текстового файла справки 3. создание с помощью специального компилятора справочного файла 4. подключение справочного файла к приложению и организация их вызова определение номера контекста с помощью свойства HelpContext. Создание справочного файла с помощью программы Microsoft Help WorkShop. Создание файла проекта HPJ. Подключение справочного файла с помощью окна параметров проекта приложения, динамическое подключение с помощью свойствам HelpFile приложения Application. Вызов справки по пункту меню или кнопки: Application.HelpCommand(Help_Contents,0). Тема 4.10 Преимущества и недостатки объектно-ориентированного программирования Преимущества и недостатки объектно-ориентированного программирования, выявленные практикой разработки программных систем. Основные тенденции и направления развития объектно-ориентированных технологий создания программ в условиях распределения процесса разработки в пространстве и во времени и необходимости обеспечения качества программных продуктов. 4.3 Лабораторные работы Лабораторная работа №1 Организация доступа к свойствам и методам объекта в объектно-ориентированном приложении. Реализуемые компетенции: ОК-6, ПК-5 Цель работы - разработать объектно-ориентированное приложение; - обеспечить из программы доступ к свойствам и методам объектов; - повторить типы данных, управляющие операторы Delphi. 1. 2. 3. 4. 5. 6. Контрольные вопросы Какие проблемы программирования послужили причиной возникновения ООП? Что лежит в основе ООП? Как осуществляется доступ к свойствам и методам объектов? Назовите типы данных в Object Pascal. Какие существуют функции преобразования типов данных? Какие Вы знаете операторы в Object Pascal. Литература 13 1. Информатика, автоматизированные информационные технологии и системы: Учебник / В.А. Гвоздева. - М.: ИД ФОРУМ: НИЦ ИНФРА-М, 2015. - 544 с. 2. Ашарина И.В. Объектно-ориентированное программирование в С++ [Электронный ресурс]: учебное пособие/ Ашарина И.В.— Электрон. текстовые данные.— М.: Горячая линия - Телеком, 2012.— 320 c. 3. Основы алгоритмизации и программирования: Учебное пособие / В.Д. Колдаев; Под ред. Л.Г. Гагариной. - М.: ИД ФОРУМ: ИНФРА-М, 2012. - 416 с. Лабораторная работа №2 Использование принципов объектно-ориентированного программирования в приложении Реализуемые компетенции: ОК-8, ПК-3 Цель работы: - научиться объявлять классы, определять методы; - рассмотреть действие принципа полиморфизма в приложении Delphi. Контрольные вопросы: 1. Назовите основные принципы объектно-ориентированного программирования 2. Что такое класс в ООП? Как объявляется класс? 3. Что такое поле класса? Для чего используются свойства класса? 4. Что представляет собой метод класса? Как определяется вид метода? 5. Для чего используются конструкторы и деструкторы? 6. Объясните принцип действия полиморфизма в ООП. Литература 1. Информатика, автоматизированные информационные технологии и системы: Учебник / В.А. Гвоздева. - М.: ИД ФОРУМ: НИЦ ИНФРА-М, 2015. - 544 с. 2. Ашарина И.В. Объектно-ориентированное программирование в С++ [Электронный ресурс]: учебное пособие/ Ашарина И.В.— Электрон. текстовые данные.— М.: Горячая линия - Телеком, 2012.— 320 c. 3. Основы алгоритмизации и программирования: Учебное пособие / В.Д. Колдаев; Под ред. Л.Г. Гагариной. - М.: ИД ФОРУМ: ИНФРА-М, 2012. - 416 с. Лабораторная работа №3 Определение области видимости элементов в приложении Реализуемые компетенции: ОК-6, ПК-3 Цель работы: - научиться объявлять и описывать переменные, функции и процедуры в разных областях видимости и осуществлять к ним доступ. Контрольные вопросы 1. Как осуществляется доступ к свойствам и методам объектов? 2. Как объявить класс? 3. Из каких разделов состоит описание класса? 4. Объясните, чем отличается объявление процедуры в разделе private от объявления в разделе public описания класса? 5. Как осуществляется доступ к объектам, включенным в определение класса, из процедур, описанных вне класса? Приведите пример. 14 6. От чего зависит способ доступа к объектам, переменным и функциям модуля? 7. Назовите основные разделы модуля? 8. Что такое области видимости переменных и функций? 9. Какие существуют способы передачи параметров? 10. Что означает передача параметра по значению? 11. Что означает передача параметра по ссылке? Литература 1. Информатика, автоматизированные информационные технологии и системы: Учебник / В.А. Гвоздева. - М.: ИД ФОРУМ: НИЦ ИНФРА-М, 2015. - 544 с. 2. Ашарина И.В. Объектно-ориентированное программирование в С++ [Электронный ресурс]: учебное пособие/ Ашарина И.В.— Электрон. текстовые данные.— М.: Горячая линия - Телеком, 2012.— 320 c. 3. Основы алгоритмизации и программирования: Учебное пособие / В.Д. Колдаев; Под ред. Л.Г. Гагариной. - М.: ИД ФОРУМ: ИНФРА-М, 2012. - 416 с. Лабораторная работа №4 Создание компонентов Реализуемые компетенции: ОК-6, ПК-3, ПК-5 Цель работы - Изучить этапы создания компонентов - Создать новый компонент Контрольные вопросы 1. Назовите этапы создания компоненты. 2. Что означает понятие «предок компонента»? 3. Как создать шаблон класса? 4. Что такое свойства класса? 5. В каких разделах могут быть описаны свойства класса? 6. Назовите формат создания свойств. 7. Для чего необходимо создавать новые методы? 8. Как переопределить метод класса? 9. Как создать новый значок? 10. Как можно разместить новый компонент в Палитре компонент? Литература 1. Информатика, автоматизированные информационные технологии и системы: Учебник / В.А. Гвоздева. - М.: ИД ФОРУМ: НИЦ ИНФРА-М, 2015. - 544 с. 2. Ашарина И.В. Объектно-ориентированное программирование в С++ [Электронный ресурс]: учебное пособие/ Ашарина И.В.— Электрон. текстовые данные.— М.: Горячая линия - Телеком, 2012.— 320 c. 3. Основы алгоритмизации и программирования: Учебное пособие / В.Д. Колдаев; Под ред. Л.Г. Гагариной. - М.: ИД ФОРУМ: ИНФРА-М, 2012. - 416 с. Лабораторная работа №5 Использование формы как главного компонента при создании приложения Реализуемые компетенции: ОК-6, ОК-8, ПК-5 15 Цель работы: Изучение свойств формы как главного компонента приложения. Контрольные вопросы 1. Перечислите основные свойства формы. 2. Приведите примеры генерируемых событий и их обработки. 3. Перечислите события, которые генерируются при создании и исполнении формы. Приведите порядок их следования. 4. Перечислите события, которые генерируются при закрытии и уничтожении формы. Приведите порядок их следования. 5. Какие события генерируются при закрытии формы? Приведите пример обработчика события закрытия формы. 6. Какое событие генерируется при создании формы? Приведите пример обработчика события создания формы. 7. Какое свойство определяет вид и поведение рамки? 8. Какое свойство определяет стиль формы? 9. Какое свойство определяет наличие кнопок в заголовке формы? 10. Какое свойство определяет ограничение на минимальную и максимальную высоту формы? 11. Какие свойства характеризуют форму как главный объект приложения? 12. Какое событие генерируется при изменении размера формы? Приведите пример обработчика события изменения размера формы. Литература 1. Информатика, автоматизированные информационные технологии и системы: Учебник / В.А. Гвоздева. - М.: ИД ФОРУМ: НИЦ ИНФРА-М, 2015. - 544 с. 2. Ашарина И.В. Объектно-ориентированное программирование в С++ [Электронный ресурс]: учебное пособие/ Ашарина И.В.— Электрон. текстовые данные.— М.: Горячая линия - Телеком, 2012.— 320 c. 3. Основы алгоритмизации и программирования: Учебное пособие / В.Д. Колдаев; Под ред. Л.Г. Гагариной. - М.: ИД ФОРУМ: ИНФРА-М, 2012. - 416 с. Лабораторная работа №6 Разработка приложения с использованием главной и модальной формы, заставки и информационного окна Реализуемые компетенции: ОК-8, ПК-3 Цель работы: - изучить свойства компонента форма; - изучить понятия модальной и главной форм, заставки и информационного окна; приобрести навыки в разработке приложения с использованием главной и модальной формы, заставки и информационного окна. 1. 2. 3. 4. 5. Контрольные вопросы Какая форма называется модальной. Для чего необходимо отложенное создание формы, когда форма не создается при инициализации приложения? Какой метод служит для создания экземпляров формы? Какой командой форма включается в зону видимости другой формы? Приведите примеры генерируемых событий и их обработки. 16 6. Какие события генерируются при закрытии формы? Приведите пример обработчика события закрытия формы. 7. Какое событие генерируется при создании формы? Приведите пример обработчика события создания формы. 8. Какое свойство определяет вид и поведение рамки? 9. Какое свойство определяет стиль формы? 10. Какое свойство определяет отображение формы поверх остальных? 11. Какое свойство определяет ограничение на минимальную и максимальную высоту формы? 12. Какие свойства характеризуют форму как главный объект приложения? Литература 1. Информатика, автоматизированные информационные технологии и системы: Учебник / В.А. Гвоздева. - М.: ИД ФОРУМ: НИЦ ИНФРА-М, 2015. - 544 с. 2. Ашарина И.В. Объектно-ориентированное программирование в С++ [Электронный ресурс]: учебное пособие/ Ашарина И.В.— Электрон. текстовые данные.— М.: Горячая линия - Телеком, 2012.— 320 c. 3. Основы алгоритмизации и программирования: Учебное пособие / В.Д. Колдаев; Под ред. Л.Г. Гагариной. - М.: ИД ФОРУМ: ИНФРА-М, 2012. - 416 с. Лабораторная работа №7 Использование меню в приложении Реализуемые компетенции: ПК-3, ПК-5 Цель работы: - изучить свойства главного меню; - изучить свойства и способы применения контекстного меню; - приобрести навыки в разработке приложения с использованием главного и контекстных меню. 1. 2. 3. 4. 5. 6. 7. 8. 9. Контрольные вопросы Какое меню называется главным? Какое меню называется контекстным? Для чего необходимо создание контекстных меню? Какой метод служит для имитации выбора пункта меню? Какое меню называется строчным? Какое свойство содержит строку текста, отображаемую как название (заголовок) пункта меню? Какое свойство определяет, активен ли пункт меню? Какое свойство определяет, является ли пункт меню выделенным? Каким образом осуществляется задание контекстного меню для формы? Литература 1. Информатика, автоматизированные информационные технологии и системы: Учебник / В.А. Гвоздева. - М.: ИД ФОРУМ: НИЦ ИНФРА-М, 2015. - 544 с. 2. Ашарина И.В. Объектно-ориентированное программирование в С++ [Электронный ресурс]: учебное пособие/ Ашарина И.В.— Электрон. текстовые данные.— М.: Горячая линия - Телеком, 2012.— 320 c. 3. Основы алгоритмизации и программирования: Учебное пособие / В.Д. Колдаев; Под ред. Л.Г. Гагариной. - М.: ИД ФОРУМ: ИНФРА-М, 2012. - 416 с. 17 Лабораторная работа №8 Создание классов исключений Реализуемые компетенции: ОК-8, ПК-5 Цель работы: - изучить механизм глобальной обработки исключений; - научиться создавать локальные обработчики исключений. Контрольные вопросы 1. Как реализуется механизм глобальной обработки исключений? 2. Какие конструкции языка программирования применяются для локальной обработки исключений? 3. Синтаксис и назначение конструкции try …except. 4. Синтаксис и назначение конструкции try …finally. 5. Как работает конструкция try …except? 6. Как работает конструкция try … finally? 7. С помощью какой конструкции можно разбить блок except на несколько частей? 8. Какой командой и где переопределяется глобальный обработчик исключений? 9. Как создается новый класс исключения и для чего он необходим? Приведите пример. 10. Как создается новый класс для глобальной обработки исключений? Приведите пример. Литература 1. Информатика, автоматизированные информационные технологии и системы: Учебник / В.А. Гвоздева. - М.: ИД ФОРУМ: НИЦ ИНФРА-М, 2015. - 544 с. 2. Ашарина И.В. Объектно-ориентированное программирование в С++ [Электронный ресурс]: учебное пособие/ Ашарина И.В.— Электрон. текстовые данные.— М.: Горячая линия - Телеком, 2012.— 320 c. 3. Основы алгоритмизации и программирования: Учебное пособие / В.Д. Колдаев; Под ред. Л.Г. Гагариной. - М.: ИД ФОРУМ: ИНФРА-М, 2012. - 416 с. Лабораторная работа №9 Разработка справочной помощи Реализуемые компетенции: ОК-8, ПК-3,ПК-5 Цель работы: - изучить способы создания справочной помощи; - приобрести навыки в создании справочной помощи. 1. 2. 3. 4. 5. 6. Контрольные вопросы Перечислите этапы создания системы справочной помощи. Как определяется номер контекста элемента? Какое приложение операционной системы Windows используется для отображения файла справки с расширением «HLP»? В какой среде выполняется первый этап создания системы справочной помощи? В какой среде выполняется второй этап создания системы справочной помощи? В какой среде выполняется третий этап создания системы справочной помощи? 18 7. В какой среде выполняется четвертый этап создания системы справочной помощи? 8. Что представляет собой атрибут раздела? 9. На что можно выполнить ссылку? 10. Перечислите атрибуты, которые могут быть назначены разделу? 11. Укажите символ сноски атрибута раздела «контекст». 12. Укажите символ сноски атрибута раздела «заголовок». 13. Укажите символ сноски атрибута раздела «список ключевых слов». 14. Укажите символ сноски атрибута раздела «номер в последовательности просмотра». 15. Из чего состоит текст справочной системы? Литература 12. Ашарина И.В. Объектно-ориентированное программирование в С++ [Электронный ресурс]: учебное пособие/ Ашарина И.В.— Электрон. текстовые данные.— М.: Горячая линия - Телеком, 2012.— 320 c. 3. Основы алгоритмизации и программирования: Учебное пособие / В.Д. Колдаев; Под ред. Л.Г. Гагариной. - М.: ИД ФОРУМ: ИНФРА-М, 2012. - 416 с. 4.4. Интерактивные образовательные технологии, используемые в аудиторных занятиях Семестр 5 Вид занятия (Л, ЛР) Л ЛР Используемые интерактивные образовательные технологии Количество часов Проблемная лекция с применением мультимедийного сопровождения лекции и технологии анализа ситуаций при активном обучении. Применение проектной технологии, междисциплинарная интеграция. Лекция – дискуссия 6 Частично-поисковая деятельность с использованием информационных ресурсов и баз данных. Групповая работа с использованием ситуационной задачи, СУ (ситуационные упражнения), технологии ситуационного моделирования. 8 Итого: 14 5.Перечень учебно-методического обеспечения для самостоятельной работы обучающихся по дисциплине 1. Бабушкина И.А. Практикум по объектно-ориентированному программированию [Электронный ресурс]: учебное пособие/ Бабушкина И.А., Окулов С.М.— Электрон. текстовые данные.— М.: БИНОМ. Лаборатория знаний, 2012.— 372 c.- ЭБС 2. Программирование на языке высокого уровня. Программирование на языке Object Pascal: Учебное пособие / Т.И. Немцова; Под ред. Л.Г. Гагариной. - М.: ФОРУМ: ИНФРАМ, 2015. - 496 с - ЭБС 19 6 Фонд оценочных средств для проведения промежуточной аттестации обучающихся по дисциплине (модулю) Итоговыми формами контроля знаний, умений и навыков по дисциплине являются экзамен. Экзамен проводится по билетам, которые включают два теоретических вопроса и одну практическую задачу. Оценка знаний студентов производится по следующим критериям: оценка «отлично» выставляется студенту, если он глубоко и прочно усвоил программный материал курса, исчерпывающе, последовательно, четко и логически стройно его излагает, умеет тесно увязывать теорию с практикой, свободно справляется с задачами и вопросами, причем не затрудняется с ответами при видоизменении заданий, правильно обосновывает принятые решения, владеет разносторонними навыками и приемами выполнения практических задач; оценка «хорошо» выставляется студенту, если он твердо знает материал курса, грамотно и по существу излагает его, не допуская существенных неточностей в ответе на вопрос, правильно применяет теоретические положения при решении практических вопросов и задач, владеет необходимыми навыками и приемами их выполнения; оценка «удовлетворительно» выставляется студенту, если он имеет знания только основного материала, но не усвоил его деталей, допускает неточности, недостаточно правильные формулировки, нарушения логической последовательности в изложении программного материала, испытывает затруднения при выполнении практических задач; оценка «неудовлетворительно» выставляется студенту, который не знает значительной части программного материала, допускает существенные ошибки, неуверенно, с большими затруднениями решает практические задачи или не справляется с ними самостоятельно. 6.1. Перечень вопросов, выносимых на экзамен 1. Назначение COM-технологии. Какие преимущества дает использование COM? ОК-6, ОК-8 2. Назовите основные проблемы программного обеспечения, которые способствовали появлению ООП. ОК-8, ПК-3 3. Как можно обеспечить реальное ускорение процесса разработки программного обеспечения? Какова цель создания библиотек функций и библиотек классов? ОК-6, ПК-5 4. Основные принципы объектно-ориентированного программирования. ОК-8, ПК-3 5. Понятие объекта. Понятие класса. ОК-6, ПК-5 6. Что такое интерфейс объекта? Как объекты взаимодействуют друг с другом? Как осуществляется доступ к свойствам и методам объектов? ОК-6, ПК-5 7. Описание класса в языке Object Pascal. Члены класса. ОК-8, ПК-3 8. Реализация методов в классе. Конструктор и деструктор. Параметр Sender. ОК-8, ПК-5, 9. Дайте определение класса. Объявление класса. ОК-6, ПК-6 10. Структура описания класса. Разделы класса. ПК-3, ПК-5 11. Что такое свойства класса? Назначение свойства класса. ОК-6, ОК-8, ПК-5 12. Что такое поле класса? Назначение поля класса. ПК-3, ПК-5 13. Для чего предназначены методы класса? Как определяется вид метода? ОК-6, ПК-3 14. Классификация типов данных в Object Pascal. Встроенные типы данных. ОК-6, ПК-5 15. Типы, определяемые пользователем. Объявление типов данных. ПК-3, ПК-5 16. Этапы разработки приложения в среде Delphi. Файлы проекта Delphi. ОК-6, ОК-8 17. Структура модуля. Разделы interface, implementation, initialization, finalization. ПК-3, ПК-5 20 18. Компоненты Main Menu, Popup Menu. Основные свойства и события. ОК-8, ПК-3 19. Форма как главный компонент приложения. Основные свойства и события формы. ПК3, ПК-5 20. Создание нового проекта. Сохранение проекта. Добавление и удаление форм и модулей из проекта. Методы закрытия приложения. ОК-6, ПК-5 21. Виды ошибок. Исключительные ситуации. ОК-8, ПК-3 22. Глобальная и локальная обработка исключений. ПК-3, ПК-5 23. Организация взаимодействия форм. Особенности модальных форм. ОК-6, ПК-5 24. Организация взаимодействия форм. Особенности формы - заставки. ОК-8, ПК-5 25. Работа с файлами и каталогами с помощью компонентов FileListBox, DirectoryListBox, DriveComboBox, FilterComboBox. ПК-3, ПК-5 26. Компоненты Edit, SpinEdit. Основные свойства и события. ОК-8, ПК-3 27. Компоненты Edit, MaskEdit. Основные свойства и события. ОК-6, ОК-8, ПК-3 28. Компоненты Radio Group, RadioButton, GroupBox. Основные свойства и события. ОК-8, ПК-5 29. Компоненты CheckBox и RadioButton. Основные свойства и события. ОК-6, ПК-5 30. Компоненты Page Control, Tab Control. Основные свойства и события. ПК-3, ПК-5 31. Компоненты List Box, Combo Box. Основные свойства и события. ОК-6, ОК-8 32. Компоненты Edit, Label, Button. Основные свойства и события. ОК-8, ПК-5 33. Средства создания справочной помощи в приложении. ОК-3, ОК-8 34. Назначение COM-технологии. Какие преимущества дает использование COM? ОК-6, ПК-5 35. Назовите основные проблемы программного обеспечения, которые способствовали появлению ООП. ПК-3, ПК-5 36. Как можно обеспечить реальное ускорение процесса разработки программного обеспечения? Какова цель создания библиотек функций и библиотек классов? ОК-6, ОК-8, ПК-3 37. Основные принципы объектно-ориентированного программирования. ОК-8, ПК-3 38. Понятие объекта. Понятие класса. ПК-3, ПК-5 39. Что такое интерфейс объекта? Как объекты взаимодействуют друг с другом? Как осуществляется доступ к свойствам и методам объектов? ОК-8, ПК-5 40. Описание класса в языке Object Pascal. Члены класса. ПК-3, ПК-5 41. Реализация методов в классе. Конструктор и деструктор. Параметр Sender. ОК-6, ПК-3 42. Дайте определение класса. Объявление класса. ОК-8, ПК-5 43. Структура описания класса. Разделы класса. ОК-6, ПК-3 44. Что такое свойства класса? Назначение свойства класса. ОК-8, ПК-3 45. Что такое поле класса? Назначение поля класса. ОК-8, ПК-3 46. Для чего предназначены методы класса? Как определяется вид метода? ОК-6, ПК-5 47. Классификация типов данных в Object Pascal. Встроенные типы данных. ОК-8, ПК-3 48. Типы, определяемые пользователем. Объявление типов данных. ПК-3, ПК-5 49. Этапы разработки приложения в среде Delphi. Файлы проекта Delphi. ОК-6, ОК-8 50. Структура модуля. Разделы interface, implementation, initialization, finalization. ОК-8, ПК3 ПК-5 51. Компоненты Main Menu, Popup Menu. Основные свойства и события. ОК-6, ОК-8 52. Форма как главный компонент приложения. Основные свойства и события формы. ОК6, ПК-3 53. Создание нового проекта. Сохранение проекта. Добавление и удаление форм и модулей из проекта. Методы закрытия приложения. ПК-3, ПК-5 54. Виды ошибок. Исключительные ситуации. ОК-8, ПК-3, ПК-5 55. Глобальная и локальная обработка исключений. ОК-6, ПК-3 56. Организация взаимодействия форм. Особенности модальных форм. ОК-6, ОК-8 57. Организация взаимодействия форм. Особенности формы - заставки. ОК-8, ПК-5 21 58. Работа с файлами и каталогами с помощью компонентов FileListBox, DirectoryListBox, DriveComboBox, FilterComboBox. ОК-6, ОК-8, ПК-3 59. Компоненты Edit, SpinEdit. Основные свойства и события. ОК-8, ПК-3 60. Компоненты Edit, MaskEdit. Основные свойства и события. ПК-3, ПК-5 61. Компоненты Radio Group, RadioButton, GroupBox. Основные свойства и события. ПК-3, ПК-5 62. Компоненты CheckBox и RadioButton. Основные свойства и события. ОК-6, ОК-8 63. Компоненты Page Control, Tab Control. Основные свойства и события. ОК-8, ПК-5 64. Компоненты List Box, Combo Box. Основные свойства и события. ОК-8, ПК-3 65. Компоненты Edit, Label, Button. Основные свойства и события. ОК-6, ПК-3 66. Средства создания справочной помощи в приложении. ОК-8, ПК-3, ПК-5 6.2 Образцы тестовых заданий для самостоятельной работы 1. Объектно-ориентированное программирование характеризуется: Наличием одной линейной программы Разделением программы на модули все данные об объекте, его связи с другими объектами объединяются в одну структурную переменную 2. Метод это: Функция, получая в качестве обязательного параметра указатель на объект Структура, хранящая указатели this, parrent, supper Структурная переменная, содержащая всю информацию о некотором физическом предмете или реализуемом в программе понятии Определенный программистом абстрактный тип данных 3. Объект это: Функция, получая в качестве обязательного параметра указатель на объект Структура, хранящая указатели this, parrent, supper Структурная переменная, содержащая всю информацию о некотором физическом предмете или реализуемом в программе понятии Определенный программистом абстрактный тип данных 4. Класс это: Структурная переменная, содержащая всю информацию о некотором физическом предмете или реализуемом в программе понятии Определенный программистом абстрактный тип данных Переменная, описанная абстрактным типом данных 5. Когда данные являются не глобальными, доступными всей программе, а локальными доступными только малой части программы: При инкапсуляции При полиморфизме При объявлении метода 22 6. Когда функция определяется независимо в каждом производном классе и имеет в этих классах общее имя: При инкапсуляции При полиморфизме При наследовании и инкапсуляции 7. Для выполнения операции присвоение одного объекта другому: Достаточно чтобы в класе этих обхектов был специальный конструктов - конструктор копирования Классы этих объектов нужно описать одинакомым образом Достаточно чтобы в класе этих объектов были конструкторы и деконструкторы Необходимо описать оба объекта одним именем класса и иметь в классе конструктор копирования 8. В каких случаях надо иметь в классе конструктор копирования Когда нужно передать элементы класса Для выполнения операции присвоение одного элемента другому Для создания дружественной функции Для уничтожения объекта из памяти 8. В чем состоит задача конструктора копирования: Четко определить порядок создания копии объекта Размножать объект в указанном колличестве копий Копировать свойства других объектов С17. 9. Являеться ли конструктор Array(int n=0) ошибкой. Сам синтаксиз. Просто да или нет. оздать this указатель 10. Какое ключевое слово должно быть использовано чтобы указать что объект не явля-ется модифицируемым и любая попытка изменения этого типа является ошибкой: readonly const static undeclare 11. Как называются элементы класса которые относяться ко всем экземплярам объектов класса Статические Динамические Константные Защищенные 12. В каких случаях следует вводить статические элементы массива: 23 Когда требуется контроль колличества общих методов класса Когда требуется доступ к элементам массива из объектов дружественного класса Когда требуется одновременный доступ ко всем объектам класса Когда требуется определить изменяемые элементы класса 13. Каков будет результат выполнения программы public class Test { public Test() { } public static void main(String[] args) { Test test = new Test(); int i = 5; while(i = 5){ System.out.println(i++); } } } Варианты ответов 1. 2. 3. 4. а) Компилятор выдаст сообщение об ошибке в строке 8 б) На консоль будут последовательно выведены значения 01234 в) На консоль будут последовательно выведены значения 43210 г) Программа откомпилируется, но на консоль ничего выведено не будет 14 . Приведенная ниже программа должна вывести на консоль Hello World! Выберите строки, которые нужно модифицировать в программе, что бы получить правильный результат. 1. public class Test { 2. public Test() { 3. } 4. public static void main(String[] args) { 5. Test test = new Test(); 6. String [] arr = {"H","e","l","l","o"," ","w","o","r","l","d","!"}; 7. String result = ""; 8. int i= 0; 9. for(;;;){ 24 10. result += arr[i++]; 11. } 12. System.out.println(result); 13. } 14. } Варианты ответов 1. 2. 3. 4. а) Заменить строку 9 на for ( i = 0; i < arr. length ;){ б) Заменить строку 9 на for(int int i = 0; i < arr.length;){ в) Заменить строку 9 на for(i = 0; i < arr.length;i++){ г) Заменить строку 9 на for(i = 1; i <= arr.length;i++){ 15. Какая строка будет выдана на консоль после выполнения фрагмента кода приведенного ниже. 1. public class Test { 2. public Test () { 3. } 4. public static void main ( String [] args ) { 5. int i, j ; 6. lab : for ( i = 0; i < 6; i++){ 7. for (j = 3; j > 1; j--){ 8. if(i == j){ 9. System.out.println(" " + j); 10. break lab; 11. } 12. } 13. } 14. } 15. } Варианты ответов 1. 2. 3. 4. 16. а) 2345 б) 234 в) 3 г) 2 Какой результат следует ожидать при компиляции и запуске приведенного кода: 25 String str=new String("Java"); int i=1; char j=3; System.out.println(str.substring(i,j)); Варианты ответов 1. 2. 3. 4. а) Выведено: Ja б) Выведено: av в) Выведено: ava г) Ошибка: не существует метода substring(int,char). 16. Какой метод следует использовать, чтобы обнаружить позицию буквы v в строке str= "Java"? Варианты ответов 1. 2. 3. 4. а) mid (2, str ) б) str.charAt (2) в) str.indexOf ('v') г) indexOf (str,'v') 17. Что будет выведено в результате компиляции и запуска следующего кода: String str =" ava "; char ch ='J'; ch += str ; System. out. println ( ch ); Варианты ответов 1. 2. 3. 4. 5. а) Java б) ava в) avaJ г) J д) Ошибка во время компиляции. 18. Что будет результатом компиляции и выполнения следующего кода? StringBuffer s= new StringBuffer("You Java"); s.insert(2, "like "); System.out.print(s); Варианты ответов 1. а) Yolike u Java 26 2. 3. 4. 5. б) You like Java в) Ylike ou Java г) You Java like д) Ошибка компиляции: метод insert() не объявлен для класса String-Buffer 19. Что будет выведено при попытке компиляции и запуска этой программы: public class Quest6 { public static void main(String[] args){ int a[] = new int[]{1,2,3,}; System.out.print(a[1]); }} Варианты ответов 1. 2. 3. 4. 5. а) Ошибка компиляции: не определен размер массива б) Ошибка времени выполнения в) Выведено 1 г) Выведено 2 д) Ошибка компиляции: неправильная инициализация 20. Что будет выведено при попытке компиляции и запуска программы? public class Quest8{ static int j=2; public static void result(int i){ i *= 10; j += 2; } public static void main(String[] args){ char i = ’1’; result(i); System.out.println(i+" "+j); }} Варианты ответов 1. 2. 3. 4. 5. а) 1 2 б) 10 2 в) Ошибка: параметр метода result() не сочетается с передаваемой переменной г) 10 4 д) 1 4 27 21. Что будет выведено при компиляции и запуске кода? public class Quest { {System.out.print("1");} static{System.out.print("2");} Quest(){System.out.print("3");} public static void main(String[] args) { System.out.print("4"); }} Варианты ответов 1. 2. 3. 4. 5. 6. а) 34 б) 24 в) 14 г) 4 д) 1234 е) 234 22. Какие из следующих утверждений истинные? Варианты ответов 1. а) Частные методы не могут быть перегружены 2. б) Переопределенный метод не может включать исключения не обрабатываемые в базовом классе 3. в) Методы, объявленные как final, не могут быть переопределены 4. г) Статические методы не могут быть переопределены 23. Что произойдет в результате компиляции и запуска кода? class Base {} class A extends Base {} public class Quest{ public static void main(String[] args){ Base b = new Base(); A ob = (A) b; }} Варианты ответов 1. а) Ошибка во время выполнения 28 2. б) Ничего: компиляция и выполнение без ошибок 3. в) Ошибка во время компиляции 24. Что произойдет в результате компиляции и запуска кода? abstract class QuestBase { abstract void show(); static int i; } public class Quest2 extends QuestBase { public static void main(String[] args){ boolean[] a = new boolean[3]; for(i = 0; i < a.length; i++) System.out.print(“ ” + a[i]); }} Варианты ответов 1. 2. 3. 4. 5. а) Ошибка времени компиляции: Quest2 должен быть объявлен как abstract б) Ошибка времени выполнения: IndexOutOfBounds в) будет выведено: true true true г) будет выведено: false false false д) Ошибка: массив a использован прежде, чем проинициализирован 25. Какие из объявлений корректны, если: class Outer { class Inner { }} Варианты ответов 1. 2. 3. 4. 5. 6. 7. а) new Outer.Inner () б) Outer.new Inner () в) new Outer.new Inner () г) new Outer().new Inner() д) Outer.Inner() е) Outer().Inner() ж) Ни одно из приведенных. 26. Что будет выведено в результате компиляции и выполнения следующего кода: abstract class Abstract { 29 abstract Abstract meth (); } class Owner { Abstract meth () { class Inner extends Abstract { Abstract meth() { System.out.print("Inner "); return new Inner(); } } return new Inner(); }} public abstract class Quest4 { public static void main(String a[]) { Owner ob = new Owner(); Abstract abs = ob.meth(); abs.meth(); }} Варианты ответов 1. 2. 3. 4. 5. 6. 27. а) Inner б) Inner Inner в) Inner Inner Inner г) Compile time error д) Runtime error е) Ошибка компиляции из-за двойного объявления meth() в классе Owner Что будет выведено в результате компиляции и выполнения этого кода? import java.awt.*; public class Quest2 extends Frame{ Quest2(){ Button yes = new Button("YES"); Button no = new Button("NO"); add(yes); add(no); setSize(100, 100); setVisible(true); 30 } public static void main(String[] args){ Quest2 q = new Quest(); }} Варианты ответов 1. 2. 3. 4. а) Две кнопки рядом, занимающие весь фрейм, YES слева и NO справа б) Одна кнопка YES, занимающая целый фрейм в) Одна кнопка NO, занимающая целый фрейм г) Две кнопки наверху фрейма, YES и NO 28. Какой менеджер компоновок размещает компоненты в таблице с ячейками равного размера? Варианты ответов 1. 2. 3. 4. а) FlowLayout б) GridLayout в) BorderLayout г) CardLayout 29. Какое выравнивание устанавливается по умолчанию для менеджера размещений FlowLayout? Варианты ответов 1. 2. 3. 4. 5. а) Указывается явно б) FlowLayout.RIGHT в) FlowLayout.LEFT г) FlowLayout.CENTER д) FlowLayout. LEADING Правильный ответ в). 30. Сколько кнопок будет выведено в апплет: import java.applet.*; import java.awt.*; public class Quest4 extends Applet{ Button b = new Button("Yes"); public void init(){ add(b); add(b); add(b); 31 add(new Button("No")); add(new Button("No")); add(new Button("No")); }} Варианты ответов 1. 2. 3. 4. а) 1 кнопка с надписью ''Yes'' и 1 кнопка с надписью ''No'' б) 1 кнопка с надписью ''Yes'' и 3 кнопки с надписью ''No'' в) 3 кнопки с надписью ''Yes'' и 1 кнопка с надписью ''No'' г) 3 кнопки с надписью ''Yes'' и 3 кнопки с надписью ''No'' 31. Объект JСheckBox объявлен следующим образом: JCheckBox ob = new JCheckBox(); Какая из следующих команд зарегистрирует его в блоке прослушивания событий? Варианты ответов 1. 2. 3. 4. 5. а) addItemListener(this) б) addItemListener() в) ни одна из приведенных г) ob. addItemListener () д) ob. addItemListener ( this ) Правильный ответ д). Метод всегда вызывается объектом, который необходимо зарегистрировать. В качестве параметра должен передаваться объект приложения или апплета, в котором размещается данный компонент, если он реализует соответствующий интерфейс. 32. Что будет выведено в результате компиляции и выполнения следующего кода? import java.awt.*; class Quest5 extends Thread implements Runnable{ public static void main(String[] args) { Component btn = new Button(" Кнопка 1"); System.out.println(((Button) btn).getLabel()); }} Варианты ответов 1. 2. 3. 4. а) Кнопка 1 б) Ошибка компиляции: Quest5 должен наследоваться от Applet в) Ошибка компиляции: не определен метод run() интерфейса г) Ошибка компиляции: ссылка на Component не может быть инициализирована объектом Button 32 5. д) Ошибка времени выполнения 6. е) Ничего не будет выведено 33. Какой код читает параметр count в переменную i в этом фрагменте кода? < applet code=MyApplet.class width=200 height=200> < param name=count value=5> < /applet> Варианты ответов 1. 2. 3. 4. 5. а) int i = getIntParameter(''count'') б) int i = getParameter(''count'') в) int i = new Integer(getIntParameter(''count'')).intValue() г) int i = new Integer(getParameter(''count'')) д) int i = new Integer(getParameter(''count'')).intValue() 34. В пользовательском методе show() был изменен цвет фона (background) апплета. Какой метод должен быть вызван, чтобы это было визуализировано? Варианты ответов 1. 2. 3. 4. 5. а) draw () б) start () в) repaint() г) setColor() д) setbgcolor() 35. Выбрать необходимое условие принадлежности класса к апплетам? Варианты ответов 1. а) Наследник класса Applet и у него должен отсутствовать метод main() 2. б) Наследник класса Applet или его подкласса 3. в) Наследник класса Applet и в нем необходимо переопределить унаследованный от класса Applet метод paint() 4. г) Наследник класса Applet и в нем необходимо переопределить унаследованный от класса Applet метод init() 5. д) Наследник класса Applet и все его методы должны быть объявлены со спецификатором public 36. Что будет выведено в результате компиляции и запуска такого кода: import java.awt.*; import java.awt.event.*; public class Quest3 extends Frame implements WindowListener{ public Quest3(){ 33 setSize(300,300); setVisible(true); } public void windowClosing(WindowEvent e){ System.exit(0); } public static void main(String args[]){ Quest3 q = new Quest3 (); }} Варианты ответов 1. 2. 3. 4. а) Ошибка компиляции б) Компиляция и запуск с выводом пустого фрейма в) Компиляция без запуска г) Ошибка времени выполнения 37. Что будет выведено в результате компиляции и запуска приведенного кода? class Quest implements Runnable{ int i=0; public int run(){ System.out.println("i="+ ++i); return i; }} public class Quest1 { public static void main(String[] args) { Quest ob = new Quest(); ob.run(); }} Варианты ответов 1. а) Ошибка компиляции: неправильно определен метод run() 2. б) Ошибка времени выполнения: поток запускается методом start() 3. в) Ошибка компиляции: Объект ob нужно создавать, используя конструктор класса Thread 4. г) i=1 5. д) i=0 38. . Что будет выведено в результате компиляции и запуска приведенного кода? 34 class Quest5 extends Thread { Quest5 () { } Quest5 (Runnable r) { super(r); } public void run() { System.out.print("YES "); } public static void main(String[] args) { Runnable r = new Quest5(); //1 Quest5 t = new Quest5(r); //2 t.run(); }} Варианты ответов 1. 2. 3. 4. а) YES YES б) Ошибка компиляции в строке //1 в) Ошибка компиляции в строке //2 г) YES 39. Что произойдет при попытке компиляции и запуска программы? import java.util.*; class Quest4 { public static void main (String args[]) { Object ob = new HashSet(); System.out.print((ob instanceof Set)+","); System.out.print(ob instanceof SortedSet); }} Варианты ответов 1. 2. 3. 4. 5. а) true, false б) true, true в) false, true г) false, false д) ничего из вышеперечисленного 40. Корректен ли следующий код? Если нет, то какие исправления можно предложить? byte b[]={1, 2, 3}; Object o=b; 35 o=new String[]{“”, “a”, “b”}; String s[]=o; 41. Корректно ли следующее обращение к переменной x? public class Test { static void perform() { ... } private Test x; public static void main(String s[]) { x.perform(); // корректно ли это выражение? } } 42. Можно ли при переопределении некоторого абстрактного метода perform() использовать выражение super.perform()? 43. Как реализованы в классе Object методы equals(), toString(), hashCode() ? equals() – возвращает true, если ссылки на объекты совпадают; toString() – возвращает строку, которая составляется следующим образом: название класса, символ ‘@’, значение, возвращаемое вызовом метода; hashCode(), представленное в шестнадцатеричном виде; hashCode() – имеет native реализацию, возвращающую адрес, по которому хранится объект. 44. Какие действия необходимо предпринять для установления TCP-соединения между двумя Java-приложениями? Правильный ответ: во-первых, на стороне сервера надо создать экземпляр класса Server Socket с указанием порта, и затем вызвать у этого объекта метод accept(). При входе в этот метод поток исполнения приостанавливает свою работу в ожидании подключения клиента. Клиенту необходимо создать экземпляр класса Socket с указанием IP-адреса и порта сервера. После успешного выполнения конструктора на стороне сервера метод accept() вернет экземпляр класса Socket для взаимодействия двух приложений. 45. Какие объекты могут быть клонированы? 6.3 Контрольная работа по дисциплине «Объектно-ориентированное программирование» Вариант 1 36 1. Назовите и опишите основные принципы объектно-ориентированного программирования. 2. Опишите понятие объекта по следующему плану: - реальные системы как системы взаимодействия объектов - состояние объекта - интерфейс объекта - время жизни объекта - композиция объектов 3. Напишите программный код обработчика события ONKeyPress редактора Edit1 для установления разрешения ввода любых символов кроме десятичных цифр. 4. Напишите программный код вывода в Edit значения даты, выбранной в компоненте DateTimePicker. 5. Выберите правильный ответ. Раздел класса public содержит: а) опубликованные описания, которые являются общедоступными и отображаемыми при конструировании приложений б) общедоступные описания, которые видимы в любом месте программы, где доступен сам класс в) защищенные описания, которые доступны внутри модуля, в котором они находятся г) защищенные описания, которые доступны внутри модуля, в котором они находятся, а также доступны для порожденных классов за пределами названного модуля 6. Выберите правильный ответ. Поле класса - это: a) специальные типы данных, используемые для описания объектов b) особый тип записи, объединяющий в себе задание структуры данных и выполняемых над ними операций c) данные, содержащиеся в классе d) средства реализации механизма доступа к полям класса e) подпрограмма, являющаяся элементом класса 7. Выберите правильный ответ. При попытке закрытия формы возникает событие: ONHide, ONCreate, ONDeactivate, ONClose, ONShow, ONActivate, ONResize, ONCloseQuery, ONDestroy, ONPaint, ONClick, ONException, ONDragDrop, ONKeyDown, ONKeyPress, ONStartDock, ONExit 8. Выберите правильный ответ. Вид и поведение рамки формы определяет свойство: BorderIcons, BorderStyle, Position, FormStyle, WindowState, BorderWidth, KeyPreview, Visible Вариант 2. 1. Назовите основные проблемы программного обеспечения, которые способствовали появлению объектно-ориентированного программирования. 2. Опишите понятие класса по следующему плану: - определение класса 37 - наследование классов - полиморфизм - использование наследования и полиморфизма - отношения между классами - метаклассы и метаданные 3. Назовите функции вызова внешних приложений. Напишите программный код вызова приложения FUNC.EXE. 4. Напишите программный код присвоения элементам списка ListBox новых значений. 5. Выберите правильный ответ. Элементы, объявленные в разделе implementation модуля: а) видимы и доступны внутри данного модуля, но не доступны из внешних модулей б) видимы и доступны внутри данного модуля и из внешних модулей в) видимы и доступны только внутри данного модуля г) видимы и доступны для объектов любых классов и для других модулей 6. Выберите правильный ответ. Свойства класса - это: a) специальные типы данных, используемые для описания объектов b) особый тип записи, объединяющий в себе задание структуры данных и выполняемых над ними операций c) данные, содержащиеся в классе d) средства реализации механизма доступа к полям класса e) подпрограмма, являющаяся элементом класса 7. Выберите правильный ответ. При изменении размеров формы возникает событие: ONHide, ONCreate, ONDeactivate, ONClose, ONShow, ONActivate, ONResize, ONCloseQuery, ONDestroy, ONPaint, ONClick, ONException, ONDragDrop, ONKeyDown, ONKeyPress, ONStartDock, ONExit 8. Выберите правильный ответ. Стиль формы определяет свойство: BorderIcons, BorderStyle, Position, FormStyle, WindowState, BorderWidth, KeyPreview, Visible Вариант 3. 1. Дайте понятие интерфейса: правила организации, методы и средства программирования. Как объекты взаимодействуют друг с другом? Как осуществляется доступ к свойствам и методам объектов? 2. Опишите процесс объектно-ориентированного проектирования по следующему плану: - понятие проектирования по образцам - активные данные - системы образцов - поддержка процессов жизненного цикла программ с помощью методов моделирования - организационные образцы 38 - организация тестирования в объектно-ориентированных системах 3. Какая форма называется модальной? Напишите программный код для анализа результата работы модальной формы. 4. Напишите программный код записи информации из компонента Memo в текстовый файл. 5. Выберите правильный ответ. Раздел класса private содержит: a) опубликованные описания, которые являются общедоступными и отображаемыми при конструировании приложений b) общедоступные описания, которые видимы в любом месте программы, где доступен сам класс c) защищенные описания, которые доступны внутри модуля, в котором они находятся d) защищенные описания, которые доступны внутри модуля, в котором они находятся, а также доступны для порожденных классов за пределами названного модуля 6. Выберите правильный ответ. Методы класса - это: f) специальные типы данных, используемые для описания объектов g) особый тип записи, объединяющий в себе задание структуры данных и выполняемых над ними операций h) данные, содержащиеся в классе i) средства реализации механизма доступа к полям класса j) подпрограмма, являющаяся элементом класса 7. Выберите правильный ответ. При создании формы возникает событие: ONHide, ONCreate, ONDeactivate, ONClose, ONShow, ONActivate, ONResize, ONCloseQuery, ONDestroy, ONPaint, ONClick, ONException, ONDragDrop, ONKeyDown, ONKeyPress, ONStartDock, ONExit 8. Выберите правильный ответ. Размещение и размер формы при отображении определяет свойство: BorderIcons, BorderStyle, Position, FormStyle, WindowState, BorderWidth, KeyPreview, Visible 6.3Методические указания по выполнению самостоятельной работы В повышении уровня подготовки студента важную роль играет самостоятельная работа, содержание которой соответствует рабочей программе дисциплины. Самостоятельная работа студента должна сформировать устойчивые навыки самообразования, помочь в повышении уровня подготовки студентов по разделам дисциплины. Цели самостоятельной работы • Получение устойчивых навыков самообразования. • Систематизация и закрепление полученных теоретических знаний и практических умений. • Пополнение, совершенствование и углубление профессиональных знаний. • Овладение профессиональными умениями и навыками. Задачи самостоятельной работы • Овладение принципами самоорганизации познавательной деятельности на основе целенаправленного и поэтапного изучения учебного материала. • Развитие и совершенствование профессиональных практических навыков. 39 Контроль за качеством самостоятельной работы студентов проводится в процессе защиты лабораторных работ, выступлении с докладами и сообщениями на заданную тему, проверки выполнения домашних заданий и индивидуальных практических заданий. Контрольные вопросы и задания для самоподготовки. 1. Принципы структурного программирования. 2. Принцип метода заглушек при разработке программ. 3. Принцип модульного построения программ. 4. Проблемы программного обеспечения при структурном программировании. 5. Основные достоинства объектно-ориентрованного программирования (ООП). 6. Основные достижения современных технологий, обеспечивающие развитие ООП. 7. Понятие объектно-ориентированного подхода. Способ описания систем. 8. Понятие объекта. Характеристика объекта. 9. Понятие объекта. Интерфейс объекта. 10. Как осуществляется программный доступ к свойствам и методам объектов? Приведите примеры. 11. Основные принципы объектно-ориентированного программирования. 12. Понятие класса. Свойства класса. 13. Принципы наследования и полиморфизма. 14. Принципы наследования и инкапсуляции. 15. Что означает метод inherited? Что означает запись inherited create(name)? 16. Какие методы используются для создания или удаления объектов? Напишите объявление конструктора. 17. Из каких разделов состоит описание класса? Объясните, чем отличается объявление процедуры в разделе private от объявления в разделе public описания класса. 18. Как осуществляется доступ к объектам, включенным в определение класса из процедур, описанных вне класса? Приведите пример. 19. Назовите основные разделы модуля. От чего зависит способ доступа к объектам, переменным и функциям? 20. Что такое области видимости переменных и функций? От чего зависит способ доступа к объектам, переменным и функциям? 21. Какие существуют способы передачи параметров? 22. Что означает передача параметра по значению? Напишите функцию вычисления суммы двух чисел, используя передачу параметров по значению и вызов функции. 23. Что означает передача параметра по ссылке? Напишите функцию вычисления суммы двух чисел, используя передачу параметров по ссылке и вызов функции. 24. Назовите однострочные компоненты редактирования и их основные отличительные свойства. 25. Чем отличаются компоненты Edit и MaskEdit? Назовите их отличительные свойства. 26. В каком событии компонента Edit можно осуществить проверку нажатой клавиши? Напишите обработчик этого события для разрешения ввода только десятичных цифр. 27. Назовите многострочный компонент редактирования и его основные свойства. 28. Напишите программный код чтения информации из текстового файла в компонент Memo. 29. Напишите программный код записи информации из компонента Memo в текстовый файл. 30. Назовите компоненты-списки, их основные свойства и отличия. 31. Какие компоненты используются для работы с переключателями? Чем отличается флажок от зависимого переключателя? 32. Каким компонентом представлен независимый переключатель (флажок)? Что означают свойства Checked, AllowGrayed и State флажка? 40 33. Какими компонентом представлен зависимый переключатель? Что означает свойство Checked переключателя? 34. Какие компоненты используются для объединения переключателей в группу? 35. Что собой представляет компонент RadioGroup? С помощью какого свойства осуществляется управление числом и названиями переключателей? 36. Как осуществляется программный доступ к свойствам и методам объекта? Что означает запись Label1.Caption? 37. Что такое класс? Как он объявляется? Основные принципы объектно-ориентированного программирования 38. Чем отличается процедура от функции? Как они объявляются? Назовите способы передачи параметров. 39. Назовите компоненты для работы с текстом. Чем отличается компонент Edit от MaskEdit? Какой тип имеет свойство Edit1.Text? 40. Чем отличаются компоненты CheckBox и RadioButton? Какие существуют группирующие компоненты для переключателей? 41. Какую роль выполняет компонент Panel? Назовите компоненты объединения. Чем отличается компонент GroupBox от компонента RadioGroup? 42. Какие события наступают при создании формы, при закрытии и уничтожении формы? 43. Напишите доступ к свойству Caption формы 44. Что такое принцип наследования? 45. Разделы модуля и их назначение 46. Методы вызова форм. Что такое модальная форма? 47. Какой компонент позволяет создать многостраничную панель? Назовите основные свойства компонента 48. Какое назначение имеют компоненты StatusBar, ToolBar? 49. Как создать меню на форме? 50. Как создать форму-заставку приложения? 51. Нарисуйте схему установления связей между компонентами для работы с файлами и каталогами. Самостоятельная работа №1 Разработка приложения «Калькулятор». Разработать объектно - ориентированное приложение «Калькулятор». Выполнение: Форма может иметь следующий вид: Программный код основных событий: 41 Объявление переменных: var Form1: TForm1; x: real; pl:(plus,minus,umn,del); Программный код для цифровых клавиш: procedure TForm1.Button1Click(Sender: TObject); begin edit1.Text:=edit1.text+'1’; end; Программный код для кнопки «+»: procedure TForm1.Button11Click(Sender: TObject); begin if Edit1.Text= ' ' then showmessage('введите числа') else begin pl:=plus; x:=strtofloat(Edit1.Text); edit1.Text:=''; end; end; Программный код для для кнопки «=»: procedure TForm1.Button16Click(Sender: TObject); begin if Edit1.Text=' ' then showmessage('введите числа') else begin case pl of plus:edit1.Text:=floattostr(x+strtofloat(Edit1.text)); minus:edit1.Text:=floattostr(x-strtofloat(Edit1.text)); umn:edit1.Text:=floattostr(x*strtofloat(Edit1.text)); del: if (edit1.text='0') then showmessage('деление на нуль запрещено') else edit1.Text:=floattostr(x/(strtofloat(Edit1.text))); end; end; end; Самостоятельная работа №2 Разработка приложения «Цифровые часы». Разработать приложение «Цифровые часы». 42 Постановка задачи: Приложение похоже на часы, входящие в состав Windows. Приложение состоит из одной формы, на которой размещены следующие объекты: Label1, Timer1, MainMenu1. Label1 – метка или надпись, свойства: Caption – определяет текст надписи Font – определяет размер, цвет и шрифт текста Left, Top – определяют позицию размещения Label1 на форме Timer1 – используется для отсчета времени, основное свойство Interval (1000 = 1 сек), событие onTimer генерируется один раз в заданный интервал времени.. MainMenu1 – меню формы, каждый пункт которого представляет собой объект, основное событие пункта onClick. Обработчик данного события выполняет действия, которые должны произойти в случае выбора пункта меню. Таймер (Timer1) используется для отсчета времени с интервалом 1 сек. В обработчике события onTimer текущее значение времени отображается в надписи Label1. Меню состоит из трех пунктов: Заголовок (mnuCaption); Исходный размер (mnuSize0); Закрыть (mnuClose). Пункты «Заголовок» и «Исходный размер» предназначены для изменения внешнего вида формы. Например, пункт «Заголовок» определяет отображение заголовка и меню формы (включает/выключает). Когда пункт «Заголовок» отмечен галочкой, форма отображает заголовок и меню. Если выбрать пункт «Заголовок», галочка исчезнет, заголовок и меню станут невидимыми, изменится граница окна. В этом случае окно нельзя перемещать и изменять его размеры. Для восстановления прежнего вида формы нужно дважды щелкнуть на ней или на надписи Label1. Выполнение: 1. В инспекторе объектов для формы определить следующие свойства: FormStyle := fsStayOnTop; Position := poScreeCenter; BorderStyle := bsSizeable; BorderIcons := [biSystemMenu]; Constraints.MinWidth := 100; Constraints.MinHeight := 65; 2. Расположить объекты Label1, Timer1, MainMenu1 на форме (Рис. 1). Рис. 1. Расположение объектов 3. Создать меню (Рис. 2), не забыв переопределить свойство Name в инспекторе объектов в соответствии с постановкой задачи, например, Name := mnuCaption; 43 Рис. 2. Создание меню 4. Создать обработчик события onTimer Label1.Caption := TimeToStr(Time); 1. Создать обработчик события onCreate для формы mnuCaption.Checked := True; Form1.ClientWidth := 200; Form1.ClientHeight := 100; Timer1Timer(Sender); 2. Создать обработчик закрытия формы (событие onСloseQuery для формы) if MessageDlg('Вы хотите закрыть форму?', mtConfirmation, [mbYes,mbNo], 0) = mrYes then CanClose := True else CanClose := False; 3. Создать обработчик события выбора пункта меню «Заголовок» (событие onClick для mnuCaption) if mnuCaption.Checked then begin Form1.BorderStyle := bsNone; Form1.Menu := nil; end else begin Form1.BorderStyle := bsSizeable; Form1.Menu := MainMenu1; end; mnuCaption.Checked := not mnuCaption.Checked; 4. Создать обработчик события изменения размера формы (событие onResize для формы) if (Form1.ClientHeight/Form1.ClientWidth)<(Label1.Height/Label1.Width) then Label1.Font.Height:= Form1.ClientHeight-2 else Label1.Font.Height:= Round((Form1.ClientWidth-10)*(Label1.Height/Label1.Width)); Label1.Left:=(Form1.ClientWidth-Label1.Width) div 2; Label1.Top:=(Form1.ClientHeight-Label1.Height) div 2; 5. Создать обработчик события выбора пункта меню «Исходный размер» (событие onClick для mnuSize0) Form1.ClientWidth:=200; Form1.ClientHeight:=100; FormResize(Sender); 6. Создать обработчик двойного щелчка (событие onDblClick для Label1) mnuCaptionClick(Sender); 44 7. В инспекторе объектов присвоить событию onDblClick формы событие onDblClick для Label1 (Label1DblClick). 8. Создать обработчик события выбора пункта меню «Закрыть» (событие onClick для mnuClose) Close; 6.4Темы рефератов / учебных проектов 1. История развития программирования 2. Методология программирования 3. Основные этапы развития компьютерных технологий 4. Поколения языков программирования 5. История развития вычислительной техники 6. История возникновения объектно-ориентированного подхода 7. Эволюция разработки программного обеспечения 8. Структурный подход к программированию 9. Реальные системы как системы взаимодействия объектов 10. Графические возможности в программировании 11. Основания и история развития объектно-ориентированного подхода в программировании 12. Понятие объекта и класса 13. Принципы объектно-ориентированного программирования 14. Основные особенности объектно-ориентированного программирования 15. Современные программные средства и их развитие 16. Объектно-ориентированное проектирование систем – основные понятия и модели 17. Объектное программирование и многократное использование программных систем 18. Обработка исключений в Delphi 19. Организация приложений в Delphi 20. Использование средств мультимедиа 21. «Delphi 2009: триумф программирования для Win32» (новые возможности свежей версии популярной среды разработки) (по материалам периодической печати) 22. Средства разработки CodeGear (по материалам периодической печати) 7.Перечень основной и дополнительной учебной литературы, необходимой для освоения дисциплины (модуля) Основная литература: 1. Информатика, автоматизированные информационные технологии и системы: Учебник / В.А. Гвоздева. - М.: ИД ФОРУМ: НИЦ ИНФРА-М, 2015. - 544 с. 2. Ашарина И.В. Объектно-ориентированное программирование в С++ [Электронный ресурс]: учебное пособие/ Ашарина И.В.— Электрон. текстовые данные.— М.: Горячая линия - Телеком, 2012.— 320 c. 3. Основы алгоритмизации и программирования: Учебное пособие / В.Д. Колдаев; Под ред. Л.Г. Гагариной. - М.: ИД ФОРУМ: ИНФРА-М, 2012. - 416 с. Дополнительная литература: 45 1. Бабушкина И.А. Практикум по объектно-ориентированному программированию [Электронный ресурс]: учебное пособие/ Бабушкина И.А., Окулов С.М.— Электрон. текстовые данные.— М.: БИНОМ. Лаборатория знаний, 2012.— 372 c.- ЭБС 2. Программирование на языке высокого уровня. Программирование на языке Object Pascal: Учебное пособие / Т.И. Немцова; Под ред. Л.Г. Гагариной. - М.: ФОРУМ: ИНФРАМ, 2015. - 496 с - ЭБС Периодические издания: Журналы: 1. « Сети и телекоммуникации» 2. «Стандарты качества» 3. «Известия РАН. Теория и системы управления» 4. «Электроника» 5. «Ремонт & сервис» 6. «PC MAGAZINE RE» 7. «Математика» 8. «САПР и Графика» 8. Перечень ресурсов информационно-телекоммуникационной сети "Интернет" (далее - сеть "Интернет"), необходимых для освоения дисциплины (модуля) Программное обеспечение и Интернет-ресурсы: 1. Программное обеспе http://www.iprbookshop.ru/12008 – ЭБС Iprbooks 2. http://www.ru.wikipedia.org - Википедия 3. http://www.ru.wikibooks.org – Объектно-ориентированное программирование. Викиучебник. 9. Методические указания для обучающихся по освоению дисциплины (модуля) 9.1 Методические рекомендации ( материалы) преподавателю Преподавание дисциплины имеет практическую направленность и проводится в тесной взаимосвязи с другими общепрофессиональными и специальными дисциплинами. Дисциплина «Объектно-ориентированное программирование» основана на знаниях, приобретённых в курсах дисциплин «Программирование», «Базы данных» и других, что позволяет ориентировать студентов на разработку полноценных завершённых программных продуктов и проявлять при этом самостоятельность при освоении и использовании как уже известных методов и приёмов программирования так и новых ещё неиспользованных в рамках других дисциплин. В связи с этим основной задачей курса является приобретение практических навыков самостоятельной разработки приложений в объектно-ориентированной среде. Поэтому основное внимание уделяется проведению лабораторных работ и самоподготовке к лабораторным занятиям. Подготовка к лабораторным работам представляет собой самостоятельное освоение теоретического и практического материала, необходимого для выполнения работы, и самостоятельная разработка приложения, выполнение индивидуальных самостоятельных заданий, указанных в методических материалах по лабораторным работам и в планах самостоятельных работ. Для успешного освоения теоретического и практического материала студентам рекомендуется использовать различные источники информации: Учебную литературу (список приведен в настоящих методических указаниях) Периодическую литературу, например, журнал для пользователей персональных компьютеров «Мир ПК», «Программирование», «Программные продукты и системы» и др. Мате46 риалы периодической печати используются при подготовке докладов и сообщений в рамках самостоятельной работы студентов. Электронные источники информации, в том числе Интернет Исходя из направленности данной дисциплины проводимые занятия имеют важную воспитательную функцию, связанную с формированием самостоятельности и ответственности при решении производственных задач и разработке программных комплексов, что позволяет осуществлять подготовку компетентных специалистов, способных использовать полученные знания для выполнения практических производственных задач. На протяжении изучения всего курса дисциплины следует планомерно воспитывать уважение к своему делу, подчёркивать важность и необходимость труда программиста, приводить примеры ответственности работающих комплексов, подчёркивать их значимость для повышения производительности труда на производстве, для ведения учётных, бухгалтерских, экономических операций, для информационного обеспечения руководящих, исполнительных и социальных органов и т.д. Такая направленность воспитательной деятельности в рамках профессиональной дисциплины будет способствовать повышению заинтересованности студентов, активизации их учебной деятельности и, в целом, повышению качества обучения и подготовки специалистов в соответствии с требованиями государственного стандарта. В курсе изучения дисциплины проводятся лекционные и лабораторные занятия с использованием компьютерной техники и соответствующего программного обеспечения. В целях обеспечения качества обучения в рамках данной дисциплины используются текущий и итоговый формы контроля учебной успеваемости студентов. Проведение лабораторных работ посвящено закреплению практических навыков и теоретических знаний в разработке программных продуктов. 9.2 Методические рекомендации по организации самостоятельной работы студентов Цель проведения самостоятельных работ дисциплины – дать представление об объектно-ориентированном программировании на примере системы Delphi, об основных этапах решения задач в системе Delphi, о принципах и методах объектно-ориентированного программирования, о компонентах Delphi, их свойствах, методах, событиях. Студенты должны уметь: - создавать проект в среде Delphi; - разрабатывать формы; - использовать компоненты, их свойства и методы; - создавать обработчики событий; - создавать собственные процедуры и функции; - использовать различные классы в программах; - работать с типами данных, - осуществлять отладку приложения, - создавать законченное приложение в среде Delphi; Общее описание, назначение и порядок выполнения самостоятельных работ по дисциплине «Объектно-ориентированное программирование» содержится в сборнике «Методические указания по выполнению самостоятельных работ по дисциплине «Объектно-ориентированное программирование». В описании самостоятельной работы определяется цель занятия, указывается конкретное задание, определяется порядок выполнения задания, приводятся контрольные вопросы для защиты отчета по лабораторной работе, указывается специальная техническая литература для подготовки к занятию. Методические указания призваны определить порядок действий студентов на всех стадиях подготовки и выполнения самостоятельной работы, а также порядок защиты и критерии оценки выполнения самостоятельной работы. 47 9.3Рекомендации по использованию информационных технологий Материально-техническое обеспечение дисциплины «Объектно-ориентированное программирование»: - Операционная система MS Windows 7, Delphi XE3, MS Office - Мультимедийное оборудование, компьютерный класс. 10. Перечень информационных технологий, используемых при осуществлении образовательного процесса по дисциплине (модулю), включая перечень программного обеспечения и информационных справочных систем (при необходимости) В процессе лекционных и семинарских занятий используется следующее программное обеспечение: - программы, обеспечивающие доступ в сеть Интернет (например, «Googlechrome»); - программы, демонстрации видео материалов (например, проигрыватель « WindowsMediaPlayer»); - программы для демонстрации и создания презентаций (например, «MicrosoftPowerPoint»). Для решения практических задач используется статистический пакет программ STATISTICA 6.0 RUS и табличный редактор MSExcel 2000. 11. Описание материально-технической базы, необходимой для осуществления образовательного процесса по дисциплине (модулю) Лекционные занятия проводятся в аудитории, имеющей материальнотехническое обеспечение: - компьютер модели Intel Celeron-S; - монитор модели Samsung 793 DF; - экран настенный стационарный; - проектор модели Viewsonic PJ510; - источник бесперебойного питания.; - сервер модели Intel Xeon ; - сервер модели 2x DualCore AMD Opteron 2218. 48