Смекни!
smekni.com

Методические указания к курсовой работе по дисциплине «Объектно-ориентированное программирование» по направлению 230200 Информационные системы (стр. 1 из 12)

Министерство общего и профессионального образования

Российской Федерации

Казанский государственный технический университет

имени. А.Н. Туполева

----------------------------------------------------------------------------------

Кафедра АСОИУ

В.И. Медведев

Методические указания к курсовой работе

по дисциплине

«Объектно-ориентированное программирование»

по направлению 230200 – Информационные системы

факультет ТКиИ

курс 2, сем. 3

Казань 2008

Медведев В.И.

M 42 Методические указания к курсовой работе по дисциплине

«Объектно-ориентированное программирование» – Казань:

Казан. гос. гехн. ун-т, 2009. –107 c.: ил

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

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

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

Используется среда Visual Studio .NET с применением библиотеки классов .NET Framework и пакетов Java.

Для студентов вузов по направлению 230200 – информационные системы.

УДК 681.3.06

ББК 32.973.26 - 018

© Медведев В. И., 2009

ВВЕДЕНИЕ К КУРСОВОЙ РАБОТЕ

Основные термины, используемые в дисциплине

“Объектно-ориентированное программирование”

Напомним об основных понятиях объектно-ориентированного программирования.

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

Тип class (класс) описывает множество однотипных объектов с одними и теми же данными и функциями, то есть обладающих общим состоянием и поведением. Посредством class программист описывает совместно данные и действия (функции) над этими данными. Из класса с помощью оператора new создаются объекты (переменные типа class). При этом данные, принадлежащие объекту некоторого класса, обусловливают состояние (state) этого объекта, а набор функций – его поведение (behavior).

Используя метки private, public и protected можно по-разному инкапсулировать (скрывать) данные и функции в классе, запрещая или разрешая доступ к ним извне объекта.

Метка private (закрытый) объявляет данные и функции, описанные с нею, закрытыми. Эти данные и функции могут использоваться только функциями данного класса.

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

Метка protected (защищённый) объявляет данные и функции класса, описанные с нею, защищенными. Эти данные не доступны вне объекта и передаются при наследовании из класса в порождённый класс.

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

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

Порождение (наследование- inheritance) классов – это средство получения новых классов на базе существующих. При этом новый класс наследует данные и функции из одного базового (base) класса и, возможно из нескольких интерфейсов. В C# и Java запрещено множественное наследование классов. Наследуемые интерфейсы обязывают порождённый класс реализовать все функции, свойства и события, объявленные в этих интерфейсах

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

сlass имя-порожд-класса : [{базовый класс [,имя-интерф] . . .]}

|{ имя-интерф [,имя-интерф] . . .}]

{

объявление данных и описание функций, свойств и событий

};

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

class имя-порожд-класса

[{extends базовый класс [, implements имя-интерф] . . .]}

|{ implements имя-интерф [,имя-интерф] . . .}]

{

объявление данных и функций

}

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

Для включения свойства в класс в классе объявляется закрытая переменная свойства или ссылка, связанная со свойством. Затем описывается свойство:

тип имя-свойства

{

set

{

код реализации set, использующий параметр value и переменную

или ссылку свойства

}

get

{

код реализации get, возвращающий значение переменной или

ссылки свойства

}

}

В языке Java свойство описывается посредством функций, имя которых начинается с set или get с последующим именем свойства. Функция set устанавливает значение переменной свойства, а функция get получает (возвращает) значениие соответствующей переменной свойства.

Делегат (delegate) языка C# – это объект, предназначенный для хранения указателя функции, подлежащей выполнению. Являясь необычным объектом, делегат может объединять в себе с помощью операторов “+” и “-“ несколько других делегатов, превратившись при этом в так называемый множественный делегат. Таким образом, делегат способен инкапсулировать указатели многих функций. Выполнение делегата приводит к выполнению всех инкапсулированных в нём функций. Объект делегата можно передать в качестве аргумента в какую-либо функцию и выполнить в её теле. Также объект делегата можно передать и в качестве аргумента события.

Делегат описывается так:

delegate тип-возвр-значения тип-делегата (список-парам);

А объект делегата создаётся следующим образом:

тип-делегата ссылка-на-делегат = new тип-делегата

(ссылка-на-объект.имя-обычной-функции);

тип-делегата ссылка-на-делегат = new тип-делегата

(имя-класса.имя-статической-функции);

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

ссылка-на-делегат (список-аргументов);

Выполнение делегата приведёт к выполнению инкапсулированной (-ных) в нём функции (-й) с указанными аргументами.

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

Событие (event) в языке C# – специальный делегат, который привязан к объекту. Чрезвычайно важно знать, что в отличие от делегата, событие нельзя выполнять вне объекта ! Важно также отметить, что как событие связано с определённым объектом, также и обработчики других объектов связаны с этим конкретным событием и соответственно – с его объектом. То есть имеет место жесткая фиксация связи между событием и теми обработчиками, которые должны выполниться при возникновении этого события. Выполнение события вызывает выполнение связанных с ним обработчиков.