Министерство образования Российской Федерации

Российский государственный профессионально-педагогический университет

Кафедра сетевых информационных систем

3052

МЕТОДИЧЕСКИЕ УКАЗАНИЯ К ВЫПОЛНЕНИЮ КОНТРОЛЬНЫХ РАБОТ ПО ДИСЦИПЛИНЕ

«оБЪЕКТНО-ОРИЕНТИРОВАННЫЕ ТЕХНОЛОГИИ»

(ГОС-2000)

для студентов всех форм обучения специальности

030500.06 - Профессиональное обучение

специализации
030501.06 – Компьютерные технологии

Екатеринбург 2003

Методические указания к выполнению контрольных работ по дисциплине «Объектно-ориентированные технологии» (Гос-2000). Екатеринбург, 2003. 23 с.



 Ширева,

Одобрены на заседании кафедры сетевых информационных систем. Протокол от 01.01.2001 г., № 7.

Заведующий кафедрой

_____________________

Рекомендованы к печати методической комиссией факультета информатики. Протокол от 01.01.2001 г., № 7.

Председатель методической комиссии ФИ РГППУ

_____________________

Ó «Российский государственный профессионально-педагогический университет», 2003

Оглавление

Методические указания……………………………………………………………4

Теоретическая часть………………………………………………………………..5

Введение……………………………………………………………………….5

Объектная модель……………………………………………………………..5

Абстрагирование………………………………………………………………7

Инкапсуляция…………………………………………………………………11

Модульность………………………………………………………………….13

Иерархия………………………………………………………………………15

Задания для контрольной работы…………………………………………………21

Литература………………………………………………………………………….22

Методические указания

В соответствии с рабочей программой по дисциплине «Объектно-ориентированные технологии», студенты должны знать основные понятия объектной модели, научиться создавать программы на основе концепции объектно-ориентированного программирования. Данная контрольная работа предназначена для решения этих задач.

НЕ нашли? Не то? Что вы ищете?

Контрольная работа выполняется студентами заочной формы обучения. При выполнении контрольной работы студенты должны разработать программный модуль, описывающий объекты, предложенные в задании, на языке Object Pascal.

Номер варианта выбирается по последней цифре зачетной книжки. Преподаватель имеет право определить набор заданий по своему усмотрению.

Контрольная работа оформляется в виде отчета, напечатанного на принтере на стандартных листах формата А4. Отчет по контрольной работе включает: титул, в котором обязательно указывается номер варианта, группа и имя студента, содержание (номер и название контрольного задания), тексты контрольных заданий и ответы на них.

Теоретическая часть

Введение

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

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

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

Объектная модель

Объектно-ориентированная технология основывается на так называемой объектной модели. Основными ее принципами являются: абстрагирование, инкапсуляция, модульность, иерархичность.

Методы структурного проектирования помогают упростить процесс разработки сложных систем за счет использования алгоритмов, как готовых строительных блоков. Аналогично, методы объектно-ориентированного проектирования созданы, чтобы помочь разработчикам применять мощные выразительные средства объектного и объектно-ориентированного программирования, использующего в качестве блоков классы и объекты.

Большинство программистов используют в работе один язык программирования и следуют этому стилю. Они программируют в парадигме, навязанной используемым ими языком.

Объектно-ориентированное программирование – это методология программирования, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного класса, а классы образуют иерархию наследования.

В данном определении можно выделить 3 части:

1.  ООП использует в качестве базовых элементов объекты, а не алгоритмы.

2.  Каждый объект является экземпляром какого-либо определенного класса.

3.  Классы организованны иерархически.

Программа будет объектно-ориентированной только при соблюдении всех указанных требований.

Объектно-ориентированный язык – это язык имеющей средства хорошей поддержки объектно-ориентированного стиля программирования.

Концептуальная база объектно-ориентированного стиля программирования имеет 4 главных элемента:

·  абстрагирование

·  инкапсуляция

·  модульность

·  иерархия

Эти элементы являются главными в том смысле, что без любого из них модель не будет объектно-ориентированной. Рассмотрим подробнее эти элементы.

Абстрагирование

Абстракция выделяет существенные характеристики некоторого объекта, отличающие его от всех других видов объектов, и таким образом, четко определяет его концептуальные границы с точки зрения наблюдателя.

Абстрагирование концентрирует внимание на внешних особенностях объекта и позволяет отделить самые существенные особенности поведения от несущественных.

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

Примеры объектов:

Для программ, управляющих файлами, объектами являются файлы, имеющие имя, объем памяти на конкретном устройстве и содержание.

Для программы, управляющей режимом работы парниковой установки, объектами являются датчики, измеряющие температуру, влажность, освещение, расположенные в определенном месте теплицы.

В программе управления полетами объектом может быть самолет, имеющий высоту, скорость полета, он может взлетать и садится.

Наряду с осязаемыми видимыми объектами существуют объекты, для которых определены явные концептуальные границы, но сами объекты представляют собой неосязаемые события или процессы. Например, химический процесс, температура.

Объекты и классы

Объект обладает состоянием, поведением и идентичностью. Структура и поведение схожих объектов определяет общий для них класс; термины «экземпляр класса» и «объект» взаимозаменяемы.

Состояние объекта характеризуется перечнем (обычно статическим) всех свойств данного объекта и текущим (обычно динамическим) значением каждого их этих свойств.

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

Все свойства имеют некоторые значения. Эти значения могут быть простыми количественными характеристиками, а могут ссылаться на другой объект.

Размер файла определяется числовой характеристикой (100 байт). Состояние температурного датчика в теплице характеризуется температурой, которая тоже может быть самостоятельным объектом: повышаться, понижаться и т. д.

Различие между объектами и простыми величинами заключается в том, что простые количественные характеристики (например 100 байт) являются постоянными, неизменными и непреходящими, тогда как объекты существует во времени, изменяются, имеют внутреннее состояние, преходящи и могут создаваться, уничтожаться и разделяться.

Программирование классов и объектов

В языке Object Pascal класс описывается как новый тип данных в разделе описания Type. Приведем пример описания простого класса:

Type

person = class

name: string[15];

address: string[30];

vozrast: integer

end;

В приведенном примере person – это имя класса. Каждый компонент в приведенной структуре обозначает конкретное свойство данной абстракции. В описании класса эти данные называются полями, то есть name, address, vozrast – это имена полей.

Описание определяет не объект, а класс, поскольку оно не вводит какой-либо конкретный экземпляр.

Для того, чтобы создать объекты данного класса, необходимо написать следующее:

var

secretar, dekan: person

Объекты не существуют изолированно, а подвергаются воздействию или сами воздействуют на другие объекты.

Поведение – это то, как объект действует и реагирует; поведение выражается в терминах состояния объекта и передачи сообщения.

Иными словами, поведение объекта – это наблюдаемая и проверяемая из вне деятельность объекта. Объектно-ориентированный стиль программирования связан с воздействием на объекты.

Операцией называется определенное воздействие одного объекта на другой с целью вызвать соответствующую реакцию.

Наиболее распространены 3 вида операции:

·  Модификатор – операция изменяющая состояние объекта

·  Селектор – операция, считывающая состояние объекта, но не меняющая состояния

·  Итератор – операция, позволяющая организовать доступ ко всем частям объекта в строго определенной последовательности.

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

·  Конструктор – операция создания объекта и/или его инициализации

·  Деструктор – операция, освобождающая состояние объекта и/или разрушающая сам объект.

В объектно-ориентированных языках операции, выполняемые над данным объектом, называются методами и входят в определение класса объекта.

Методы класса – это процедуры и функции, объявление которых включено в описание класса.

В описанный ранее класс можно включить метод print, который будет выводить на печать все данные об объекте. Кроме этого необходимо включить в описание класса метод конструктор.

Метод конструктор выделяет память для данного объекта. В отличие от обычных методов он описывается служебным словом constructor и ему обычно присваивают имя create:

constructor create

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

Созданный экземпляр уничтожается методом деструктор, который описывается служебным словом destructor и имеет типичное название destroy.

Destructor destroy

Описанный ранее класс person с добавление методов будет иметь вид:

Type

person = class

name: string[15];

address: string[30];

vozrast: integer

procedure print;

constructor create;

end;

После описания объекта для его создания необходимо выполнить следующие действия.

secret:=person. create;

dekan:=person. create;

После объявления и инициализации объект можно использовать. Для доступа к полям или методам объекта необходимо указать имя объекта и имя поля или метода, отделенных друг от друга точкой.

secret. address=”Луговая 9-12”

или

dekan. print;

Инкапсуляция

Как правило, объект – это сложная конструкция, свойства и поведение составных частей которой находится во взаимодействии.

Например, при моделировании взлетающего самолета, после набора им определенной скорости и отрыва от земли принципы управления им полностью изменяются. Поэтому в объекте «самолет» явно недостаточно просто увеличить значение поля «скорость» на несколько км/ч – такое изменение должно автоматически повлечь за собой целый ряд других.

Классическое правило объектно-ориентированного программирования утверждает, что для обеспечения надежности нежелателен прямой доступ к полям объекта: чтение и обновление их содержимого должно производится посредством вызова соответствующих методов. Это правило называется инкапсуляцией.

Чаще всего инкапсуляция выполняется посредством сокрытия информации, то есть маскировкой всех внутренних деталей, не влияющих на внешнее поведение.

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

В Object Pascal ограничение доступа к полям объекта реализуется при помощи свойств объекта. Обычно свойства характеризуются 3 элементами:

Полем, хранящим значение свойства, и двумя методами: методом записи свойства (write), и методом получения значения свойства - метод чтения свойства (read)).

В описании класса перед именем свойства записывают слово Property. После имени указывается его тип, затем имена методов, обеспечивающих доступ к значению свойства. После слова Read указывается имя метода, обеспечивающего чтение свойства, после слова Write – чтение. Ниже приведен пример описания класса person, содержащий два свойства: Name и Address.

Type

TName=string[15]

TAddress=string[30]

person=class

FName: TName;

FAddress: TAddress;

Construction Create (Name: TName);

Function GetName: TName;

Property Name: TName read GetName;

Function GetAddress: TAddress;

Procedure SetAddress (NewAddress: TAddress);

Property Address: TAddress

read GetAddress

write SetAddress;

end;

В программе для установки значения свойства совсем не обязательно записывать инструкцию применения метода к объекту, можно записать обычную процедуру присваивания

Т. е. вместо

secret. SetAddress('Луговая 9-12')

Следует писать

secret. address:=’Луговая 9-12’

Очевидно, что внешне использование свойства в программе ничем не отличается от использования полей объекта.

Однако в программе на методы свойства можно возложить некоторые дополнительные задачи. Например, метод может проверить корректность заданных свойству значений, установить значения других логически связанных со свойством полей, вызвать вспомогательную процедуру.

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

Установить значение свойства, защищенного от записи, можно во время инициализации объекта.

Constructor person. create(Name: TName);

begin

FName:=Name

Address:=’’;

end;

function person. GetName; (метод получения значений св-ва Name)

begin

result:=FName;

end;

function person. GetAddress;

begin

result:=FAddress;

end;

procedure person. SetAddress(NewAddress: TAddress);

begin

if FAddress=’’

then FAddress:=NewAddress;

end;

Модульность

Модульность – это разделение программы на фрагменты, которые компилируются по отдельности, но могут устанавливать связи с другими модулями.

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

Модули выполняют роль физических контейнеров, в которые помещаются определения классов и объектов при логическом проектировании системы.

Для небольших задач допустимо описание всех классов и объектов в одном модуле. Однако для большинства программ лучшим решением будет сгруппировать в отдельный модуль логически связанные классы и объекты, оставив открытыми те элементы, которые совершенно необходимо видеть другим модулям.

Модульность – это свойство системы, которая была разложена на внутренние связные, но слабо связанные между собой модули.

Структура модуля в Object Pascal

В Object Pascal модуль – это самостоятельная языковая конструкция. В этом языке интерфейс модуля отделен от его реализации. Т. е. модульность и инкапсуляция ходят рука об руку.

Структура модуля имеет следующий вид:

Unit <имя библиотечного модуля>;

Interface {интерфейсная секция}

<заголовок процедуры с указанием параметров>;

<заголовок функции с указанием параметров>;

Implementation {секция реализации}

<заголовок и тело процедуры с указанием параметров>;

<заголовок и тело функции с указанием параметров>;

Раздел Unit содержит имя библиотечного модуля.

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

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

Области видимости

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

С другой стороны, если слишком ограничить набор инструментальных средств и свободу маневра, данный класс не будет использоваться для дальнейшей работы.

В модели объектов языка Object Pascal существует механизм доступа к составным частям объекта, определяющий области, где ими можно пользоваться (области видимости). Это можно делать с помощью директив Private, Protected и Public.

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

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

Поля, свойства и методы секции protected также доступны только внутри модуля с описываемым классом. Но – и это самое главное – они доступны в классах, являющихся потомками данного класса, в том числе и в других модулях.

Иерархия

Абстракция – вещь полезная не всегда, кроме самых простых ситуаций, число абстракций в системе намного превышает наши умственные возможности. Инкапсуляция позволяет в какой-то степени устранить это препятствие, убрав из поля зрения внутреннее содержание абстракций. Модульность также упрощает задачу, объединяя логически связанные абстракции в группы. Но это оказывается недостаточно.

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

Иерархия – это упорядочение абстракций, расположение их по уровням.

Основными видами иерархических структур, применительно к сложным системам, являются структуры классов (иерархия «is a») и структура объектов (иерархия «part of»).

Структура объектов «part of» означает «состоит из». Примером такой иерархии может служить автомобиль, который состоит из колес, двигателя, руля и т. д. Этот вид иерархии описывает отношение агрегации.

Важным элементом объектно-ориентированных систем и основным видом иерархии «is a» является наследование.

Наследование означает такое отношение между классами (отношение родитель/потомок), когда один класс заимствует структурную или функциональную часть одного или нескольких других классов (соответственно, одиночное и множественное наследование).

Иными словами, наследование создает такую иерархию абстракций, в которой подклассы наследуют строение от одного или нескольких суперклассов. Часто подкласс достраивает или переписывает компоненты вышестоящего класса.

Схематически, наследование описывает отношение типа «is a». Например, медведь есть млекопитающее, дом есть недвижимость, ТУ-104 есть самолет.

Object Pascal поддерживает только одиночное наследование, когда подкласс создан только из одного суперкласса, потомок порожден только одним родительским классом.

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

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

В объявлении класса-потомка указывается класс родителя.

Новый класс employee (сотрудник) может быть порожден от рассмотренного выше класса person, путем добавления свойства facult – факультет. Объявление этого класса в этом случае может выглядеть так:

NFacult=string[9]

employee=class (person)

Ffacult: NFacult

Construction create(Name: TName; facult: TFacult)

procedure print;

end;

Поведение методов при наследовании

Унаследованные от класса-предка поля и методы доступны в дочернем класса, если имеет место совпадение имен методов, то говорят, что они перекрываются.

Поведение методов при наследования является краеугольным камнем объектно-ориентированного программирования. По тому, какие действия происходят при вызове, методы делятся на 3 группы:

1.  Статические методы

2.  Виртуальные или динамические методы

3.  Перегружаемые методы.

Мы рассмотрим 1 и 2 группы.

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

Код нового статического метода полностью перекрывает (заменяет собой) код старого метода.

Procedure person. print;

begin

writeln(‘Name’, FName, ‘Address’, FAddress);

end;

Procedure employee. print;

begin

writeln(‘Name’, FName, ‘Address’, FAddress, ‘Facult’, FFacult)

end;

Здесь приведены разные методы с одинаковыми именами. Перекрытый метод не доступен в потомке обычным образом. Нельзя просто в методе print потомка вызвать метод print предка. Это можно сделать с помощью зарезервированного слова inherited.

Например:

Constructor employee. create (Name: TName; Facult: TFacult);

begin

inherited create(Name);

Ffacult:=Facult;

end;

После создания объекта производного класса в программе можно использовать поля и методы родительского класса.

Например:

Var

VSpom: employee;

VSpom:=employee. create(‘Иванов’,’МСФ’);

VSpom. address:=’Мира 4-5’;

VSpom. print;

По умолчанию методы объектов являются статическими – их адрес определяется еще не стадии компиляции проекта, поэтому они вызываются быстрее всего.

Полиморфизм. Виртуальные методы.

Принципиально отличаются от статических виртуальные и динамические методы. Они должны быть объявлены путем добавления соответствующей директивы virtual или dynamic.

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

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

Например:

person=class

FName: TName

Constructor create(Name: TName)

procedure print; virtual;

end;

stud=class(person)

Fgr: string[5]

Constructor create (Name: TName; gr: string[5]);

procedure print; override;

end;

prep=class(person)

Fkaf: string[10]

Constructor create (Name: TName; kaf: string[10]);

procedure print; override;

end;

В каждом из этих классов определен метод print. В базовом классе при помощи директивы Virtual метод print объявлен виртуальным. Объявление метода виртуальным дает возможность дочернему классу заместить виртуальный метод своим собственным. В каждом дочернем классе определен свой метод print, который замещает соответствующий метод родительского класса (метод порожденного класса, который замещает виртуальный метод родительского класса, помечается директивой override). Приведем определение метода print для каждого класса.

procedure person. print;

begin

writeln(‘Name’, FName); {хотя он может быть и пустым}

end;

procedure stud. print;

begin

writeln(FName+’группа’+fgr);

end;

procedure prep. print

begin

writeln(FName+’’+fkaf);

end;

Как можно использовать этот полиморфизм? Например в программе список всех людей можно представить массивом объектов класса person:

list: array[1..N] of person;

Но элементами такого массива могут быть как объекты класса stud, так и объекты класса prep. Почему это возможно? На самом деле объект – это указатель Object Pascal позволяет указателю на родительский класс присвоить значение указателя не дочерний класс. Т. е. объекту как указателю на экземпляр объектного типа может быть присвоен адрес любого экземпляра любого из дочерних классов.

Вывод списка можно осуществить применением метода print к элементам массива:

For i:= 1 to N do

List[1].print

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

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

Здесь были рассмотрены основные преимущества объектно-ориентированного подхода и его реализация в объектно-ориентированном программировании. Эти черты позволили ему стать основным способом разработки серьезного программного обеспечения.

Полный вид программного модуля приведен в приложении данного пособия.

ЗАДАНИЯ ДЛЯ КОНТРОЛЬНОЙ РАБОТЫ

Задание № 1

Разработать модуль для описания системы Библиотека. Описать следующие классы: Книга, Учебник, Художественная книга, Читатель.

Задание № 2

Разработать модуль для описания системы Гостиница. Описать следующие классы: Номер, Одноместный номер, Двухместный номер, Трехместный номер, Постоялец.

Задание № 3

Разработать модуль для описания системы Фильмотека. Описать следующие объекты: Фильм, Видеокассета фильма, Компакт-диск фильма, Клиент.

Задание № 4

Разработать модуль для описания системы Страховая компания. Описать следующие объекты: Предмет страховки, Автомобиль, Дом, Антиквариат, Клиент.

Задание № 5

Разработать модуль для описания системы Турагентство. Описать следующие объекты: Путевка, Путевка по России, Зарубежная путевка, Клиент.

Задание № 6

Разработать модуль для описания системы Склад. Описать следующие объекты: Товар, Продуктовые товары, Промышленные товары, Накладная.

Задание № 7

Разработать модуль для описания системы Поликлиника. Описать следующие объекты: Пациент, Пациент ребенок, Пациент взрослый, Врач.

Задание № 8

Разработать модуль для описания системы ГИБДД. Описать следующие объекты: Автомобиль, Личный автомобиль, Автомобиль фирмы, Владелец автомобиля.

Задание № 9

Разработать модуль для описания системы Ателье мод. Описать следующие объекты: Заказ, Легкая одежда, Верхняя одежда, Закройщик.

.

Учебно-методическое обеспечение дисциплины

Основная литература:

1.  Гриди Буч. Объективно-ориентированный анализ и проектирование. СПб., 1999.

2.  Гайсарян -ориентированные технологии проектирования приклсадных программных систем. www/citforum. ru

3.  , Delphi 4- СПб.: БХВ - Санкт-Петербург, 1999.-816 с., ил.

Дополнительная литература:

1.  Delphi 5. Справочное пособие - М.: БИНОМ», 2001 г.- 768 с.: ил.

МЕТОДИЧЕСКИЕ указания для выполнения

КОНТРОЛЬНЫХ РАБОТ ПО ДИСЦИПЛИНЕ

«Объектно-ориентированные технологии»

Подписано в печать 20.03.2003. Формат 60х84/16. Бумага для множительных аппаратов. Печать плоская. Усл. печ.1,33. Уч.-изд. л. 1,43.Тираж 400  экз. Заказ № 000.

ГОУ ВПО «Российский государственный профессионально-педагогический университет», Екатеринбург, .

Ризограф ГОУ ВПО РГППУ. Екатеринбург, .