Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка_Курсовой_ новая.doc
Скачиваний:
3
Добавлен:
03.03.2016
Размер:
119.3 Кб
Скачать

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ УКРАИНЫ

ДОНЕЦКИЙ НАЦИОНАЛЬНЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

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

к выполнению курсовой работы по дисциплине

"Объектно – ориентированное программирование"

(для студентов специальности 091401)

Утверждено на заседании кафедры

Автоматики и телемеханики.

Протокол № ___

от «___»___________2010_г.

Донецк, ДонНТУ

2010

УДК 518.12 (07)

Методические указания к курсового проекта работ по дисциплине "Объектно – ориентированное программирование". (для студентов специальности 091401) / Ярошенко О.А.,. Дегтяренко И. В. - Донецк: ДонНТУ, 2010.

Содержатся краткие теоретические сведения и методические рекомендации к курсовому проектированию с использованием ООП.

Методические указания предназначены для студентов специальности 091401 "Системы управления и автоматика" направление подготовки "Компьютеризированные системы, автоматика и управление".

Составители О.А. Ярошенко

И.В. Дегтяренко

1 Проектирование программных средств

При решении отдельных задач или комплекса взаимосвязанных задач на ЭВМ выделяются следующие этапы:

  1. Разработка математической модели решаемой задачи. Получение описания процесса в виде алгебраических или логических выражений;

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

  3. Разработка алгоритма;

  4. Реализация решения задачи на одном из языков программирования;

  5. Тестирование и отладка программы или комплекса программ;

  6. Решение задачи на ЭВМ.

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

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

Алгоритм должен соответствовать следующим требованиям:

1. Дискретность.

Алгоритм должен представлять процесс решения задачи как последовательность конкретных шагов (этапов).

2. Однозначность.

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

3. Массовость (универсальность).

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

4. Результативность (сходимость).

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

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

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

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

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

Такой подход получил название модульной структуризации.

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

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

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

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

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

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

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

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

Задачи структурного проектирования:

  1. Формирование общей структуры программного пакета;

  2. Формирование структуры программных модулей;

  3. Предварительная оценка и распределение ресурсов ЭВМ на реализацию модулей.

Требования к языку программирования:

  • иметь адекватную систему команд;

  • достаточно развитой интерфейс пользователя;

  • обеспечение необходимыми программными средствами поддержки разработки;

  • желательно наличие библиотеки реализации стандартных функций;

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

Спецификация программного модуля:

  1. Имя модуля.

  2. Функция модуля и ее описание.

  3. Входные параметры.

  4. Выходные параметры.

  5. Требования к модулю по показателям назначения.

  6. Другие требования и ограничения.

  7. Порядок оценки качества работы модуля и контрольные решения.

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

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

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

Таким образом, парадигма объектно-ориентированного программирования гласит:

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

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

а) Если Вы считаете "это" отдельным понятием, сделайте его классом.

б) Если Вы считаете "это" отдельным объектом, сделайте его объектом некоторого класса.

с) Если два класса имеют нечто общее, сделайте это общее базовым классом.

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

а) Не используйте глобальные данные и функции.

б) Не используйте открытые данные члены.

в) Не используйте "друзей", кроме случаев, когда надо избежать а) и б).

г) Не помещайте в класс поле признака типа — используйте виртуальные функции.

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

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