.RU

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




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

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

Казанский государственный технический университет
имени. А.Н. Туполева

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

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


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


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


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


по направлению 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# – специальный делегат, который привязан к объекту. Чрезвычайно важно знать, что в отличие от делегата, событие нельзя выполнять вне объекта ! Важно также отметить, что как событие связано с определённым объектом, также и обработчики других объектов связаны с этим конкретным событием и соответственно – с его объектом. То есть имеет место жесткая фиксация связи между событием и теми обработчиками, которые должны выполниться при возникновении этого события. Выполнение события вызывает выполнение связанных с ним обработчиков.

Создание и применение события требует выполнения следующих шагов:

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

- объявить в классе-источнике события, используя ключевое слово event, ссылку на событие:

event тип-делегата-события ссылка-на-событие;


- объявить в классе-источнике события функцию, генерирующую это событие, то есть выполняющую объект события, или выполнить это событие в требуемых местах иных функций класса-источника;

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


if ( ссылка-на-событие != null )

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


- объявить в классах-приёмниках события функции-обработчики этого события;

- создать объект-источник события и объекты-приёмники события;

- связать функции-обработчики каждого приёмника события с событием объекта-источника (подписаться на событие):


ссылка-на-объект-источник,ссылка-на-событие += new

тип-делегата-события(

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


ссылка-на-объект-источник,ссылка-на-событие += new

тип-делегата-события(

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


- выполнить надлежащим образом событие в объекте-источнике.

Придерживаясь рекомендации фирмы Microsoft желательно с каждым событием связать объект данных события, создав его из класса, наследуемого класс EventArgs. В делегате события в качестве первого параметра рекомендуется использовать ссылку типа object на объект-источник события, а в качестве второго – ссылку на объект данных события. Функция-обработчик, воспользовавшись аналогичными параметрами, выявит источник события и воспользуется всеми данными, включёнными в объект события.

Библиотека .NET Framework, содержащая более 4000 классов, имеет многие из них с предопределёнными событиями, например, события MouseDown, MouseUp, Click генерируются при нажатии на клавишу мыши. Предопределенным событиям соответствуют предопределённые делегаты событий, например, для мыши - MouseEventHandler.

Событие (event) в языке Java можно представить явным делегированием обработчика из объекта-приемника в объект-источник. При этом удобно воспользоваться интерфейсом, поскольку использование интерфейсной ссылки позволяет ссылаться к разнотипным объектам (приемникам), классы которых наследуют один и тот же интерфейс, связанный с этим событием. Класс источника должен иметь конструктор с параметром - интерфейсной ссылкой. Класс каждого приёмника этого события обязан наследовать этот интерфейс, включающий делегированный обработчик события. Генерирование события источником сводится к вызову в объекте-источнике обработчика приёмника, ссылка на который передаётся в источник через интерфейсную ссылку в конструкторе.

Широко применяются в языке Java особые события – уведомления. Класс Observable и интерфейс Observer пакета java.util позволяют воспользоваться механизмом уведомления языка Java. Наблюдаемые объекты, являющиеся объектами-источниками, классы которых наследуют класс Observable, уведомляют обозревателей, являющимися объектами-приёмниками, классы которых наследуют интерфейс Observer. Класс наблюдателя Observable переопределяет функции setChanged(), сигнализирующую об изменении состояния наблюдателя, и функцию notifyObservers(), уведомляющую обозреватель и передающую ему объект с данными. Интерфейс Observer обязывает обозреватель переопределить функцию update(), реагирующую на уведомление и получающую объект данных.

Под потоком (thread) понимают выполняющийся программный код. Выполнение процесса начинается с выполнения основного потока (primary thread), представленного главной функцией main или WinMain, или DllMain. Обычно основной поток реализует диалог с пользователем. Основной поток инициирует, выполняет и завершает работу процесса. Если основной поток создаёт окно, то его называют основным оконным потоком. Обычно с окном связан цикл обработки сообщений операционной системы.


Основной поток может создать и запустить так называемые рабочие потоки (work threads), которые будут выполняться параллельно с основным и другими потоками. Если выполнение основного потока сводится к выполнению главной функции приложения, то выполнение каждого рабочего потока связано с выполнением так называемой потоковой функции. В языке Java применяется потоковая функция с именем run. В языке же C# в качестве потоковой функции можно использовать функции с любыми именами, но каждая из них инкапсулируется в поток посредсвом специального потокового делегата ThreadStart.

Итак, в языке C# класс Thread используется для создания и управления потоками, а тип ThreadStart - для создания делегата потока, инкапсулирующего потоковую функцию. При создании экземпляра потока конструктору класса Thread передаётся в качестве аргумента объект делегата потока, при этом возможны два варианта перегруженного конструктора делегата: 1) указывается статическая потоковая функция некоторого класса или 2) потоковая функция конкретного объекта определённого класса. Функции Start, Suspend, Resume и Abort класса Thread обеспечивают запуск, приостановку и возобновление функционирования или уничтожение потокового объекта. Следует сказать, что необходима осторожность при применении функций Suspend и Resume , поскольку они способствуют дедлоку – тупиковой ситуации, вызывающей взаимную остановку выполнения потоков из-за не освобождения некоторого разделяемого ресурса. В этом случае выполняющаяся программа “зависает”.

^ В языке же Java для создания и управления потоками используется класс Thread и интерфейс Runnable. Интерфейс Runnable позволяет передавать функцию run() в конструктор Thread при создании потоковых объектов

Windows-приложение (a Windows application) – программа, выполняющаяся под управлением операционной системы Windows.


Приложение (an application) – программа для выполнения определенного вида работ, например: редактирования текста, выдачи текущего времени и так далее. Каждое приложение является процессом и обычно представлено на экране своим прикладным окном.


Прикладное или главное окно (an application или main window) – прямоугольная область на экране, выделяемая одному приложению для ввода и вывода данных и управления приложением. Операционная система Windows допускает параллельное одновременное выполнение нескольких приложений с возможной синхронизацией их работы, при этом каждое из них может быть представлено своим прикладным окном. Обычно наприкладном окне размещаются интерфейсные элементы.


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


Графический интерфейс (graphic interface) использует для рисования такие объекты как цвет (color), перья (pens), кисти (brushes), изображения (images) и шрифты (fonts).


Прежде чем рисовать фигуру или линию, надо создать графический объект класса Graphics. Графический объект связан с конкретным окном (формой) и его функции выполняют рисование в этом окне (форме), включая при необходимости в качестве аргументов перья, кисти, шрифты и т.д. Таким образом, вспомогательные объекты типа Color, Pen, SolidBrush, Image и Font обеспечивают функционирование объектов класса Graphics, занимающих центральное место в создании графического интерфейса. Объекты вспомогательных типов хранят необходимую для рисования информацию, а графический объект её использует.


Наиболее часто употребляемый тип Point (точка), используется для создания объекта – одиночной точки, обычно в области клиента окна.


Также часто употребляется тип Rectangle (прямоугольник), используемый для создания объекта-прямоугольника с горизонтальными и вертикальными сторонами.


Объект типа Color (цвет) представляет цвет.


Класс Pen (перо) используется для создания объектов-перьев (pens),


Класс SolidBrush (сплошная кисть), порождённый из базового класса Brush, используется для создания объектов-кистей, применяемых при закрашивании фона окон или внутри фигур.


Объектами класса Font представляются шрифты с указанными названиями, размерами и стилями.


Объект класса Graphics является контекстом рисования, связанным с конкретным контекстом устройства и чаще всего с окном (формой). Класс Graphics предоставляет множество функций для рисования в этом окне строк (strings), прямоугольников (rectangles), эллипсов (ellipses) и т.д.


При всяком разрушении окна Windows посылает приложению событие Paint (нарисовать) и приложение реагирует на нем предопределённой функцией-обработчиком OnPaint, пустой по умолчанию, то есть ничего не отображающей в окно. Обладая переопределённой (override) функцией OnPaint, приложение будет рисовать в области клиента окна что-то в соответствии с её реализацией.


Управляющие элементы составляют основу при формировании пользовательского интерфейса приложения. Элементы управления, такие как нажимаемые или селективные кнопки, панели списков, панели редактирования и другие, широко используются разработчиками Windows–приложений. Они значительно облегчают интерфейс между пользователем и Windows -приложением.

Из множества классов управляющих элементов наиболее часто применяются два класса: ^ Button и TextBox.

Из класса Button(кнопка) создаётся так называемая нажимаемая кнопка.

Из класса TextBox (текстовый редактор) языка C# и класса TextField языка Java создаётся панель редактирования, которая представляет собой простейший редактор с возможностью ввода и редактирования текста.


^ Объекты, классы и язык UML

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

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

Для графического представления объектно-ориентированных систем в настоящее время используется язык ^ UML.

Унифицированный язык моделирования UML (Unified Modeling Language) предназначен для описания объектно-ориентированных систем в виде совокупности диаграмм, раскрывая статическую и динамическую суть системы как модели, состоящей из взаимодействующих объектов.

Перед применением языка UML необходимо проанализировать проектируемую систему, выявить основные сущности и понятия, образовать набор классов, из которых будет создаваться всё множество объектов системы. Затем приступают к разработке диаграмм языка UML: диаграмм вариантов использования, представляющих систему с точки зрения пользователя, диаграмм классов, представляющих классы и их статическую взаимосвязь, диаграмм последовательности, изображающих динамическое функционирование объектов во времени, и др.

На рис. 2.1 изображен класс на языке UML. Класс представляется в виде прямоугольника, разделённого на три части, в которых размещается имя класса, перечень атрибутов и, наконец, перечень функций класса. Перед именами данных и функций ставятся символы “– “ и “+”, указывающие на доступ private и public соответственно.




Рис. 2.1. Класс CBall


Из рис. 2.1 видно, что на языке UML представлен класс, имеющий имя CBall, закрытые данные х и у и открытые функции Set, Move и Show. Важно, что это представление класса не зависит от языков программирования и, в частности, от С++, С++.NET, Java, J# и С#.




Рис. 2.2. Объекты класса CBall

На рис. 2.2 изображены объекты класса CBall на языке UML. В прямоугольнике помещается имя объекта, отделённое от класса этого объекта двоеточием. Если объект безымянный, то ставится двоеточие перед именем класса. Имя объекта и класса подчёркиваются.




Рис. 2.3. Класс MyClass наследует класс BaseClass, содержит объект класса OtherClass и использует класс UsedClass


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

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

О многогранности описания разрабатываемой системы на этом языке можно судить по перечню описывающих её диаграмм языка UML: диаграмма взаимодействия (interaction diagram), диаграмма деятельности (activity diagram), диаграмма использования (use case diagram), диаграмма классов (class diagram), диаграмма компонентов (component diagram), диаграмма кооперации (collaboration diagram), диаграмма объектов (object diagram), диаграмма последовательности (sequence diagram), диаграмма развёртывания (deployment diagram), диаграмма состояний (statechart diagram).

В задачи книги не входит подробное изложение языка UML. Познакомиться с нотацией этого языка можно по книге Рамбо Дж., Якобсона А. и Буча Г. “UML: специальный справочник”.

Диаграммы класса языка UML должны использоваться при описании поэтапной разработки программ.



  1. ^ ЦЕЛИ И ЗАДАЧИ КУРСОВОЙ РАБОТЫ



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

В результате выполнения курсовой работы студенты должны:


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

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

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

  4. уметь применять необходимые классы пакетов Java, создавать из них требуемые объекты и употреблять их в программе.

  5. уметь разрабатывать собственный интерфейс программы, применив необходимые интерфейсные элементы на базе классов библиотеки NET Framework и пакетов Java.

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

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




  1. ^ ТРЕБОВАНИЯ ПО ВЫПОЛНЕНИЮ КУРСОВОЙ РАБОТЫ


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

Необходимо выделить особые объекты – источники событий и определить объекты – приёмники этих событий, разработать необходимые делегаты событий, обеспечить связь источников с их приёмниками.

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

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

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

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

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

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

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

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

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

Разработанная программа должна быть реализована на указанном языке .NET платформы на последней версии Visual Studio .NET.



  1. ^ СТРУКТУРА КУРСОВЙ РАБОТЫ


Текстовая часть курсовой работы оформляется в виде пояснительной записки (ПЗ) в соответствии с требованиями стандарта [13,14].

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

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

Пояснительная записка должна содержать:

Титульный лист;

Лист оглавления;

1 Задание;

2. Уточнение задания

3. Описание разрабатываемой программной системы с точки зрения пользователя.

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

4.1.Объектное представление системы.

4.2.События.

4.3.Потоки.

5. Поэтапная разработка программной системы.

7. Описание проблем, возникших при разработке программной системы.

8. Список используемой литературы.

9. Приложение 1. Диаграмма классов разработанной программы.

10. Приложение 2. Текст программы.


^ 4. СОДЕРЖАНИЕ РАЗДЕЛОВ ПОЯСНИТЕЛЬНОЙ ЗАПИСКИ


Задание. Текст задания должен соответствовать заданию, выданному преподавателем.

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

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

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

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

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

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

^ Поэтапная разработка программной системы. После предварительного анализа и объектно-ориентированного представления разрабатываемой программной системы в предыдущем разделе здесь излагается поэтапная её разработка. Разработка каждого этапа даётся отдельным подразделом. Для каждого этапа приводится его тестирующее приложение.

^ Описание проблем, возникших при разработке программной системы. Описываются ошибки, вызвавшие задержку в разработке программы. Особенно уделяется внимание на проблемах, возникших из-за очередной модификации среды разработки Visual Studio .NET фирмой Microsoft, которая неописана.

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


^ 5. ОФОРМЛЕНИЕ КУРСОВОЙ РАБОТЫ


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

А4( 210*297 мм) или близкого к нему потребительского формата. Текст набирается машинописным способом на одной стороне листа через 1,5 или 2 межстрочных интервалов в формате Times New Roman, размер шрифта 14. Ширина полей: слева 25, справа 10, сверху и снизу 15-20 мм.

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

Рисунки, схемы и другой иллюстративный материал должен иметь подписи.

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

В содержании последовательно перечисляют номера и заголовки всех разделов и подразделов пояснительной записки. Слово «СОДЕРЖАНИЕ» записывают в виде заголовка прописными буквами. При цитировании материалов из литературных источников, патентной и технической документации обязательно должно быть указание на цитируемый источник и авторов. В перечень литературы заносятся только источники, на которые в тексте имеется ссылка.

Приложение помещают в конце пояснительной записки и размещают в нем вспомогательный материал. Каждое приложение должно начинаться с нового листа с указанием в правом верхнем углу листа слова «ПРИЛОЖЕНИЕ» прописными буквами. Приложение может иметь заголовок, который записывается симметрично тексту прописными буквами.



  1. ^ ВОЗМОЖНЫЕ ЗАДАНИЯ НА КУРСОВУЮ РАБОТУ


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

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


  1. Две кольцевые дороги имеют общий участок. По этим дорогам перемещаются n объектов с различными скоростями и в различных направлениях. На общем участке может перемещаться только два объекта. Среди множества свойств каждый объект имеет целочисленное свойство Important. Объекты связаны друг с другом событийно, передавая некоторые данные, при этом объект воспринимает данные только в том случае, если значение его свойства Important ниже значения свойства Important объекта-источника события.




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




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




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




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




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




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




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




  1. Из пункта А в пункт С перемещаются n объектов с различными скоростями и в разных направлениях. Дойдя до пункта В, объекты дожидаются друг друга и затем друг за другом движутся с одинаковой скоростью в одном направлении к пункту А или к пункту В. О прохождении пунктов А, В и С каждый объект сообщает некоторому специальному объекту.




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




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




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



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




  1. В прямоугольнике перемещаются две совокупности по n и m объектов соответственно с различными скоростями. Одна совокупность объектов перемещается вертикально, а другая – горизонтально. Объекты, перемещающиеся вертикально должны пропускать объекты компонента, перемещающиеся горизонтально, приостанавливаясь на указанном расстоянии от них.




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




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




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



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




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




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




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


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


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




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




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




  1. В прямоугольнике перемещаются n объектов с различными скоростями, отталкиваясь от стенок этого прямоугольника. Оттолкнувшись от стенок, объект превращается в два объекта, один из которых через указанное время исчезает. Если перед исчезновением объект приблизится к какому-либо объекту, то они оба исчезают.



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

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

1. Медведев В.И. Особенности объектно-ориентированного программирования на C++/CLI, C# и Java. – Казань: РИЦ «Школа», 2008. – 360 c.: ил. – (Серия «Современная прикладная математика и информатика»).

2. Медведев В.И. Программирование на С++, С++.NET/C# и .NET компоненты. – Казань: Мастер Лайн, 2006. – 296 c.: ил.

3. Медведев В.И. Программирование на C++, C++.NET и C# (Серия “Современная прикладная математика и информатика”). – Казань: Мастер Лайн, 2005. – 270 c.: ил.


б) дополнительная литература:

1. Байдачный С.С. .NET Framework. Секреты создания Windows-приложений. – М.: СОЛОН-Пресс, 2004. – 496 с.: ил.

2. Гербердт Шилдт. C#: учебный курс. – СПб.: Питер; К.: Издательская группа BHV, 2003. – 512 c.: ил.

СПб.: Питер, 2002. – 464 с.

3. Петцольд Ч. Программирование для Microsoft Windows на C#. В 2-х томах/Пер. с англ. – М.: Издательско-торговый дом “Русская Редакция”, 2002. – 576 + 624 с.: ил.

4. П. Наутон, Г. Шилдт. Java 2. Наиболее полное руководство в подлиннике.– СПб.: БХВ-Петербург, 2000. – 1072 с.: ил.

5. Рамбо Дж., Якобсон А., Буч Г. UML: специальный справочник. – СПб.: Питер, 2002. – 656 c.


ПРИЛОЖЕНИЕ . Пример курсовой работы


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

Задание сформулировано следующим образом:


В прямоугольнике перемещаются 2 объекта шаров с различными скоростями, отталкиваясь от стенок этого прямоугольника. Оттолкнувшись от стенок, объекты шары сообщают об этом специальному объекту шару, который при этом “вспыхивает” на 2 сек.


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

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


metodika-po-formirovaniyu-sistemi-tablic-zatrati-vipusk-glava-1-stranica-8.html
metodika-podgotovki-ezhegodnih-otkritih-informacionno-analiticheskih-dokladov-o-sostoyanii-i-rezultatah-sistemi-obrazovaniya-na-municipalnom-i-shkolnom-urovnyah-tomsk-2007-stranica-5.html
metodika-podgotovki-i-provedeniya-konkursnih-meropriyatij-respublikanskaya-programma-deti-tatarstana-2005-2007.html
metodika-podgotovki-k-vserossijskoj-olimpiade-po-russkomu-yaziku.html
metodika-podgotovki-uchashihsya-k-ent-po-biologii-sistema-raboti-uchitelya-po-podgotovke-uchashihsya-k-ent.html
metodika-poiska-rezultatov-nauchnih-issledovanij-hannanov-nail-kutdusovich.html
  • kanikulyi.bystrickaya.ru/zakon-respubliki-tatarstan-ot-18-iyunya-1998-g-n-1659.html
  • thesis.bystrickaya.ru/primechaniya-averincev-s-sudbi-evropejskoj-kulturnoj-tradicii-v-epohu-perehoda-ot-antichnosti-k-srednevekovyu.html
  • shkola.bystrickaya.ru/shpargalka-po-mirovoj-ekonomike-3.html
  • urok.bystrickaya.ru/programma-po-geografii-dlya-11-a-klassa-na-2013-2014-uchebnij-god.html
  • uchit.bystrickaya.ru/tematicheskij-plan-izucheniya-disciplini-pp.html
  • prepodavatel.bystrickaya.ru/svyatie-otci-o-miloserdii-bozhiem-venchik-k-bozhemu-miloserdiyu.html
  • diploma.bystrickaya.ru/virobnictvo-zerna-hlboproduktv-kormv-na-ukran-problemi-perspektivi.html
  • teacher.bystrickaya.ru/glava-3-poetika-kazahskoj-filosofii-svedeniya-ob.html
  • turn.bystrickaya.ru/polozhenie-o-poryadke-viborov-dekana-fakulteta-i-zaveduyushego-kafedroj-40-polozhenie.html
  • tetrad.bystrickaya.ru/upravlenie-i-tipi-harakterov.html
  • bukva.bystrickaya.ru/process-izgotovleniya-pechatnoj-plati.html
  • predmet.bystrickaya.ru/sposobi-organizacii-svyazi-s-abonentomi-voprosi-i-otveti.html
  • spur.bystrickaya.ru/makarichev-ma-vladimir-makanin-odin-iz-krupnejshih-pisatelej-sovremennosti-laureat-gosudarstvennoj-premii-rossijskoj.html
  • kolledzh.bystrickaya.ru/8-proekt-federalnogo-zakona-o-sisteme-federalnih-organov-ispolnitelnoj-vlasti.html
  • upbringing.bystrickaya.ru/metodi-ustanovleniya-nbpf-v-praktike-regionov-v-interesah-federalnogo-agentstva-po-obrazovaniyu-monitoring-regionalnogo.html
  • institut.bystrickaya.ru/tema-uroka-osnovanie-ekaterinodara-i-pervih-stanic.html
  • desk.bystrickaya.ru/piter-paul-rubens.html
  • university.bystrickaya.ru/glava-vii-vne-sluzhbi-gejnc-guderian-vospominaniya-soldata.html
  • write.bystrickaya.ru/glava-23-kniga-avtora-legendarnogo-koda-da-vinchi.html
  • gramota.bystrickaya.ru/zolotoj-vek-chelovechestva.html
  • assessments.bystrickaya.ru/dimshica-g-m-sablinoj-o-v-programmi-dlya-obsheobrazovatelnih-uchrezhdenij-biologiya-10-11-klassi.html
  • holiday.bystrickaya.ru/naimenovanie-uchastnika-s-a-suchilova-zamestitel-nachalnika-mu-upravlenie-obrazovaniya-administracii-g-gubkinskogo.html
  • gramota.bystrickaya.ru/vremya-novostej-moskva-n054-142009-melnikov-kirill-gospod-poslal-nam-dopolnitelnuyu-neft.html
  • kolledzh.bystrickaya.ru/4-razmeri-kompensacionnih-viplat-rabotnikam-uchrezhdenij-obrazovaniya-zanyatih-na-rabotah-s-osobimi-usloviyami-truda.html
  • assessments.bystrickaya.ru/cikli-povisheniya-kvalifikacii-po-psihoterapii-nauchno-issledovatelskij-psihonevrologicheskij.html
  • university.bystrickaya.ru/glava-xvii-religiya-kak-zakon-zhizni-glava-i-cikl-razvitiya-obshestva-glava-ii-vek-individualizma-i-razuma.html
  • studies.bystrickaya.ru/aktivnie-operacii.html
  • vospitanie.bystrickaya.ru/zhizn-i-vozzreniya-k-g-yunga-karl-gustav-yung-rodilsya-26-iyulya-1875-g-v-shvejcarskom-mestechke-kesvil-v-seme-svyashennika-evangelicheski-reformatskoj-cerkvi-semya-yu-stranica-19.html
  • learn.bystrickaya.ru/fotoohota-za-hronomirazhami-kniga-iii.html
  • knigi.bystrickaya.ru/rol-intuicii-voobrazheniya-mishleniya-i-intellekta-v-reshenii-zadach-yuridicheskaya-psihologiya-vasilev.html
  • grade.bystrickaya.ru/mir-vsemu-zhivushemu-legendi-sozhzhenie-tmi-znamya-mira-konferenciya-v-bryugge-1931-god-znamya-mira.html
  • spur.bystrickaya.ru/liter-almati-76-1746-29042011g-3-4-maya-2011g-astana-2011-g-anonsiruyushij-etap.html
  • kolledzh.bystrickaya.ru/arifmetika-umet-na-zasedanii-metodicheskogo.html
  • student.bystrickaya.ru/4-dajte-otvet-na-vopros-n-l-puzirevich-pod-obsh-red-l-f-mirzayanovoj-baranovichi-rio-bargu-2008-100-s.html
  • shpora.bystrickaya.ru/zadachi-sposobstvovat-ukrepleniyu-druzhbi-uvazheniya-drug-k-drugu-mezhdu-uchashimisya-obedinit-ih-obshim-delom-detskoj-organizacii-ikar-razvitie-intellektualnih-i-tvorcheskih-sposobnostej-uchashihsya.html
  • © bystrickaya.ru
    Мобильный рефератник - для мобильных людей.