Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Amelina_ MU 080800.62

.pdf
Скачиваний:
8
Добавлен:
28.03.2015
Размер:
325.88 Кб
Скачать

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ «ОРЛОВСКИЙ ГОСУДАРСТВЕННЫЙ

ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ» УЧЕБНО-НАУЧНО-ИССЛЕДОВАТЕЛЬСКИЙ ИНСТИТУТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ

Кафедра «Информационные системы»

О.В. Амелина

ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ. ИНФОРМАЦИОННЫЕ СИСТЕМЫ:

ПОДСИСТЕМА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ

Методические указания по выполнению лабораторных работ

Дисциплина – «Объектно-ориентированное программирование» Специальности: 080801 «Прикладная информатика

(в экономике)» 230105 «Программное обеспечение

вычислительной техники и автоматизированных систем» 230201 «Информационные системы в технологии»

Направления: 080800.62 «Прикладная информатика» 230100.62 «Информатика и вычислительная техника»

Печатается по решению редакционноиздательского совета ОрелГТУ

Орел 2010

2

Автор: канд. эконом. наук, доц. каф. ИС

О.В. Амелина

Рецензент: канд. техн. наук, доц. каф. ИС

А.П. Гордиенко

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

Предназначены студентам очной формы обучения, обучающимся по направлению подготовки бакалавров 080800.62 «Прикладная информатика», 230100.62 «Информатика и вычислительная техника» и специальностям 080801 «Прикладная информатика (в экономике)», 230105 «Программное обеспечение вычислительной техники и автоматизированных систем», 230201 «Информационные системы в технологии», изучающим дисциплину «Объектно-ориентированное программирование».

Редактор Т.П. Костенко Технический редактор С.В. Еременко

ГОУ ВПО «Орловский государственный технический университет» Лицензия ИД №00670 от 05.01.2000 г.

Подписано к печати 01.07.2010 г. Формат 60x84 1/16. Усл. печ. л. 0,8. Тираж 21 экз.

Заказ №________

Отпечатано с готового оригинал-макета на полиграфической базе ОрелГТУ, 302030, г. Орел, ул. Московская, 65.

© ОрелГТУ, 2010

2

3

 

СОДЕРЖАНИЕ

 

1

ЦЕЛЬ ПРОВЕДЕНИЯ ЛАБОРАТОРНЫХ РАБОТ.................

4

2

ПОДГОТОВКА К ВЫПОЛНЕНИЮ ЛАБОРАТОРНЫХ

 

РАБОТ ....................................................................................................

4

3

НОВЫЕ КОНЦЕПЦИИ ООП В OBJECT PASCAL.................

5

4

ЗАДАНИЯ К ЛАБОРАТОРНЫМ РАБОТАМ...........................

7

5

КОНТРОЛЬНЫЕ ВОПРОСЫ....................................................

11

6

СОДЕРЖАНИЕ ОТЧЕТА ...........................................................

12

7

СПИСОК ЛИТЕРАТУРЫ ...........................................................

13

3

4

1 ЦЕЛЬ ПРОВЕДЕНИЯ ЛАБОРАТОРНЫХ РАБОТ

Целью проведения лабораторных работ является овладение практическими навыками использования технологии ООП при разработке программного обеспечения.

Основными задачами изучения студентами дисциплины являются:

-освоение основных понятий и моделей ООП;

-изучение особенностей реализации принципов ООП в различных языках программирования;

-ознакомление с языком Object Pascal, а также с механизмами, приемами, методами реализации его объектно-ориентированной модели.

2 ПОДГОТОВКА К ВЫПОЛНЕНИЮ ЛАБОРАТОРНЫХ РАБОТ

Лабораторные работы рассчитаны на студентов, имеющих опыт работы на языке паскаль или на другом языке программирования высокого уровня. Студент должен уметь работать в любом текстовом редакторе и c проводником. Основной же целью выполнения лабораторной работы является приобретение практических навыков программирования на языке Object Pascal.

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

Готовность студента к работе определяется преподавателем путем проведения собеседования. Основным материалом для собеседования являются контрольные вопросы, приведенные в разделе 5.

Защита лабораторной работы производится после написания студентом программы и оформления отчета.

4

5

3 НОВЫЕ КОНЦЕПЦИИ ООП В OBJECT PASCAL

В языке Object Pascal, используемом в Delphi и Lazarus, произошел ряд изменений, по сравнению с последней версией Borland Pascal. Перечислим основные из них, позволившие назвать объектную модель Object Pascal новой объектной моделью:

изменения в синтаксисе объявления и использования объектов

введение указателей на методы (function … of object)

введение методов классов (class method)

введение ссылок на классы

изменения в организации определений и вызовов методов

введение раздела объявления интерфейса разработчика объектного типа - protected

введение раздела объявления design-time интерфейса (интерфейса времени проектирования) объектного типа - published

введение механизмов RTTI - информации о типах на этапе выполнения программ

введение поддержки процедурных полей

введение понятия "свойства" - property

В отличие от объявления старых объектных типов, использовавшего ключевое слово object, новые объектные типы определяются с помощью слова class.

Термины класс (class) и объект (object) используются достаточно часто, приведем определение этих понятий.

Класс — это определенный пользователем тип данных, который обладает состоянием (представление класса) и набором операций (поведение класса). Класс обладает некоторыми внутренними данными и некоторым набором методов. Методы класса реализуются в форме процедур или функций. Данные и методы класса описывают универсальные характеристики и поведение некоторого набора похожих объектов.

Объект — это экземпляр класса или, иными словами, переменная, принадлежащая типу данных, являющемуся классом. Любой объект — это фактически существующая в памяти запись. В процессе исполнения программы каждый объект требует для хранения своего внутреннего представления некоторый объем памяти.

5

6

Объект относится к классу так же, как переменная относится к типу данных.

В новой объектной модели программист работает только с динамическими экземплярами классов (то есть с теми, для которых выделяется память в heap-области), в отличие от старой модели, где можно было работать как с динамическими, так и со статическими экземплярами. По этой причине изменен синтаксис обращения к полям и методам объектов. Если раньше для работы с динамическими экземплярами объектов (инициализированными с использованием обращения к конструктору в сочетании с функцией New) программист должен был использовать обращение "по адресу" ( ^ ), то теперь такой доступ подразумевается автоматически. В качестве примера сравним два следующих фрагмента исходного текста:

{Старая объектная модель } type

PMyObject = ^TMyObject; TMyObject = object (TObject) MyField : TMyType; constructor Init;

end;

...

var

MyObject : PMyObject; begin

MyObject:=New(PMyObject,Init); MyObject^.MyField:= ...

end;

{Новая объектная модель } type

TMyObject = class (TObject) MyField : TMyType; constructor Create;

end;

...

var

MyObject : TMyObject; begin

MyObject:=TMyObject.Create; MyObject.MyField:= ...

end;

6

7

Как можно заметить, в Object Pascal расширен синтаксис использования ―точечной нотации‖ для доступа к методам объектов. Кроме того, изменено соглашение и об именовании конструкторов и деструкторов. В старой объектной модели вызов New отвечал за распределение памяти, а обращение к конструктору инициализировало выделенную область памяти. В новой модели эти функции выполняет конструктор Create.

4 ЗАДАНИЯ К ЛАБОРАТОРНЫМ РАБОТАМ

Лабораторная работа №1. Тема – Работа с основными эле-

ментами управления Delphi – поля редактирования, кнопки, метки.

Написать программу калькулятор. Форма программы содержит 2 поля редактирования для операндов, 4 кнопки для задания арифметических действий, 1 кнопка «сброс», метку для вывода результата. Виды контроля, которые должна обеспечивать программа:

1.В поля для операндов могут попадать только разрешенные символы – цифры, десятичная точка.

2.Кнопки для арифметических действий недоступны, если хотя бы один из операндов не определен.

3.Если результат положительный – цвет шрифта для результата синий, отрицательный – красный.

Лабораторная работа №2. Тема – создание компонентов динамически, неявный параметр self.

Написать приложение, где на форме есть кнопка «создать форму», которая динамически создает очередную форму. При щелчке на любой из созданных форм создается кнопка именно на этой форме. Обработчик события OnMouseDown (нажатие кнопки мыши) будем использовать вместо события OnClick (щелчок мыши), так как обработчику первого события передаются в качестве параметров координаты точки нажатия кнопки мыши. Нам эта информация нужна, чтобы создать кнопку в данном месте.

Лабораторная работа №3. Тема – инкапсуляция, свойства.

Реализовать полностью завершенный класс TDate (см. лекции). В классе определить свойства Day, Month, Year, два перегру-

7

8

женных конструктора – они инициализируют экземпляр класса либо текущей датой, либо конкретной (вводятся день месяц и год). Также определить в классе перегруженные методы SetDate, которые соответственно будут устанавливать дату либо в формате день, меся, год, либо задавая значения даты в формате TDateTime. В классе должны иметься методы, позволяющие увеличивать или уменьшать значение даты на определенное число дней, узнавать високосный или нет год, а также выводить дату в виде строки. Приложения, показывающее все эти возможности должно активно пользоваться свойствами, определенными в классе.

Лабораторная работа №4. Тема – инкапсуляция, свойства, инкапсуляция изменений.

Написать приложение, содержащее 2 формы. Вторая форма передает сообщения первой форме. Сообщения выводятся в строку состояния формы (Status Bar). Затем изменить пользовательский интерфейс первой формы – сообщения выводить не в строку состояния, а, например, в метку, или в поле редактирования, или в заголовок формы. При этом программный код для второй формы не должен измениться. Для этого в первой форме определить свойство

StatusText.

Лабораторная работа №5. Тема – индексированные свойст-

ва.

Создать класс, представляющий геометрическую фигуру. В качестве предка взять любой из имеющихся в системе (TImage, TShape). Данный класс имеет индексированные свойства – длина, ширина, цвет. Форма приложения должна содержать экземпляр объекта, а также элементы интерфейса, позволяющие менять значения указанных свойств, например, ColorBox для изменения цвета и TrackBar для изменения длины и ширины фигуры. При воздействии с помощью мыши на указанные элементы интерфейса, меняется вид фигуры.

Лабораторная работа №6. Тема – наследование, полимор-

физм, механизмы RTTI.

Реализовать следующую иерархию классов: базовый ркласс TAnimal и два его потомка – TDog и TCat (см. лекции). В этих клас-

8

9

сах определен один и тот же метод, предполагающий позднее связывание (Voice). В потомках также определить метод, отсутствующий в предке (Eat). Виртуальный метод Voice можно применить к универсальной переменной, например, MyAnimal, имеющей тип TAnimal, но во время работы приложения она может ссылаться либо на экземпляр класса TDog, либо на экземпляр класса TCat (на форму поместить переключатель). Метод, который будет реально вызываться по нажатию по кнопке, будет определяться во время выполнения программы и зависит от класса текущего объекта.

Для метода Eat этот подход не работает, так как он не содержится в классе TAnimal. Для того, чтобы по нажатию другой кнопки срабатывал метод Eat, необходимо использовать механизмы RTTI (см. лекцию).

Результаты работы методов Eat и Voice выводить в метки.

Лабораторная работа №7. Тема свойства-массивы.

Создать класс TZoo, содержащий информацию о животных зоопарка. В классе определить свойство-массив Zoo, элементами которого будут являться экземпляры классов-потомков класса TAnimal (для этого создать такую иерархию классов). Реализовать указанное свойство-массив на база объекта класса TList. Приложение должно позволять выполнять следующие действия – добавлять животных в зоопарк, просматривать питомцев зоопарка, удалять их из зоопарка (передавать в другой или отпускать на свободу).

Лабораторная работа №8. Тема – отработка технических приемов, связанных с применением интерфейсов.

Реализовать приложение с классами TJumper, TWalker, TAthlet (см. лекцию), реализующими интерфейсы IWalkerи IJumper.

На форму поместить три кнопки, соответствующие указанным классам. По нажатию каждой кнопки должно происходить следующее:

1)создается экземпляр соответствующего класса;

2)в ListBox записывается строка, говорящая, что он создан;

3)по очереди вызываются методы данного класса, которые являются функциями типа string и их значение записывается в ListBox, а также записываются значения поля Position (каждый метод

9

10

меняет его значение) и описание требуемого перемещения – бежит, прыгает, гуляет.

Лабораторная работа №9. Тема – отработка технических приемов, связанных с применением интерфейсов.

1)В программе определить два интерфейса IAdmin и IUser, а также класс, реализующий оба эти интерфейсы напрямую. Информация о работниках фирмы накапливается в экземпляре этого класса в поле типа TList. Пользователям приложения доступна только информация о списочном составе работников, а администратору доступна информация и о заработной плате работников.

2)В приложении показать работу стека. Для этого определить интерфейс IStack, и реализовать его при помощи двух разных классов – с использованием массива и с использованием класса TList.

Лабораторная работа №10. Тема – обработка исключений.

1)Создать приложение, на форму которого поместить три кнопки. При нажатии на каждой из них выполняются длительные

иошибочные вычисления. При этом курсор принимает форму песочных часов. При попытке деления на ноль программа прервется. При нажатии на первую кнопку курсор не будет восстановлен, а исключение обработает система. В коде метода OnClick второй кнопки необходимо использовать блок try/finally, в коде метода OnClick третьей кнопки продемонстрировать использование вложенных блоков try/finally-try/except.

2)Создать приложение, форма которого будет содержать две группы кнопок, при нажатии которых генерируются исключения, например, деление на ноль, а также исключение созданное самостоятельно, например, переполнение массива. Первая группа кнопок не содержит обработку исключений, предоставляя это системе, а вторая

– обрабатывает их.

3)Создать приложение, демонстрирующее работу с журналом ошибок (см. лекцию). На форме этой программы находится флажок для определения ее поведения (выдавать сообщения об исключениях в журнал, или на экран) и две кнопки, генерирующие исключительные ситуации.

4)

10

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]