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

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

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

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

Добавлен: 22.11.2023

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

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

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


Рекомендуемой средой разработки является система Microsoft Visual Studio.
Тем не менее, студент имеет право остановиться на каком-либо другом объектно-ориентированном языке высокого уровня, позволяющем разрабатывать независимые приложения. Выбор языка требует обязательного обоснования.

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

Обоснование строится на основе выполненного анализа предметной области, исходя из следующих определяющих факторов:

  • функциональные требования к системе;

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

  • трудоёмкость разработки.


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

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

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

3.6. Определение методики тестирования

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


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

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

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

Так, если в системе классов «фигура-точка-шар» присутствует виртуальный метод «нарисовать», необходимо спланировать по крайней мере два теста на корректность использования этого метода для классов «точка» и «шар» (класс «фигура» является абстрактным).

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

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

1. Тестовое приложение должно иметь консольный (или оконный) интерфейс,

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


2. Набор интерфейсных элементов (консольные пункты выбора в случае консольного приложения; и кнопки, списки, поля ввода, диалоговые окна, графические элементы и т.д. в случае оконного интерфейса) должен быть определён на основе, описанной на предыдущем этапе, методики тестирования.
3. Жёсткие требования к качеству интерфейса тестового приложения (с точки зрения удобства использования и степени интерактивности) не предъявляются. Основное требование – возможность реализации методики тестирования.
4. Жёсткие требования на документирование процесса разработки тестового приложения не накладываются. В текст расчётно-пояснительной записки следует обязательно включить лишь блок-схемы алгоритмов, основную диаграмму классов и тестовые экранные формы, наглядно демонстрирующие интерфейс программы. По собственной инициативе студент может включить в описание тестового приложения функциональные схемы, таблицы, т.е. любые материалы, позволяющие лучше понять процесс разработки и функционирование тестового приложения.
Таким образом, целями разработки тестового приложения являются не столько тестирование библиотеки классов, сколько стимулирование самостоятельной творческой работы студента и освоение технологии разработки приложений. При этом в требованиях к работе отсутствует упоминание об операционной системе, на базе которой должно функционировать приложение. Выбор операционной системы остаётся на усмотрение студента.
3.8. Тестирование системы классов

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

Для каждого выполненного теста фиксируются:

1. Номер теста (по нумерации тестов в методике тестирования).

2. Входные данные.

3. Ожидаемый результат выполнения теста.

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

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

3.9. Порядок защиты курсовой работы

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

1. Описать этапы проектирования системы классов.

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

3. Прокомментировать обоснование выбора языка и среды разработки.

4. Пояснить конкретные фрагменты исходного кода программы (включая тестовое приложение).

5. Предложить альтернативные варианты системы классов.

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

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

1. Лафоре Р. Объектно-ориентированное программирование в C++. – СПб.: Питер, 2007.

2. Павловская Т.А. C++. Объектно-ориентированное программирование: практикум : учебное пособие. — Санкт-Петербург : Питер, 2006 (и др. издания)

3. Дубов И.Р. Объектно-ориентированное программирование: учебное пособие. — Владимир: Владимирский государственный университет, 2003

4. Лаптев В.В., Морозов А.В., Бокова А.В. C++. Объектно-ориентированное программирование. Задачи и упражнения. – СПб.: Питер, 2007.
б) дополнительная литература:

1. Иванова Г.С. Объектно-ориентированное программирование : учебник для вузов по направлению "Информатика и вычислительная техника". – Москва: Московский государственный технический университет имени Н. Э. Баумана (МГТУ), 2001

2. Приемы объектно-ориентированного проектирования. Паттерны проектирования: пер. с англ. / Э. Гамма [и др.] .— Санкт-Петербург : ДМК Пресс : Питер, 2008 (и др. издания)

3. Бертран Мейер Объектно-ориентированное конструирование программных систем. – М.: Русская редакция, 2005.

4. Подбельский В.В. Язык СИ++: учебное пособие для вузов. — 5-е изд. — Москва: Финансы и статистика, 2004 (и др. издания)

5. Д.Э. Кнут. Искусство программирования, том 3. Пер. с англ. М.: Издательский дом "Вильямс", 2007. (и др. издания)

в) программное обеспечение и Интернет-ресурсы

1. Microsoft Visual Studio 2010 (средство разработки)

2. Microsoft Development Network Library (справочная система)
Приложение А
Индивидуальные задания


  1. Библиотека классов, реализующих комплексную арифметику. Даны два комплексных числа К1 и К2, требуется вычислить К3 как их сумму, разность, произведение и частное.

  2. Библиотека классов, реализующих векторы в n-мерном пространстве. Даны два n-мерных вектора V1 и V2, требуется вычислить V3 как их сумму, разность и произведение на число К.

  3. Библиотека классов, реализующая «обобщённый массив» (позволяющий хранить данные произвольных типов). В массив М2 поместить все четные элементы из М1 и найти их сумму (если это возможно по типу).

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

  5. Реализация различных типов графов и операций над ними. Даны графы G1 и G2, найти G3 как их объединение и пересечение.

  6. Система классов для обеспечения работы с абонентами телефонной компании. Даны два абонента А1 и А2, если они являются тезками, то поменять местами их телефонные номера, иначе сменить номер абоненту с более длинным именем.

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

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

  9. Система классов, описывающих различные транспортные средства. Сравнить среднюю скорость трех различных транспортных средств и выписать штрафы в случае превышения.

  10. Библиотека классов, реализующих стековую структуру хранения операций. В стек Stek2 поместить все знаки операций из Stek1 и найти их количество.

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

  12. Библиотека классов, реализующих очередь хранения слов. В очередь Och2 поместить все латинские буквы из Och1 и найти их количество.

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

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

  15. Библиотека классов, реализующих стековую структуру хранения строк. В стек Stek2 поместить все строки из Stek1, начинающиеся на букву «z».

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

  17. Библиотека классов для реализации операций над простыми дробями. Даны две простые дроби Д1 и Д2, требуется вычислить Д3 как их сумму, разность, произведение и частное.

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

  19. Система классов для реализации матричной арифметики. Даны две матрицы М1 и М2, требуется вычислить М3 как их сумму, разность и произведение.

  20. Библиотека классов для реализации списка целых чисел. Построить список L1 - копию списка L, расположив элементы в обратном порядке (первый элемент списка L - последний элемент списка L1). Заменить элементы списка L, имеющие четные значения, на элементы списка L1, имеющие нечетные значения