Программирование
<<  Основы программирования в Lazarus Программирование в компьютерных системах (230115)  >>
Программирование в C++
Программирование в C++
ТРПП (технология разработки программного продукта)
ТРПП (технология разработки программного продукта)
Разработка объектно-ориентированного ПО
Разработка объектно-ориентированного ПО
Эволюция процесса создания программного обеспечения
Эволюция процесса создания программного обеспечения
Эволюция процесса создания программного обеспечения
Эволюция процесса создания программного обеспечения
Эволюция процесса создания программного обеспечения
Эволюция процесса создания программного обеспечения
Эволюция процесса создания программного обеспечения
Эволюция процесса создания программного обеспечения
Моделирование вариантов использования
Моделирование вариантов использования
Действующие субъекты
Действующие субъекты
Варианты использования
Варианты использования
Сценарии
Сценарии
Диаграммы вариантов использования
Диаграммы вариантов использования
Диаграммы вариантов использования
Диаграммы вариантов использования
Описания вариантов использования
Описания вариантов использования
Описания вариантов использования
Описания вариантов использования
От вариантов использования к классам
От вариантов использования к классам
От вариантов использования к классам
От вариантов использования к классам
Предметная область программирования
Предметная область программирования
Рукописные формы
Рукописные формы
Рукописные формы
Рукописные формы
Рукописные формы
Рукописные формы
Допущения
Допущения
Программа LANDLORD: стадия развития
Программа LANDLORD: стадия развития
Действующие субъекты
Действующие субъекты
Варианты использования
Варианты использования
Описание вариантов использования
Описание вариантов использования
Описание вариантов использования
Описание вариантов использования
Описание вариантов использования
Описание вариантов использования
Сценарии
Сценарии
Диаграммы действий UML
Диаграммы действий UML
От вариантов использования к классам
От вариантов использования к классам
От вариантов использования к классам
От вариантов использования к классам
От вариантов использования к классам
От вариантов использования к классам
От вариантов использования к классам
От вариантов использования к классам
От вариантов использования к классам
От вариантов использования к классам
От глаголов к сообщениям
От глаголов к сообщениям
От глаголов к сообщениям
От глаголов к сообщениям
От глаголов к сообщениям
От глаголов к сообщениям
От глаголов к сообщениям
От глаголов к сообщениям
От глаголов к сообщениям
От глаголов к сообщениям
Диаграмма классов
Диаграмма классов
Диаграммы последовательностей
Диаграммы последовательностей
Диаграммы последовательностей
Диаграммы последовательностей
Диаграмма последовательностей для варианта использования Начать
Диаграмма последовательностей для варианта использования Начать
Диаграмма последовательностей для варианта использования Начать
Диаграмма последовательностей для варианта использования Начать
Диаграмма последовательностей для варианта использования Начать
Диаграмма последовательностей для варианта использования Начать
Диаграмма последовательностей для варианта использования Вывод списка
Диаграмма последовательностей для варианта использования Вывод списка
Диаграмма последовательностей для варианта использования Добавить
Диаграмма последовательностей для варианта использования Добавить
Диаграмма последовательностей для варианта использования Добавить
Диаграмма последовательностей для варианта использования Добавить
Написание кода
Написание кода
Заголовочный файл
Заголовочный файл
Листинг 1. Заголовочный файл к программе LANDLORD
Листинг 1. Заголовочный файл к программе LANDLORD
Объявления классов
Объявления классов
Описания атрибутов
Описания атрибутов
Составные значения (агрегаты)
Составные значения (агрегаты)
Составные значения (агрегаты)
Составные значения (агрегаты)
Исходные
Исходные
Листинг 2. Программа LORDAPP
Листинг 2. Программа LORDAPP
Листинг 3. Программа LANDLORD
Листинг 3. Программа LANDLORD
Вынужденные упрощения
Вынужденные упрощения
Взаимодействие с программой
Взаимодействие с программой
Взаимодействие с программой
Взаимодействие с программой
Взаимодействие с программой
Взаимодействие с программой
Взаимодействие с программой
Взаимодействие с программой
Взаимодействие с программой
Взаимодействие с программой
Взаимодействие с программой
Взаимодействие с программой
Взаимодействие с программой
Взаимодействие с программой
Заключение
Заключение
Резюме
Резюме
Резюме
Резюме
Наиболее «популярные» ошибки
Наиболее «популярные» ошибки
Литература
Литература
Конец
Конец

Презентация на тему: «Программирование в C++». Автор: Mir. Файл: «Программирование в C++.pptx». Размер zip-архива: 524 КБ.

Программирование в C++

содержание презентации «Программирование в C++.pptx»
СлайдТекст
1 Программирование в C++

Программирование в C++

Преподаватель Колотова Людмила Павловна

2 ТРПП (технология разработки программного продукта)

ТРПП (технология разработки программного продукта)

Разработка объектно-ориентированного ПО Эволюция процесса создания программного обеспечения Моделирование вариантов использования Предметная область программирования Программа LANDLORD: стадия развития От вариантов использования к классам Написание кода Взаимодействие с программой

2

3 Разработка объектно-ориентированного ПО

Разработка объектно-ориентированного ПО

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

3

4 Эволюция процесса создания программного обеспечения

Эволюция процесса создания программного обеспечения

Развитие формализации процесса разработки ПО. Стихийное программирование. Программист обсуждал программу с потенциальными пользователями и сразу же бросался писать код. Это было, впрочем, вполне приемлемо для небольших программ. Каскадный процесс. Процесс разработки ПО стали разбивать на несколько этапов, выполняемых последова- тельно: анализ, планирование, кодирование и внедрение. Процесс всегда шел в одном направлении — от анализа к внедрению. Ока- зывалось в итоге, что к моменту написания программа уже просто устаревала. Объектно-ориентированное программирование. ООП создава-лось для решения больших программ и соответствовали объектам реального мира. ООП применимо после того, как определены цели и задачи проекта. Начальная фаза выяснение требований заказчика и нужд потенциальных пользователей. Далее планирование ООП.

4

5 Эволюция процесса создания программного обеспечения

Эволюция процесса создания программного обеспечения

Современные подходы. Они определяют последовательность действий и способы взаимодействия заказчиков, постановщиков задач, разработчиков и программистов. На сегодняшний день ни один язык моделирования не обладает той универсальностью, каковая присуща UML. В качестве примера современного метода разработки ПО рассмотрим основные черты подхода, которому мы дадим название Унифицированный процесс.

5

6 Эволюция процесса создания программного обеспечения

Эволюция процесса создания программного обеспечения

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

6

7 Эволюция процесса создания программного обеспечения

Эволюция процесса создания программного обеспечения

Целью итерации является создание работающей части системы. В отличие от водопадного, унифицированный процесс дает возмож-ность вернуться на более ранние стадии разработки. Например, замечания, сделанные пользователями на стадии передачи, должны быть учтены, что приводит к пересмотру фазы построения и, возможно, фазы развития. Следует отметить, что рассматривае-мая концепция Унифицированного процесса может быть применена к любым типам программной архитектуры, а не только к проектам, в которых используются объектно-ориентированные языки. На самом деле, наверное, как раз слабой стороной этого подхода является не очень-то активное использование ООП. Фаза развития обычно за основу берет технологию вариантов использования (use case). Это отправная точка детальной разработки системы. По этой причине Унифицированный процесс называют прецедентным. Далее мы обсудим эту технологию, а затем применим ее к проекту, взятому нами в качестве примера.

7

8 Моделирование вариантов использования

Моделирование вариантов использования

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

8

9 Действующие субъекты

Действующие субъекты

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

9

10 Варианты использования

Варианты использования

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

10

11 Сценарии

Сценарии

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

11

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

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

С помощью UML можно строить диаграммы вариантов использования Действующие субъекты представляются человечками, варианты ис-пользования – эллипсами. Прямоугольная рамка окружает все вари-анты использования, оставляя за своими пределами действующих субъектов. Этот прямоугольник назы- вается границей системы. То, что нахо- дится внутри, – ПО, которое разработ- чик создает. На диаграмме линии, назы- ваемые ассоциациями, соединяют дей- ствующие субъекты с их вариантами использования. В общем случае ассо- циации не являются направленными, и на линиях отсутствуют стрелочки, но можно их вставить для того, чтобы наглядно показать тот действующий субъект, который является инициато- ром варианта использования.

12

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

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

Будем предполагать, что книжный магазин — это часть торговой сети, и бухгалтерия, и подобные функции выполняются в центральном офисе. Служащие магазина записывают покупку каждой книги и запрашивают информацию о наличии товара и его местонахождении. Менеджер может просмотреть данные о том, какие книги проданы, и заказать в издательстве еще неко-торое количество экземпляров. Действующими субъектами системы являются Продавец, Консультант, Менеджер и Система центрального офиса. Вариантами использования являются Регистрация продажи, Поиск книги, Заказ книги, Просмотр данных о реализации книг и Запрос данных о реализации книг.

13

14 Описания вариантов использования

Описания вариантов использования

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

14

15 Описания вариантов использования

Описания вариантов использования

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

15

16 От вариантов использования к классам

От вариантов использования к классам

Когда определены все действующие субъекты и варианты использо-вания, процесс разработки плавно переходит из фазы развития в фазу построения программы. Это означает, что наметилась тенден-ция некого сдвига в сторону разработчиков от пользователей. С этого момента их тесное сотрудничество прекращается, поскольку они начинают говорить на разных языках. Первой проблемой является создание и развитие классов, которые будут входить в программу. Одним из подходов к именованию клас-сов является использование имен существительных, встречающихся в кратких описаниях вариантов использования. Мы хотим, чтобы объекты классов программы соответствовали объектам реального мира, и эти существительные как раз являются именами тех сущнос-тей, которые указал нам заказчик. Они являются кандидатами в классы, но, право слово, не из всех существительных могут полу-читься приемлемые классы.

16

17 От вариантов использования к классам

От вариантов использования к классам

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

17

18 Предметная область программирования

Предметная область программирования

Стадия Начало

Программа, которую мы будем создавать в нашем примере, назы-вается LANDLORD (Домовладелец). Необходимо представить себе те данные, с которыми домовладельцу приходится работать: плата за жилье и расходы. Вот такой незамысловатый бизнес. Его мы и будем описывать в нашей программе. Представьте, что вы являе-тесь независимым экспертом по домовладельцам и C++, и к вам пришел заказчик Печкин. Печкин – мелкий собственник, в его веде-нии находится здание, состоящее из 12 комнат, которые он сдает. Он хочет, чтобы вы написали программу, которая упростила бы его нелегкий труд по регистрации данных и распечатыванию отчетов о своей финансовой деятельности. Если вы сможете договориться с Печкиным о цене, сроках и общем предназначении программы, можете считать, что вы включились в процесс разработки ПО.

18

19 Рукописные формы

Рукописные формы

Стадия Начало

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

19

20 Рукописные формы

Рукописные формы

Стадия Начало

3. В таблице Расходы записаны исходящие платежи. Она напомина- ет чековую книжку и содержит такие столбцы: дата, получатель (компания или человек, на чье имя выписывается чек) и сумма платежа. Кроме того, есть столбец, в который Печкин вносит виды или категории пла-тежей: закладная, ремонт, коммунальные услуги, налоги, страховка. 4. В годовом отчете используется информация как из таблицы доходов, так и из таблицы расходов для под- счета сумм, пришедших за год от клиентов и запла- ченных в процессе ведения бизнеса. Суммируются все прибыли от всех жильцов за все месяцы. Также суммируются все расходы и записываются в соответ- ствии с бюджетными категориями. Наконец, из дохо- дов вычитаются расходы, в результате чего получает- ся значение чистой годовой прибыли (или убытка).

20

21 Рукописные формы

Рукописные формы

Стадия Начало

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

21

22 Допущения

Допущения

Стадия Начало

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

22

23 Программа LANDLORD: стадия развития

Программа LANDLORD: стадия развития

Стадия Развития

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

23

24 Действующие субъекты

Действующие субъекты

Стадия Развития

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

24

25 Варианты использования

Варианты использования

Стадия Развития

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

возникнуть при работе нашей програм-мы. Варианты использования отображе-ны на диаграмме. Домовладельцу потре-буется выполнять следующие действия: 1. начать работу с программой; 2. доба-вить нового жильца в список; 3. ввести значение арендной платы в таблицу доходов от аренды; 4. ввести значение в таблицу расходов; 5. вывести список жильцов; 6. вывести таблицу доходов от аренды; 7. вывести таблицу расходов; 8. вывести годовой отчет.

25

26 Описание вариантов использования

Описание вариантов использования

Стадия Развития

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

26

27 Описание вариантов использования

Описание вариантов использования

Стадия Развития

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

27

28 Описание вариантов использования

Описание вариантов использования

Стадия Развития

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

28

29 Сценарии

Сценарии

Стадия Развития

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

29

30 Диаграммы действий UML

Диаграммы действий UML

Стадия Развития

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

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

30

31 От вариантов использования к классам

От вариантов использования к классам

Стадия Построения

Фаза построения начинается тогда, когда мы переходим к планиро-ванию структуры программы. Выберем классы. Для этого просмот-рим список существительных из описаний вариантов использования. Список существительных (см. описания вариантов использования) 1. Экран интерфейса пользователя. 2. Жилец. 3. Экран ввода жильцов. 4. Имя жильца. 5. Номер комнаты. 6. Строка жильца. 7. Список жильцов. 8. Арендная плата. 9. Экран ввода арендной платы. 10. Месяц. 11. Сумма арендной платы. 12. Таблица доходов от аренды. 13. Строка арендной платы.

31

32 От вариантов использования к классам

От вариантов использования к классам

Стадия Построения

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

1. Экран интерфейса пользователя. 2. Жилец. 3. Экран ввода жильцов. 4. Имя жильца. 5. Номер комнаты. 6. Строка жильца. 7. Список жильцов. 8. Арендная плата. 9. Экран ввода арендной платы. 10. Месяц. 11. Сумма арендной платы. 12. Таблица доходов от аренды. 13. Строка арендной платы.

14. Расход. 15. Экран ввода расходов. 16. Получатель. 17. Размер платежа. 18. День. 19. Бюджетная категория. 20. Строка в таблице расходов. 21. Таблица расходов. 22. Годовой отчет. 23. Суммарная арендная плата. 24. Суммарные расходы по категориям 25. Баланс.

32

33 От вариантов использования к классам

От вариантов использования к классам

Стадия Построения

Уточнение списка По различным причинам многие существительные не смогут стать классами. Давайте произведем отбор только тех, которые могут претендовать на это высокое звание. Мы выписали названия строк различных таблиц: строка жильцов, строка арендной платы, строка расходов. Иногда из строк могут получаться замеча-тельные классы, если они составные или содержат сложные данные. Но каждая строка таблицы жильцов содержит данные только об одном жильце, каждая строка в таблице расходов — только об одном платеже. Классы жильцов и расходов уже существуют, поэтому мы осмелимся предположить, что нам не нужны два класса с одинаковы-ми данными, то есть мы не будем рассматривать строки жильцов и расходов в качестве претендентов на классы.

33

34 От вариантов использования к классам

От вариантов использования к классам

Стадия Построения

Уточнение списка Строка арендной платы, с другой стороны, содержит сведения о номере комнаты и массив из 12 платежей за аренду по месяцам. Она отсутствует в таблице до тех пор, пока не будет сделан первый взнос в текущем году. Последующие платежи вносятся в уже существующие строки. Это ситуация более сложная, чем с жильцами и расходами, поэтому, так и быть, сделаем строку арендной платы классом. Тогда класс арендной платы как таковой не будет содержать ничего, кроме суммы платежа, поэтому это существительное превращать в класс мы не станем. Программа может порождать значения в годовом отчете из таблицы арендной платы и таблицы расходов, поэтому, наверное, не стоит сумму арендных платежей, а также суммарные расходы по категориям и баланс делать отдельными классами. Они являются просто результатами вычислений.

34

35 От вариантов использования к классам

От вариантов использования к классам

Стадия Построения

Итак, составим список классов, которые мы с вами придумали. 1. Экран пользовательского интерфейса. 2. Жилец. 3. Экран ввода жильцов. 4. Список жильцов. 5. Экран ввода арендной платы. 6. Таблица доходов от аренды. 7. Строка таблицы доходов от аренды. 8. Расход. 9. Экран ввода расходов. 10. Таблица расходов. 11. Годовой отчет.

Определение атрибутов Многие существительные, которым отказано в регистрации в кандидаты классов, будут кандидатами в атрибуты классов. Например, у класса Жильцы будут такие атрибуты: Имя жильца, Номер комнаты. У класса Расходы: Получатель, Месяц, День, Сумма, Бюджетная категория. Другие атрибуты определим далее.

35

36 От глаголов к сообщениям

От глаголов к сообщениям

Стадия Построения

Теперь посмотрим, что нам дают варианты использования для выяснения того, какими сообщениями будут обмениваться классы. Поскольку сообщение — это, по сути дела, вызов метода в объекте, то определение сообщений сводится к определению методов класса, принимающего то или иное сообщение. Как и в случае с существи-тельными, далеко не каждый глагол становится кандидатом в сооб-щения. Некоторые из них, вместо приема данных от пользователей, связываются с такими операциями, как вывод информации на экран, или с какими-либо еще действиями. В качестве примера рассмотрим описание варианта использования Вывести список жильцов. Курсивом выделены глаголы. Программа выводит на экран список жильцов, каждая строка списка состоит из двух полей: номер комнаты и имя жильца. Под словом «программа» мы на самом деле имеем в виду экран пользовательского интерфейса, следователь-но, слово «выводит» означает, что объект «экран пользовательского интерфейса» посылает сообщение объекту Список жильцов (то есть вызывает его метод).

36

37 От глаголов к сообщениям

От глаголов к сообщениям

Стадия Построения

В сообщении содержится указание вывести самого себя на экран. Несложно догадаться, что метод может называться, например, display(). Глагол «состоит» не относится ни к какому сообщению. Он просто примерно определяет состав строки объекта Список жильцов. Рассмотрим более сложный пример: вариант использова-ния Добавить нового жильца: На экране должно отобразиться сообщение, в котором программа просит пользователя ввести имя жильца и номер комнаты. Эта информация должна заноситься в таблицу. Лист автоматически сортируется по номерам комнат. Глагол «отобразиться» в данном случае будет обозначать следую-щее. Экран пользовательского интерфейса должен послать сообще-ние классу «экран ввода жильцов», приказывая ему вывести себя и получить данные от пользователя. Это сообщение может быть вызо-вом метода класса с именем, например getTenant(). Глаголы «про-сит» и «ввести» относятся к взаимодействию класса «экран ввода жильцов» с пользователем. Они не становятся сообщениями в объектном смысле.

37

38 От глаголов к сообщениям

От глаголов к сообщениям

Стадия Построения

Просто-напросто getTenant() выводит приглашение и записывает ответы пользователя (имя жильца и номер комнаты). Глагол «заноситься» означает, что объект класса Экран ввода жильцов посылает сообщение объекту класса Список жильцов. Возможно, в качестве аргумента используется новый объект класса Жильцы. Объект Список жильцов может затем вставить этот новый объект в свой список. Эта функция может иметь имя типа insertTenant(). Глагол «сортируется» — это никакое не сообщение и вообще не вид взаимодействия объектов. Это просто описание списка жильцов.

38

39 От глаголов к сообщениям

От глаголов к сообщениям

Стадия Построения

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

39

40 От глаголов к сообщениям

От глаголов к сообщениям

Стадия Построения

Например, нигде не говорится о создании объекта Жилец. Тем не менее, наверное, понятно, что Список Жильцов содержит объекты типа Жилец, а последние должны быть созданы до их внесения в список. Итак, системный инженер решает, что метод getTenant() класса «экран ввода жильцов» — это подходящее место для создания объекта Жилец, вставляемого в список жильцов. Все прочие варианты использования должны быть проанализированы аналогичным образом, чтобы можно было создать основу для связывания классов. Обратите внимание, что мы все еще используем имена классов, совпадающие со словами или словосочетаниями вариантов использования. Когда мы начнем писать код, нам, конечно, придется переименовать их во что-либо более приемлемое (имена должны состоять из одного слова).

40

41 Диаграмма классов

Диаграмма классов

Стадия Построения

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

41

42 Диаграммы последовательностей

Диаграммы последовательностей

Стадия Построения

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

42

43 Диаграммы последовательностей

Диаграммы последовательностей

Стадия Построения

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

43

44 Диаграмма последовательностей для варианта использования Начать

Диаграмма последовательностей для варианта использования Начать

программу

Стадия Построения

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

44

45 Диаграмма последовательностей для варианта использования Начать

Диаграмма последовательностей для варианта использования Начать

программу

Стадия Построения

Допустим, программа создает единственный объект класса под названием theUserInterface. Именно этот объект порождает все варианты использования. Он появляется слева на диаграмме после-довательностей. (Как видите, мы на этом этапе уже перешли к нор-мальным именам классов, принятым при написании кода.) Когда вступает в работу объект theUserInterface, первое, что он делает, он создает три основные структуры данных в программе. Это объекты классов TenantList, rentRecord и ExpenceRecord. Получается, что они рождаются безымянными, так как для их создания используется new. Имена имеют только указатели на них. Как же нам их назвать? К счастью, как мы убедились на примере объектных диаграмм, UML предоставляет несколько способов именования объектов. Если на-стоящее имя неизвестно, можно использовать вместо него двоето-чие с именем класса (:tenantList). На диаграмме подчеркивание имени и двоеточие перед ним напоминает о том, что мы имеем дело с объектом, а не с классом.

45

46 Диаграмма последовательностей для варианта использования Начать

Диаграмма последовательностей для варианта использования Начать

программу

Стадия Построения

Вертикальная позиция прямоугольника с именем объекта указывает на тот момент времени, когда объект был создан (первым создается объект класса tenantList). Все объекты, которые вы видите на диа-грамме, продолжают существовать все время, пока программа стоит на исполнении. Шкала времени, строго говоря, рисуется не в масшта-бе – она предназначена только лишь для того, чтобы показать взаи-мосвязь различных событий. Горизонтальные линии представляют собой сообщения (то есть вызовы методов). Сплошная стрелочка го-ворит о нормальном синхронном вызове функции. Прямоугольник, расположенный под theUserInterface, называется блоком активнос-ти (или центром управления). Он показывает, что расположенный над ним объект является активным. В обычной процедурной програм-ме, такой, как наша (LANDLORD), «активный» означает, что метод данного объекта либо исполняется сам, либо вызвал на исполнение другую функцию, которая еще не завершила свою работу. Три других объекта на этой диаграмме не являются активными, потому что theUserInterface еще не послал им активизирующих сообщений.

46

47 Диаграмма последовательностей для варианта использования Вывод списка

Диаграмма последовательностей для варианта использования Вывод списка

жильцов

Стадия Построения

Возвращения значений функ-циями показаны прерывис-тыми линиями. Обратите внимание: объекты активны только тогда, когда вызван какой-либо их метод. Сверху над линией сообщения мо-жет быть указано имя вызы-ваемого метода. Объект theUserInterface дает зада-ние объекту tenantList вы-вести себя на экран, а тот, в свою очередь, выводит все объекты класса tenant. Фра-за в квадратных скобках [для всех объектов tenant] сооб-щает условие повторения.

47

48 Диаграмма последовательностей для варианта использования Добавить

Диаграмма последовательностей для варианта использования Добавить

нового жильца

Стадия Построения

Сюда мы включили самого домовладельца в виде объек-та, который определяет раз-личные действия. У него есть свой собственный блок актив-ности. С помощью этого объе-кта можно очень хорошо по-казать процесс взаимодей-ствия пользователя с про-граммой. Пользователь сооб-щает программе, что он же-лает добавить нового жильца. Объект theUserInterface создает новый объект класса tenantInputScreen.

48

49 Диаграмма последовательностей для варианта использования Добавить

Диаграмма последовательностей для варианта использования Добавить

нового жильца

Стадия Построения

Объект theUserInterface создает новый объект класса tenantInputScreen. В этом объекте есть методы, позволяющие получить от пользователя данные о жильце, создать новый объект типа tenant и вызвать метод объекта класса tenantList для добавления в список вновь созданного жильца. Когда все это проделано, объект tenantInputScreen удаляется. Большая буква «X» в конце линии жизни tenantInputScreen говорит о том, что объект удален. Диаграммы последовательностей, примеры которых мы здесь привели, имеют дело только с главными сценариями каждого варианта использования. Существуют, конечно же, способы показать на диаграммах и несколько сценариев, но можно и для каждого сценария создать свою диаграмму.

49

50 Написание кода

Написание кода

Стадия Построения –вторая часть

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

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

50

51 Заголовочный файл

Заголовочный файл

Стадия Построения –вторая часть

Мы добрались до написания таких родных и привычных файлов с кодами. Лучше всего начинать с заголовочного (.H) файла, в кото-ром следует определить только интерфейсные части классов, но не подробности реализации. Как говорилось ранее, объявления в заголовочном файле – это общедоступная часть классов. Тела функций расположены в .cpp-файлах, называются реализацией и пользователям недоступны. Написание заголовочного файла – это промежуточный шаг между планированием и обыкновенным кодированием методов. Рассмотрим содержимое заголовочного файла LANDLORD.H.

51

52 Листинг 1. Заголовочный файл к программе LANDLORD

Листинг 1. Заголовочный файл к программе LANDLORD

Стадия Построения –вторая часть

52

53 Объявления классов

Объявления классов

Стадия Построения –вторая часть

Объявлять классы – это просто. Большинство объявлений вырастают напрямую из классов, созданных с помощью взятых из описаний вариантов использования существительных, и отображаются на диаграмме классов. Только лишь имена нужно сделать однословными из многословных. Например, имя Список жильцов (Tenant List) превращается в TenantList. В заголовочном файле было добавлено еще несколько вспомогательных классов. Впоследствии окажется, что мы храним указатели на объекты в разных типах контейнеров STL. Это означает, что мы должны сравнивать объекты этих контейнеров, как описано в главе «Стандартная библиотека шаблонов (STL)». Объектами сравнения на самом деле являются классы compareTenants, compareRows, compareDates и compareCategories.

53

54 Описания атрибутов

Описания атрибутов

Стадия Построения –вторая часть

Как уже было замечено выше, многие атрибуты (методы) для каждого из классов вырастают из тех существительных, которые сами не стали классами. Например, name и aptNumber стали атрибутами класса tenant. Прочие атрибуты могут быть выведены из ассоциаций в диаграмме классов. Ассоциации могут определять те атрибуты, которые являются указателями или ссылками на другие классы. Это объясняется невозможностью ассоциировать что-то с чем-то, что находится неизвестно где. Таким образом, у класса rentInputScreen появляются атрибуты ptrTenantList и ptrRentRecord.

54

55 Составные значения (агрегаты)

Составные значения (агрегаты)

Стадия Построения –вторая часть

Агрегатные связи показаны в трех местах на диаграмме классов. Обычно агрегаты выявляют те контейнеры, которые являются атрибутами агрегирующего класса (то есть «целого» класса, содержащего «части»). Ни по описаниям вариантов использова-ния, ни по диаграмме классов невозможно угадать, какого рода контейнеры должны использоваться для этих агрегатов. Вам как программистам придется самим всякий раз выбирать подходя-щий контейнер для каждого составного значения — будь то прос-той массив, контейнер STL или что-либо еще. В программе LANDLORD мы сделали такой выбор: класс tenantlist содержит STL-множество указателей на объекты класса tenant; класс rentRecord содержит множество указателей на объекты класса rentRow; класс expenseRecord содержит вектор указателей на объекты класса expense.

55

56 Составные значения (агрегаты)

Составные значения (агрегаты)

Стадия Построения –вторая часть

Для tenantlist и rentRecord мы выбрали множества, так как основным параметром является быстрый доступ к данным. Для expenseRecord выбран вектор, потому что нам важно осуществлять быструю сортировку и по дате, и по категории, а векторы позволяют сортировать данные наиболее эффективно. Во всех агрегатах мы предпочли хранить указатели вместо самих объектов, чтобы избежать излишнего копирования данных в памяти. Хранение самих объектов следует применять в тех случаях, когда объектов мало и они небольшие. Конечно, большой разницы в скорости на примере каких-то 12 экземпля-ров объекта мы не увидим, но в принципе об эффективности метода хранения данных следует задумываться всегда.

56

57 Исходные

Исходные

cpp файлы

Стадия Построения –вторая часть

В исходных файлах содержатся тела методов, которые были объявлены в заголовочном файле. Написание кода этих методов должно начинаться только на этом этапе разработки и ни шагом раньше, потому что только сейчас мы знаем имя каждой функции, ее предназначение и даже, возможно, можем предугадать аргументы, передаваемые ей. Мы разделили модули: main() храним в одном коротеньком файле LORDAPP.CPP, а определения функций, объявленных в заголовочном файле, — в другом. В секции main() создается объект userInterface и вызывается метод interact(). Приведем файл, в котором хранится main().

57

58 Листинг 2. Программа LORDAPP

Листинг 2. Программа LORDAPP

CPP

Стадия Построения –вторая часть

// Lordapp.Cpp // файл, поставляемый клиенту. #Include "landlord.H" int main() { userinterface theuserinterface; theuserinterface.Interact(); return 0; } ////////////////////конец файла lordapp.Cpp////////////////

58

59 Листинг 3. Программа LANDLORD

Листинг 3. Программа LANDLORD

CPP

Стадия Построения –вторая часть

59

60 Вынужденные упрощения

Вынужденные упрощения

Стадия Построения –вторая часть

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

60

61 Взаимодействие с программой

Взаимодействие с программой

Стадия Передача – внедрение

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

Нажмите 'i' для ввода данных. 'd' для вывода отчета 'q' для выхода: i Нажмите 't' для добавления жильца 'r' для записи арендной платы 'e' для записи расходов: t Введите имя жильца (Дядя Федор): Кот Матроскин Введите номер комнаты: 101

61

62 Взаимодействие с программой

Взаимодействие с программой

Стадия Передача – внедрение

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

Нажмите 'i' для ввода данных. 'd' для вывода отчета 'q' для выхода: d Нажмите 't' для вывода жильцов 'r' для вывода арендной платы 'e' для вывода расходов 'a' для вывода годового отчета: t Apt #Имя жильца ---------------- 101 Кот Матроскин 102 Пес Шарик 103 Дядя Федор 104 Корова Мурка 201 Птица Говорун

62

63 Взаимодействие с программой

Взаимодействие с программой

Стадия Передача – внедрение

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

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

Введите имя жильца: Пес Шарик Введите внесенную сумму (345.67): 595 Введите месяц оплаты (1 -12); 5

63

64 Взаимодействие с программой

Взаимодействие с программой

Стадия Передача – внедрение

Чтобы увидеть всю таблицу доходов от аренды помещений, нужно нажать «d», а затем «r». Вот каково состояние таблицы после внесения майской арендной платы:

Apt No Янв Фев Мар Апр Май Июн Июл Авг Сен Окт Ноя Дек ----------------------------------------------------- 101 695 695 695 695 695 0 0 0 0 0 0 0 102 595 595 595 595 595 0 0 0 0 0 0 0 103 810 810 825 825 825 0 0 0 0 0 0 0 104 645 645 645 645 645 0 0 0 0 0 0 0 201 720 720 720 720 720 0 0 0 0 0 0 0

Обратите внимание, оплата для дяди Федора с марта была увеличена.

64

65 Взаимодействие с программой

Взаимодействие с программой

Стадия Передача – внедрение

Чтобы ввести значения расходов, нужно нажать «i» и «e». Например:

Введите месяц: 1 Введите день: 15 Введите категорию расходов (Ремонт, Налоги): Коммунальные услуги Введите получателя (ПростоквашиноЭлектроСбыт): ПЭС Введите сумму платежа: 427.23

65

66 Взаимодействие с программой

Взаимодействие с программой

Стадия Передача – внедрение

Для вывода на экран таблицы расходов необходимо нажать «d» и «e». Ниже показано начало такой таблицы.

Дата Получатель Сумма Категория ..................................................... 714 1/3 УльтраМегаБанк 5187.30 Закладная 1/8 ПростоВодоканал 963.00 Коммунальные услуги 1/9 СуперСтрах 4840.00 Страховка 1/15 ПЭС 727.23 Коммунальные услуги 1/22 Хлам дяди Сэма 54.81 Снабжение 1/25 Подвал Мастерз 150.00 Ремонт 2/3 УльтраМегаБанк 5187.30 Закладная

66

67 Взаимодействие с программой

Взаимодействие с программой

Стадия Передача – внедрение

Наконец, для вывода годового отчета пользователь должен нажать «d» и «e». Посмотрим на отчет за первые пять месяцев года:

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

Годовой отчет -------------------------------------------------------------------------------------------------------- Доходы Арендная плата 42610.12 Расходы Закладная 25936.57 Коммунальные услуги 7636.15 Реклама 95.10 Ремонт 1554.90 Снабжение 887.22 Страховка 4840.00 Баланс 1660.18

67

68 Заключение

Заключение

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

68

69 Резюме

Резюме

Для простых программ при их разработке может быть достаточно метода проб и ошибок. Но при разработке крупных проектов требуется более организованный подход. В этой работе мы обсудили один из возможных методов. Унифицированный процесс состоит из следующих этапов: начало, развитие, построение и внедрение. Этап развития соответствует программному анализу, а построение — планированию структуры программы и написанию кода. В Унифицированном процессе используется прецедент-ный подход к разработке. Тщательно изучаются потен-циальные пользователи и их требования.

69

70 Резюме

Резюме

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

70

71 Наиболее «популярные» ошибки

Наиболее «популярные» ошибки

xxx.h: No such file or directory

Не найден заголовочный файл 'xxx.H' (неверно указано его имя, он удален или т.П.)

'xxx' undeclared (first use this function)

Функция или переменная 'xxx' неизвестна

missing terminating " character

Не закрыты кавычки "

expected ;

Нет точки с запятой в конце оператора в предыдущей строке

expected }

Не закрыта фигурная скобка

71

72 Литература

Литература

Роберт Лафоре. Объектно-ориентированное программирование в С++ (Глава 16) Л.Г. Гагарина, Е.В. Кокорева, Б.Д.Виснадул Технология разработки программного обеспечания

72

73 Конец

Конец

73

«Программирование в C++»
http://900igr.net/prezentacija/informatika/programmirovanie-v-c-216338.html
cсылка на страницу
Урок

Информатика

130 тем
Слайды