Применение объектно-ориентированного программирования в системе образования

Особенности внедрения информационных технологий в обучение. Рассмотрение технических характеристик и назначения программной системы авто-навигатора машины. Особенности и анализ разработки UML модели. Описание и разработка классов входящих в систему.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 23.11.2012
Размер файла 391,2 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

Содержание

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

Список используемых сокращений

Введение

1. Краткая характеристика проектируемой системы

1.1 Постановка задачи

1.2 Назначение и краткое описание системы

2. Описание работы системы

3. Описание и разработка классов входящих в систему

4. Разработка UML модели

4.1 Краткое описание и назначение UML модели

4.2 Предметы в UML

4.3 Отношения в UML

4.4 Диаграммы в UML

5. Формирование UML диаграммы классов

6. USE CASE диаграмма

7. Дополнительные диаграммы, отображающие особенности программы

7.1 Диаграмма схем состояния

7.2 Диаграмма деятельности

7.3 Диаграмма взаимодействия

7.4 Диаграмма сотрудничества

7.5 Диаграмма последовательности

Заключение

Список использованных источников

ПРИЛОЖЕНИЕ А

ПРИЛОЖЕНИЕ Б

ПРИЛОЖЕНИЕ В

ПРИЛОЖЕНИЕ Г

Список используемых сокращений

ООС - объектно-ориентированная система

ПО - программное обеспечение

ПС - программная система

Введение

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

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

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

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

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

Для сложных систем, с некоторыми приходится иметь дело на практике, применение классического экспериментального метода исследования ограничено его высокой стоимостью, а в ряде случаев (экология, макроэкономика и др.) натурные эксперименты становятся либо вовсе невозможными, либо, по крайней мере, чересчур рискованными. Поэтому в качестве основного метода исследования сложных систем используют метод машинного эксперимента - универсальный метод познания, основанный на использовании системных имитационных моделей. Проблемы разработки системных моделей являются предметом изучения системного анализа, в котором выделяется теория эффективности - основа для количественной оценки альтернативных систем. [8]

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

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

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

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

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

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

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

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

В настоящее время системный подход к обучению признан в международной практике наиболее эффективным средством достижения требуемого уровня компетентности персонала АЭС, а также обеспечения качества подготовки. Благодаря заложенным в системный подход к обучению (СПО) расширенным возможностям контроля и отчётности, административное руководство, а также регулирующий орган получают инструмент для применения стандартных процедур и процессов обеспечения качества на любой стадии учебного процесса. Это даёт большую степень уверенности в обеспечении квалификации и компетентности персонала, чем оценка, основанная только на результатах экзамена. Таким образом, СПО - это непрерывный процесс приобретения, поддержания и развития квалификации персонала, обладающий механизмами постоянного и периодического контроля и усовершенствования.

1. Краткая характеристика проектируемой системы

1.1 Постановка задачи

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

1.2 Назначение и краткое описание системы

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

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

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

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

2. Описание работы системы

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

Рисунок 1. - Интерфейс программы

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

3.Описание и разработка классов входящих в систему

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

Класс в С++ это платформа для перевода абстракции в тип определенный пользователем объединяющей в себе представления данных и методы обрабатывающие эти данные.

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

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

Для разрабатываемой системы используются следующие классы:

Класс Cmap; отвечает за местоположение на карте.

class Cmap {

private :

int ** karta;

int n,m;

public :

TImage *Image;

Класс Ccar отвечает за объкт-машина и за ее передвижение

class Ccar {

private:

bool b;

bool vertical;

public :

int v;

int fuel;

int target;

CPoint *point;

TImage *Image;

TEdit *Edit;

TProgressBar *ProgressBar;

TShape *Shape;

TLabel *Label;

int x,y;

int chislo;

Класс CPoint

class CPoint {

private : int x,y;

public :

CPoint();

CPoint(int x1,int y1);

int get_x();

int get_y();

Класс СNavigator позволяет точно определить местоположение объекта

class CNavigator {

public :

Cmap map;

Ccar car;

4. Разработка UML модели

4.1 Краткое описание и назначение UML языка

Для создания моделей анализа и проектирования объектно-ориентированных программ системы используют язык визуального моделирования. В качестве стандартного языка 3 поколения был принят Unifed Modeling Language (UML).

UML - стандартный язык для написания моделей анализа, проектирования и реализации объектно-ориентированных программных систем. UML может использоваться для визуализации, спецификации, конструирования и документирования результатов программных проектов. UML - это не визуальный язык программирования, но его модели прямо транслируются в текст на языках программирования ( JAVA,C++, Visual Basic, ADA 95 и т.д.).

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

Предметы - это абстракции, которые являются основными элементами в модели, отношения связывают эти предметы, диаграммы группируют коллекции предметов.

4.2 Предметы в UML

В UML имеются 4 разновидности предметов:

1. Структурные предметы.

2. Предметы поведения.

3. Группирующие предметы.

4. Поясняющие предметы

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

Структурные предметы являются существительными в UML - моделях. Они представляют статические части модели - понятийные или физические элементы.

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

1. Класс

2. Интерфейс

3. Кооперация (сотрудничество)

4. Актер

5. Элемент Use Case (прецедент)

6. Активный класс

7. Компонент

8. Узел

Предметы поведения - динамические части UML-моделей. Они являются глаголами моделей, представлением поведения во времени и пространстве. Существуют две основные разновидности предметов поведения: взаимодействие и конечный автомат. Эти 2 элемента являются базисными предметами поведения, которые могут включаться в UML- модели. Семантически эти элементы ассоциируются с различными структурными элементами (прежде всего с классами, кооперациями и объектами).

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

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

Предусмотрена только одна разновидность поясняющего предмета- это примечание.

4.3 Отношения в UML

В UML имеются четыре разновидности отношений:

1. Зависимость

2. Ассоциация

3.Обобщение

4. Реализация

Зависимость - семантическое отношение между двумя предметами, в котором изменение в одном предмете может влиять на семантику другого предмета (рисунок 3).

Рис. 3. - Обозначение зависимости.

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

Рис. 4. - Обозначение ассоциации.

Обобщение - отношение специализации/обобщения, в котором объекты специализированного элемента (потомка, ребенка) могут заменять объекты обобщенного элемента (предка, родителя). Иначе говоря, потомок разделяет структуру и поведение родителя (рисунок 5).

Рис. 5. - Обозначение обобщения.

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

Рис. 6. - Обозначение реализации.

4.4 Диаграммы в UML

Диаграмма - графическое представление множества элементов, наиболее часто изображается как связный граф из вершин (предметов) и дуг (отношении). Диаграммы рисуются для визуализации системы с разных точек зрения, затем они отображаются в систему. Обычно диаграмма дает неполное представление элементов, которые составляют систему. Хотя один и тот же элемент может появляться во всех диаграммах, на практике он появляется только в некоторых диаграммах. Теоретически диаграмма может содержать любую комбинацию предметов и отношений, на практике ограничиваются малым количеством комбинаций, которые соответствуют пяти представлениям архитектуры ПС. По этой причине UML включает девять видов диаграмм:

1.диаграммы классов;

2.диаграмма объектов

3.диаграммы Use Case (диаграммы прецедентов);

4.диаграммы последовательности;

5.диаграммы сотрудничества (кооперации);

6.диаграммы схем состояний;

7.диаграммы деятельности;

8.компонентные диаграммы;

9.диаграммы размещения (развертывания).

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

Диаграмма объектов показывает набор объектов и их отношения.

Диаграмма Use Case показывает набор элементов Use Case, актеров и их отношений.

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

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

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

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

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

5. Формирование UML диаграммы классов

Диаграммой классов (Class diagram) называют диаграмму, на которой показано множество классов, интерфейсов, коопераций и отношений между ними. Ее изображают в виде множества вершин и дуг.

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

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

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

Диаграммы классов обычно содержат следующие сущности:

1.классы;

2.интерфейсы;

3.кооперации;

4.отношения зависимости, обобщения и ассоциации.

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

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

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

6. USE CASE диаграмма

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

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

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

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

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

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

7. Дополнительные диаграммы, отображающие особенности программы

7.1 Диаграмма схем состояния

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

Диаграмма схем состояния показывает:

1.набор состояний системы;

2.события, которые вызывают переход из одного состояния в другое;

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

7.2 Диаграмма деятельности

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

7.3 Диаграмма взаимодействия

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

7.4 Диаграмма сотрудничества

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

7.5Диаграмма последовательности

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

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

Графически диаграмма последовательности - разновидность таблицы, которая показывает объекты, размещенные на оси Х, и сообщение упорядоченные по оси У.

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

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

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

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

Заключение

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

Были разработаны основные составные программного продукта (классы), с помощью которых стало возможно достижение поставленной задачи. Так же были составлены диаграммы классов и UseCase - диаграмма согласно требованиям языка программирования UML.

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

Список использованной литературы

1.Н.Е. Сапожников, Т.А. Беляева, Е.В. Скрябина - Программирование на С++.

Севастополь 2004 г.

2. Страуструп Б. Язык программирования С++. Киев: Диасофт,2001. - 900с.,ил.

3. Джефф Элджер Библиотека программиста С++.

4. Конспект лекций по дисциплине Объектно-ориентированное программирование спецзадач.

Приложение А

Приложение Г

Unit1.срр

Приложение Б

#include "Unit1.h"

#include "Unit2.h"

#include "math.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

CNavigator navigator;

//---------------------------------------------------------------------------

void __fastcall TForm1::allow_move(int i) {

if (i==1) {

ComboBox1->Enabled=false;

Button1->Enabled=false;

Button2->Enabled=true;

} else {

ComboBox1->Enabled=true;

Button1->Enabled=true;

Button2->Enabled=false;

}

}

//---------------------------------------------------------------------------

void __fastcall TForm1::FormCreate(TObject *Sender)

{

navigator<<Image1;

navigator.car<<Edit1;

navigator.car<<ProgressBar1;

navigator.car<<Shape1;

navigator.car<<Label8;

navigator.show();

show_trees();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)

{

allow_move(1);

Timer1->Enabled=true;

}

//--------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)

{

allow_move(0);

navigator.car.stop();

Timer1->Enabled=false;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Timer1Timer(TObject *Sender)

{

float x1,x2,y1,y2;

x1=navigator.car.x;

y1=navigator.car.y;

x2=navigator.car.point[navigator.car.target].get_x();

y2=navigator.car.point[navigator.car.target].get_y();

Edit3->Text=FloatToStrF( pow ( pow(x1-x2,2) + pow(y1-y2,2),0.5) ,ffFixed,4,2);

Edit2->Text=IntToStr(navigator.car.chislo);

Edit4->Text=FloatToStr(x1);

Edit5->Text=FloatToStr(y1);

Edit6->Text=FloatToStr(x2);

Edit7->Text=FloatToStr(y2);

if (navigator.car.move()==0) {

allow_move(0);

Timer1->Enabled=false;

}

if (navigator.car.move()==-1) {

navigator.car.stop();

allow_move(0);

navigator.show();

show_trees();

Timer1->Enabled=false;

ShowMessage("У вас закончилось топливо.Поездка остановлена!!");

}

navigator.show();

show_trees();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::ComboBox1Change(TObject *Sender)

{

if (!strcmp(ComboBox1->Text.c_str(),"A")) navigator.car.target=0;

else if(!strcmp(ComboBox1->Text.c_str(),"B")) navigator.car.target=1;

else if(!strcmp(ComboBox1->Text.c_str(),"C")) navigator.car.target=2;

else if(!strcmp(ComboBox1->Text.c_str(),"D")) navigator.car.target=3;

else if (!strcmp(ComboBox1->Text.c_str(),"E")) navigator.car.target=4;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button3Click(TObject *Sender)

{

navigator.car.fuel=1000;

navigator.show();

show_trees();

}

Приложение В

Unit2.срр

#pragma hdrstop

#include "Unit2.h"

//---------------------------------------------------------------------------

CPoint::CPoint() {

x=y=0;

}

CPoint::CPoint(int x1,int y1) {

x=x1;

y=y1;

}

int CPoint::get_x() {

return x;

}

int CPoint::get_y() {

return y;

}

void CPoint::set(int x1,int y1) {

x=x1;

y=y1;

}

void CPoint::set_x(int x1){

x=x1;

}

void CPoint::set_y(int y1){

y=y1;

}

void CNavigator::operator<<(TImage *im) {

map<<im;

car<<im;

}

void CNavigator::show() {

map.show_map();

car.show();

}

Ccar::Ccar() {

vertical=false;

point = new CPoint[5];

point[0].set(3*10,3*10);

point[1].set(3*(100-10),3*10);

point[2].set(3*10,3*(100-10));

point[3].set(3*(100-10),3*(100-10));

point[4].set(3*50,3*50);

b=false;

x=3*(50-10);

y=3*(100-10);

fuel=250;

target=0;

v=0;

chislo=0;

}

Ccar::~Ccar() {

delete[] point;

}

void Ccar::stop() {

v=0;

b=0;

show();

}

int Ccar::move() {

if (fuel<1) {v=0;return -1;};

/////////

if (x==point[target].get_x())

if (y==point[target].get_y())

{

b=false;

v=0;

chislo=0;

return 0;

}

/////////

if (vertical==false)

/////////////========///////////

if (x<point[target].get_x())

x++;

else if (x>point[target].get_x())

x--;

else if (y>point[target].get_y())

{y--;vertical=true;}

else {vertical=true;y++;}

} else {

if (y>point[target].get_y()) y--;

else if (y<point[target].get_y()) y++;

else if (x<point[target].get_x())

{x++;vertical=false;}

else {x--;vertical=false;}

}

/////////////========///////////

b=true;

fuel--;

v=40+random(10);

chislo=200+random(100);

return 1;

}

void Ccar::show() {

if (!b) Image->Canvas->Brush->Color=clGreen;

else Image->Canvas->Brush->Color=clRed;

Image->Canvas->Ellipse(x-5,y-5,x+5,y+5);

Edit->Text=IntToStr(v);

ProgressBar->Position=fuel;

if (!b) {

Shape->Brush->Color=clLime;

Label->Caption="Машина стоит";

}

else {

Shape->Brush->Color=clRed;

Label->Caption="Машина едет";

}

}

void Ccar::operator<<(TImage *im){

Image=im;

}

void Ccar::operator<<(TEdit *ed) {

Edit=ed;

}

void Ccar::operator<<(TProgressBar *pr) {

ProgressBar=pr;

}

void Ccar::operator<<(TShape *sh) {

Shape=sh;

}

void Ccar::operator<<(TLabel *lb) {

Label=lb;

}

Cmap::Cmap(){

n=m=100;

karta=new int *[n];

for(int i=0;i<n;i++) karta[i]=new int [m];

for (int a=0;a<n;a++)

for (int b=0;b<m;b++)

karta[a][b]=0;

for (int s=0;s<n;s++) {

karta[10][s]=1;

karta[s][10]=1;

karta[n-1-10][s]=1;

karta[s][m-1-10]=1;

}

for (int s=10;s<90;s++) {

karta[50][s]=2;

karta[s][50]=2;

}

}

Cmap::~Cmap() {

for (int i=0;i<m;i++) delete[]karta[i];

delete[]karta;

}

void Cmap::show_map() {

Image->Canvas->Brush->Color=clWhite;

Image->Canvas->Pen->Width=1;

Image->Canvas->Rectangle(0,0,300,300);

int col;

for (int i=0;i<100;i++)

for(int j=0;j<100;j++) {

if (karta[i][j]==1) {

col=clBlack+10;

Image->Canvas->Pixels[3*i+1][3*j-1]=col;

Image->Canvas->Pixels[3*i-1][3*j+1]=col;

Image->Canvas->Pixels[3*i-1][3*j-1]=col;

Image->Canvas->Pixels[3*i][3*j-1]=col;

Image->Canvas->Pixels[3*i-1][3*j]=col;

Image->Canvas->Pixels[3*i][3*j]=col;

Image->Canvas->Pixels[3*i+1][3*j]=col;

Image->Canvas->Pixels[3*i][3*j+1]=col;

Image->Canvas->Pixels[3*i+1][3*j+1]=col;

}

if (karta[i][j]==2) {

col=clBlack+150;

Image->Canvas->Pixels[3*i+1][3*j-1]=col;

Image->Canvas->Pixels[3*i-1][3*j+1]=col;

Image->Canvas->Pixels[3*i-1][3*j-1]=col;

Image->Canvas->Pixels[3*i][3*j-1]=col;

Image->Canvas->Pixels[3*i-1][3*j]=col;

Image->Canvas->Pixels[3*i][3*j]=col;

Image->Canvas->Pixels[3*i+1][3*j]=col;

Image->Canvas->Pixels[3*i][3*j+1]=col;

Image->Canvas->Pixels[3*i+1][3*j+1]=col;

}

}

}

void Cmap::operator<<(TImage *im){

Image=im;

}

#pragma package(smart_init)

Приложение Г

Размещено на Allbest.ru


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.