Файл: Методические указания к курсовой работе по дисциплине Технологии программирования на тему Объектноориентированное программирование.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 22.11.2023

Просмотров: 66

Скачиваний: 3

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

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

по дисциплине «Технологии программирования»

на тему «Объектно-ориентированное программирование»
1. Организация работы

1.1. Цели работы

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

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

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

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

а) анализ задания;

б) разработка библиотеки классов;

в) разработка тестового приложения;

г) оформление расчётно-пояснительной записки по результатам выполнения работы.

Открытый список вариантов задания на проектирование приведён в Приложении А.


Каждый из вариантов определяет предметную область, для моделирования которой должна быть разработана система классов. Если списковый номер студента (№) превышает 20, то его вариант вычисляется, как №-20.

Минимальное количество классов в библиотеке – 3.

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

Оформление расчётно-пояснительной записки должно соответствовать требованиям ГОСТ, ЕСКД, ЕСПД.
2. Состав работы

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

1. Титульный лист

2. Задание на работу

3. Содержание

4. Анализ задания

4.1 Диаграмма вариантов использования UML

5. Разработка библиотеки классов

5.1. Диаграмма классов UML

5.2. Выбор языка программирования

5.3. Реализация классов

5.4 Диаграмма компонентов UML

6. Разработка тестового приложения

6.1. Методика тестирования (методом базового пути)

6.2. Структура тестового приложения

7. Результаты тестирования

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

9. Приложение А. Программный код тестового приложения
3. Рекомендации по выполнению работы

3.1. Порядок выполнения

1. Анализ задания. Описание предметной области.

2. Разработка библиотеки классов:

2.1. Определение набора классов, их свойств и методов, иерархии наследования.

2.2. Формализация описания классов в виде диаграммы классов.

2.3. Выбор средств реализации библиотеки классов – языка программирования и среды разработки.

2.4. Программная реализация классов.

3. Разработка приложения для тестирования системы классов:

3.1. Определение методики тестирования для демонстрации использования всех методов созданных классов.

3.2. Проектирование тестового приложения.

3.3. Программная реализация тестового приложения.

4. Тестирование системы классов. Демонстрация работы тестового приложения.

5. Подготовка расчётно-пояснительной записки.

6. Демонстрация работы программы преподавателю и защита работы.


3.2. Анализ задания.

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

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

2. Что входит в словарь предметной области, отдельно выделив список существительных и список глаголов, которые могут быть связаны с существительными. Для графических примитивов существительными могут быть: «точка», «координата», «шар», «угол», «цвет», «длина», «ширина» и др. А в качестве глаголов можно указать: «нарисовать», «повернуть», «масштабировать», «переместить».

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

3.3. Проектирование системы классов

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

Для приведённого выше примера можно указать следующее соответствие:

  • классы: точка, шар;

  • свойства: координата, угол, цвет, длина, ширина;

  • методы: нарисовать, повернуть, масштабировать, переместить.


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

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

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

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

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

  • класс обозначается прямоугольником;

  • прямоугольник делится на три части, в каждой из которых, соответственно, указываются: имя класса, список свойств, список методов;

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

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

  • перед именем свойства или метода ставится символ, указывающий на режим доступности: закрытый (-), защищённый (#), открытый (+);

  • после имени метода ставятся круглые скобки, в которых могут быть перечислены параметры метода;

  • наследование классов обозначается стрелкой с треугольным не закрашенным наконечником;

  • стрелка при наследовании направляется от класса-наследника к родительскому классу.


Пример диаграммы классов приведён на рисунке 1.

Рисунок 1 – Диаграмма классов трёхмерных графических примитивов
Диаграмма классов с комментариями к ней является результатом данного этапа работы.
3.4. Выбор средств реализации библиотеки классов

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

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

В курсовой работе набор перечисленных вопросов остаётся, однако от студента требуется обоснование ответа лишь на два из них – о выборе языка программирования и о выборе среды разработки.
Рекомендованными в рамках дисциплины языками являются C++ и C#.