Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Объектно-ориентированный анализ и проектирование. Задачи и примеры на C++. Учебное пособие
.pdf
Министерство науки и высшего образования Российской Федерации
НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
Д. Н. ДОСТОВАЛОВ, О. В. ЛАУФЕРМАН
ОБЪЕКТНО-ОРИЕНТИРОВАННЫЙ
АНАЛИЗ И ПРОЕКТИРОВАНИЕ
ЗАДАЧИ И ПРИМЕРЫ
НА C++
Утверждено
Редакционно-издательским советом университета
в качестве учебного пособия
НОВОСИБИРСК
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
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
