Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Объектно-ориентированный анализ и проектирование. Задачи и примеры на C++. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
1 Мб
Скачать
Министерство науки и высшего образования Российской Федерации
НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
Д. Н. ДОСТОВАЛОВ, О. В. ЛАУФЕРМАН
ОБЪЕКТНО-ОРИЕНТИРОВАННЫЙ
АНАЛИЗ И ПРОЕКТИРОВАНИЕ
ЗАДАЧИ И ПРИМЕРЫ
Утверждено
Редакционно-издательским советом университета
в качестве учебного пособия
НОВОСИБИРСК
2022
УДК 004.415.2(075.8) Д 706
Рецензенты:
В. А. Астапчук, канд. техн. наук, доцент кафедры АСУ НГТУ
А. В. Бессонов, канд. техн. наук, главный программист ООО «БФТ»
Достовалов Д. Н.
Д 706 Объектно-ориентированный анализ и проектирование. Зада-
чи и примеры на C++ : учебное пособие / Д. Н. Достовалов, О. В. Лауферман. – Новосибирск : Изд-во НГТУ
, 2022. – 74 с.
ISBN 978-5-7782-4708-6
Учебное пособие посвящено вопросам разработки программного обеспечения с использованием объектно-ориентированного анализа и программирования на языке C++. На основе профессионального стандарта сформулированы требования к квалификации специалистов, занимающихся анализом, проектированием, программированием и ре­факторингом. Приведены рекомендации по написанию обслуживаемо­го программного кода. Рассмотрен пример создания программного продукта с последовательным устранением ошибок проектирования и
повышением гибкости решения, что обеспечивает соответствие изме-
няющимся требованиям к функциональности программного продукта.
Учебное пособие адресовано обучающимся по направлениям 09.03.01 «Информатика и вычислительная техника» и 09.03.03 «Прикладная ин­форматика», а также всем тем, кто интересуется объектно-ориенти­рованным подходом в программировании.
Работа подготовлена на кафедре автоматизированных
систем управления
УДК 004.415.2(075.8)
ISBN 978-5-7782-4708-6 © Достовалов Д. Н., Лауферман О. В., 2022
© Новосибирский государственный технический университет, 2022
ВВЕДЕНИЕ
Методология объектно-ориентированного анализа и проектирова­ния предполагает описание объектов и явлений предметной области в виде совокупности взаимодействующих сущностей – объектов, кото­рые обладают набором характеристик (свойств) и методов поведения. При программной реализации на основе этого описания формируется система иерархически связанных классов и создаются экземпляры этих классов (объекты). В процессе работы программы действие и изменение состояния объектов. Определение классов, их структуры, иерархии и способов взаимодействия могут вызывать за­труднения у обучающихся. Поэтому в настоящем учебном пособии приведены примеры объектно-ориентированного анализа, проектиро­вания и программирования.
Основное содержание учебного пособия изложено в семи главах. В первой главе рассматриваются требования профессионального стан­дарта 06.001 «Программист» для различных уровней квалификации. Приведены примеры трудовых функций и входящих в них трудовых действий. Перечислены знания и умения, необходимые для успешного выполнения трудовых действий. Данные сведения помогут обучаю­щимся в оценке своего уровня квалификации и выборе индивидуаль­ной траектории профессионального развития. Во второй главе пере­числены рекомендации по разработке кода – созданию такой структуры программы, которая упрощает вне­сение изменений в систему с целью устранения выявленных ошибок и адаптации к новым требованиям. Предполагается, что обучающиеся воспользуются этими советами при проектировании и программирова­нии, а также оценят качество имеющихся решений. Для этого в конце
обслуживаемого программного
происходит взаимо-
3
главы приведены задания для самостоятельного выполнения. В треть­ей и последующих главах рассмотрен пример разработки программы для представления каталога товаров. Каждая глава сопровождается необходимыми теоретическими сведениями и примером использова­ния этих положений при проектировании и программной реализации. Процесс разработки носит итеративный характер с последовательным устранением недостатков и ошибок, допущенных на предыдущих
эта­пах разработки, и улучшением структуры программы. Для закрепления изученного материала и получения практических навыков главы 3–7 сопровождаются набором задач для самостоятельного решения. В при­ложениях приведены контрольные списки (чек-листы) для оценки про­грамм с точки зрения использования приемов программирования и соответствия рекомендациям по улучшению обслуживаемости про­граммного кода.
4
Глава 1. ЦЕЛИ И СОДЕРЖАНИЕ
ПРОФЕССИОНАЛЬНОЙ ДЕЯТЕЛЬНОСТИ
«РАЗРАБОТКА ПРОГРАММНОГО
ОБЕСПЕЧЕНИЯ»
В образовательных программах по направлениям подготовки
09.03.01 «Информатика и вычислительная техника» кладная информатика»
2
приведен перечень обобщенных трудовых
1
и 09.03.03 «При-
функций, трудовых функций, трудовых действий, а также необходимых умений и знаний, имеющих отношение к профессиональной деятельно­сти выпускника бакалавриата. Данные взяты из профессионального стандарта 06.001 «Программист»
3
. Основная цель профессиональной
деятельности программиста – «Разработка, отладка, проверка работо­способности, модификация программного обеспечения».
В настоящем пособии разработка программного продукта рас-
сматривается с системных позиций в рамках каскадной модели жиз-

1
Приказ Минобрнауки России от 19.09.2017 929 (ред. от 08.02.2021) «Об утверждении Федерального государственного образовательного стандар­та высшего образованиябакалавриат по направлению подготовки 09.03.01 “Информатика и вычислительная техника”» (Зарегистрировано в Минюсте России 10.10.2017 48489) (с изм. и доп., вступ. в силу с 01.09.2021).
2
Приказ Минобрнауки России от 19.09.2017 922 (ред. от 08.02.2021) «Об утверждении Федерального государственного образовательного стандар­та высшего образованиябакалавриат по направлению подготовки 09.03.03 “Прикладная информатика”» (Зарегистрировано в Минюсте России
12.10.2017 48531) (с изм. и доп., вступ. в силу с 01.09.2021).
3
Приказ Минтруда России от 18.11.2013 679н (ред. от 12.12.2016) «Об утверждении профессионального стандартаПрограммист”» (Зареги- стрировано в Минюсте России 18.12.2013 30635).
5
ненного цикла аналогично тому, как представлено в учебном пособии «Разработка программного продукта. Профессиональные стандарты, жизненный цикл, командная работа»
4
для организации самостоятель-
ной индивидуальной и коллективной работы обучающихся в первом семестре.
Основными этапами решения задач в профессиональной деятель­ности «Разработка программного обеспечения» являются: постановка задачи, формирование тестовых данных, проектирование архитектуры программы, разработка интерфейса и программная реализация, отлад­ка и тестирование, а также подготовка сопровождающей документа­ции. Для каждого из
этапов на основе внешних требований (професси­онального стандарта) сформулированы цели обучающихся в терминах «уметь» и «знать».
В соответствии с функциональной картой вида профессиональной деятельности для 3-го (нижнего, начального) уровня квалификации (возможные наименования должностей – «младший программист» и «техник-программист») в табл. 1.1 представлены трудовые функции и сформулированы цели обучающихся для обобщенной трудовой функции «Разработка и отладка программного кода».
Для следующего, 4-го уровня квалификации (должность «програм­мист») в табл. 1.2 представлены трудовые функции и сформулированы цели обучающихся для обобщенной трудовой функции «Проверка ра-
ботоспособности и рефакторинг кода программного обеспечения».
Трудовая деятельность рассмотренных нижних уровней квалифи­кации относится к этапу кодирования, отладки и тестирования про
-
граммного продукта. На 6-м уровне квалификации (возможные наименования должностей – «ведущий программист» и «ведущий инженер-программист») профессиональная деятельность направлена на анализ предметной области и проектирование архитектуры программных систем. В табл. 1.3 представлены трудовая функция и сформулированы цели обучающихся для обобщенной трудовой функции «Разработка требований и проектирование программного обеспечения».

4
Лауферман О. В. Разработка программного продукта. Профессиональ-
ные стандарты, жизненный цикл, командная работа: учебное пособие / О. В. Лауферман, Н. И. Лыгина. Новосибирск: НГТУ, 2019. 75 с.
6
;
Таблица 1.1
Уметь:
описывать задачу в терминах
ее предметной области
создавать модель реального
процесса;
описывать объекты и связи
между ними;
определять математическую
модель для построения алго-
ритма
Знать:
средства визуализации, со-
хранения и документирования
принимаемых решений
7
Трудовая функция
Методы и приемы алгоритмиза-
нальных спецификаций
задач
Необходимые знания
Методы и приемы формализации
Языки формализации функцио-
ции поставленных задач
Нотации и программные продук-
ты для графического отображения
алгоритмов
Алгоритмы решения типовых за-
дач, области и способы их приме-
нения
Формализация и алгоритмизация поставленных задач (A/01.3)*
Трудовые действия
тых в организации нормативных документов
Составление формализованных описаний решений поставленных задач
в соответствии с требованиями технического задания или других приня-
Разработка алгоритмов решения поставленных задач в соответствии с
требованиями технического задания или других принятых в организации
Необходимые умения
нормативных документов
Использовать методы и приемы
Использовать методы и приемы
алгоритмизации поставленных за-
формализации задач
дач
Использовать программные про-
дукты для графического отображе-
ритмы в соответствующих областях
ния алгоритмов
Применять стандартные алго-
7
Окончание табл. 1.1
, предоставляемые
сов;
области видимости;
Уметь:
моделировать данные на уровне
определять внешние интерфей-
использовать библиотеки клас-
сы классов и объектов;
использовать возможности оп-
тимизации кода
шаблоны классов
компиляторами;
создавать шаблоны функций и
8
Трудовая функция
рования данными (A/02.3)
мирования
Методологии разработки про-
граммирования, особенности про-
граммирования на этом языке, стан-
Необходимые знания
Синтаксис выбранного языка про-
дартные библиотеки языка програм-
граммного обеспечения
Особенности выбранной среды
Технологии программирования
ческих архитектур, существующие
приложения и интерфейсы взаимо-
программирования
Компоненты программно-техни-
действия с ними
Шифр трудовой функции из профессионального стандарта 06.001 «Программист».
*
Написание программного кода с использованием языков программирования, определения и манипули-
Трудовые действия
Создание программного кода в соответствии с техническим задани-
ем (готовыми спецификациями)
ванных программных средств
Оптимизация программного кода с использованием специализиро-
Необходимые умения
Применять выбранные языки
Использовать выбранную сре-
ду программирования и сред-
программирования для написа-
ния программного кода
данных
ства системы управления базами
8
Таблица 1.2
ф
р
р
р
у
р
Н
у
Н
р
р
З
Н
р
р
Н
р
р
ебованиями (A/03.3)
нать:
рования элементов: определе-
ние единиц тестирования, тес-
тирование наследования, тес-
тирование полиморфизма
модифицируемые программ-
ные системы;
разрабатывать сопроводи-
тельную документацию в со-
Уметь:
разрабатывать хорошо
структурированные, надежные,
ответствии с требованиями
стандартов
Знать:
возможности используемой
системы контроля версий
и вспомогательных инстру-
ментальных программных
средств
основные показатели тести-
ов данных
становленными т
ов данных (B/02.4)
соответствии с уста-
еобходимые знания
Инструментарий для
Трудовая функция
грамм
Методы повышения
читаемости программного
исходных текстов про-
создания и актуализации
кода
Трудовая функция
еобходимые знания
ов и тестовых набо
Методы создания и докумен-
тирования контрольных приме-
9
аботка тестовых набо
Раз
ментации
аммного кода в соответствии с
ог
аммного обеспечения
мление п о
ог
О
данных и файлов в соответствие с установленными в организации требо-
Трудовые действия
Приведение наименований переменных, функций, классов, структур
с установленными в организации требованиями
Комментирование и разметка программного кода в соответствии
ваниями
Структурирование исходного программного кода в соответствии
с установленными в организации требованиями
еобходимые умения
Форматирование исходного программного кода в
новленными в организации требованиями
деляющие требования к оформлению про-
граммного кода
Применять инструментарий для создания
Применять нормативные документы, опре-
и актуализации исходных текстов программ
Применять имеющиеся шаблоны для со-
ставления технической док
Трудовые действия
еобходимые умения
Подготовка тестовых наборов данных в соответствии с выбранной ме-
тодикой
собности п
ных примеров для проверки работоспо-
Разработка и оформление контроль-
9
р
ф
р
р
р
Н
Н
Окончание табл. 1.2
программного ко-
*
сованности и четкости
Уметь:
интеграционное тестирова-
ние
системное тестирование
перестраивать програм-
Знать:
му для улучшения ее согла-
зуемого компилятора;
возможности конкретной
среды разработки и исполь-
да
основные методы рефак-
торинга
аммного кода (B/04.4)
ог
10
Трудовая функция
Правила, алгоритмы и техно-
логии создания тестовых набо-
ров данных
Требования к структуре и фор-
ов данных
матам хранения тестовых набо-
еобходимые знания
га и оптимизации программного
Методы и средства рефакторин-
кода
Языки программирования и сре-
ды разработки
Внутренние нормативные доку-
док отражения изменений в
менты, регламентирующие требо-
вания к программному коду, поря-
системе контроля версий
инг и оптимизация п
акто
Ре
собности программного обеспечения
стовых наборов данных с заданными
Разработка процедур генерации те-
емых в процессе проверки работоспо-
характеристиками
Подготовка наборов данных, использу-
Трудовые действия
Анализ программного кода на соответствие требованиям по читаемости и
производительности
еобходимые умения
факторинга и оптимизации
Внесение изменений в программный код и проверка его работоспособно-
Применять методы, средства для ре-
сти
граммным кодом
Публиковать результаты рефакторин-
га и оптимизации в коллективной базе
знаний в виде лучших практик
Применять инструментальные сред-
ства коллективной работы над про-
Использовать систему контроля вер-
* Svyatoslav Pankratov. Методы улучшения качества кода: рефакторинг // Техническая документация Майкрософт.
сий для регистрации произведенных
изменений
URL: https://social.msdn.microsoft.com/Forums/ru-ru/63d9ba19-491b-4e75-9796-6de5132e1a56/1052107710901086107610
99?forum=fordesktopru (дата обращения: 11.04.2022).
10
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]