Главная » Просмотр файлов » 246071-Либерти-Освой-самостоятельно-С-за-21-день

246071-Либерти-Освой-самостоятельно-С-за-21-день (852741), страница 95

Файл №852741 246071-Либерти-Освой-самостоятельно-С-за-21-день (Освой С++ самостоятельно за 1 день. Книга) 95 страница246071-Либерти-Освой-самостоятельно-С-за-21-день (852741) страница 952021-10-05СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 95)

Поэтому в программе можно легко манипулировать множествомтипов,несоздаваяклассдлякаждогоновоготипа.Обычно в программах на C++ использование силовых классов реализуется с помощьюуказателей. Так, в нашем примере класс Car (соответствующий классу проекта Автомобиль)будет содержать указатель на объект класса PerformanceCharacteristics (рис. 18.20). Если хотитепотренироваться,создайтесамостоятельносиловыеклассыдлядискриминаторовКузов(body)иДвигатель(engine).ClassCar:publicVehicle{public:Car();~Car();//другиеоткрытыеметодыопущеныprivate:PerformanceCharacteristics*pPerformance;};И наконец, силовые классы дают возможность создавать новые типы данных во времявыполненияпрограммы.Посколькукаждыйлогическийтипразличаетсятолькоатрибутамиассоциированныхснимсиловых классов, то эти атрибуты могут быть параметрами конструкторов данных силовыхклассов. Это означает, что можно во время выполнения программы создавать новые типыавтомобилей, изменяя установки атрибутов силовых классов.

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

рис. 18.11), рассмотрим теперь взаимодействиеклассовнаосновеопределенныхдлянихметодов,какпоказанонарис.18.21.Рис.18.19.ДискриминаторкаксиловойклассРис. 18.20. Отношение между объектом класса Автомобиль и связанным с ним силовымклассомРис.18.21.ДиаграммавзаимодействияклассовЭта простая диаграмма показывает взаимодействие между несколькими классами проектапри определенной ситуации использования программы. Предполагается, что класс ATMделегируетклассуРасчетныйсчетответственностьзаучетостаткаденегнасчете,втовремякакРасчетный счет делегирует классу ATM ответственность за доведение этой информациипользователю.Существуетдвавидадиаграммвзаимодействийклассов.Нарис.18.21показанадиаграммапоследовательности действий.

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

Такие средства, как Rational Rose, автоматически выполнят это заданиепослещелчканакнопке.Рис.18.22.ДиаграммасотрудничестваДиаграммыпереходовсостоянийПосле того как стали понятными взаимодействия между объектами, надо определитьразличные возможные состояния каждого из них. Моделировать переходы между различнымисостояниями можно в диаграмме состояний (или диаграмме переходов состояний). На рис.18.23 показаны различные состояния класса Расчетный счет при регистрации клиента всистеме.Каждая диаграмма состояний начинается с состояния Начало и заканчивается нулем илинекоторым другим концевым состоянием.

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

Особенно раздражает тотфакт, что отмена является исключительным состоянием, отвлекающим от анализа нормальныхпереходов между состояниями. Эту диаграмму можно упростить, используя сверхсостояние(рис.18.25).Диаграмманарис.18.25даеттужеинформацию,чтоинарис.18.24,нонамногояснееилегче для чтения.

В любой момент от начала регистрации и вплоть до ее завершения процессможноотменить.Есливыэтосделаете,товернетесьвсостояниеНезарегистрирован.Рис.18.23.ПереходысостоянийклассаРасчетныйсчетРис.18.24.ОтменарегистрацииРис.18.25.СверхсостояниеРезюмеНаэтомзанятиивобщихчертахрассмотренывопросыанализаипроектированияобъектноориентированных программ. Анализ состоит в определении ситуаций и сценариевиспользования программы, а проектирование заключается в определении классов имоделированииотношенийивзаимодействиямеждуними.Еще не так давно программист быстро набрасывал основные требования к программе иначиналиписатькод.Современныепрограммыотличаютсятем,чтоработанадниминикогданезаканчивается, если только проект не оказался нежизнеспособным и не был отвергнут.Тщательное планирование проекта в начале гарантирует возможность быстрой ибезболезненноймодернизацииеговбудушем.На следующих занятиях рассматриваются средства реализации спланированных проектов.Вопросы тестирования и маркетинга программных продуктов выходят за пределы этой книги,хотяприсоставлениибизнес-планаихникакнельзяупускать.ВопросыиответыЧем объектно-ориентированный анализ и проектирование фундаментально отличаются отдругихподходов?До разработки объектно-ориентированной технологии аналитики и программисты былисклонны думать о программах как о группах функций, работающих с данными.

Объектноориентированное программирование рассматривает интегрированные данные и функции каксамостоятельныеединицы,содержащиевсебеиданные,иметодыманипулированияими.Припроцедурном программирование внимание сконцентрировано на функциях и их работе сданными.Говорят,чтопрограммынаPascalиС—коллекциипроцедур,апрограммынаC++—коллекцииклассов.Является ли объектно-ориентированное программирование той палочкой-выручалочкой,котораярешитвсепроблемыпрограммирования?Нет,этогоникогдаинеждали.Однаконасовременномуровнетребованиякпрограммнымпродуктам объектно-ориентированные анализ, проектирование и программированиеобеспечивают программистов средствами, которые не могло предоставить процедурноепрограммирование.ЯвляетсялиC++совершеннымобъектно-ориентированнымязыком?C++, если сравнивать его с другими альтернативными объектно-ориентированнымиязыками программирования, имеет множество преимуществ и недостатков. Но одно избезусловных преимуществ состоит в том, что это самый популярный объектноориентированный язык программирования на Земле.

Откровенно говоря, большинствопрограммистов решают работать на C++ не после изнурительного анализа альтернативныхобъектно-ориентированных языков. Они идут туда, где происходят основные события, а в 90-хосновные события в мире программирования связаны с C++. Тому есть веские причины.Конечно,C++можетмногоепредложитьпрограммисту,ноэтакнигасуществует—ибьюсьобзаклад, что вы читаете ее, — из-за того, что C++ выбран в качестве языка разработки в оченьмногихкрупныхкорпорациях,такихкакMicrosoft.КоллоквиумВэтомразделепредлагаютсявопросыдлясамоконтроляиукрепленияполученныхзнаний,атакжерядупражнений,которыепомогутзакрепитьвашипрактическиенавыки.Попытайтесьсамостоятельно ответить на вопросы теста и выполнить задания, а потом сверьте полученныерезультатысответамивприложенииГ.Неприступайтекизучениюматериаласледующейглавы,еслидлявасосталисьнеяснымихотябынекоторыеизпредложенныхнижевопросов.Контрольныевопросы1.Какаяразницамеждуобъектно-ориентированнымипроцедурнымпрограммированием?2.Каковыэтапыобъектно-ориентированногоанализаипроектирования?3.Каксвязанныдиаграммыпоследовательностиисотрудничества?Упражнения1.

Предположим, что есть две пересекающиеся улицы с двусторонним движением,светофорами и пешеходными переходами. Нужно создать виртуальную модель, чтобыопределить, позволит ли изменение частоты подачи сигнала светофора сделать дорожноедвижениеболееравномерным.2.Какиеобъектыикакиеклассыпотребуютсядляимитацииэтойситуации?3. Усложним ситуацию из упражнения 1. Предположим, что есть три вида водителей:таксисты, переезжающие переход на красный свет; иногородние, которые едут медленно иосторожно; и частники, которые ведут машины по-разному, в зависимости от представлений освоей"крутизне".4. Также есть два вида пешеходов: местные, которые переходят улицу, где имзаблагорассудится,итуристы,которыепереходятулицутольконазеленыйсвет.5.

А кроме того, есть еще велосипедисты, которые ведут себя то как пешеходы, то какводители.6.Какэтисоображенияизменятмодель?7. Вам заказали программу планирования времени конференций и встреч, а такжебронирования мест в гостинице для визитеров компании и для участников конференций.Определитеглавныеподсистемы.8.Спроектируйтеинтерфейсыкклассамтойчастипрограммы,обсуждаемойвупражнении3,котораяотноситсякрезервированиюгостиничныхномеров.День19-й.ШаблоныУ программистов, использующих язык C++, появился новый мощный инструмент —"параметризованные типы", или шаблоны. Шаблонами настолько удобно пользоваться, чтостандартная библиотека шаблонов (Standard Template Library — STL) бьша принята в составопределенийязыкаC++.Итак,сегоднявыузнаете:•Чтотакоешаблоныикакихиспользовать•Каксоздатьклассшаблонов•Каксоздаютсяшаблоныфункций•Чтопредставляетсобойстандартнаябиблиотекашаблонов(STL)икакеюпользоватьсяЧтотакоешаблоныПри подведении итогов за вторую неделю обучения вы узнали, как построить объектPartsList и как его использовать для создания объекта PartsCatalog.

Если же вы хотитевоспользоватьсяобъектомPartsList,чтобысоставить,например,списоккошек,увасвозникнетпроблема:объектPartsListзнаеттолькоозапчастях.Чтобырешитьэтупроблему,можносоздатьбазовыйклассListипроизвестиизнегоклассыPartsList и CatsList. Затем можно вырезать и вставить существенную часть класса PartsList вобъявлениеновогоклассаCatsList.Ачерезнеделю,когдавызахотитесоставитьсписокобъектовCar,вампридетсяопятьсоздаватьновыйклассиснова"вырезатьивставлять".Очевидно, что это неприемлемое решение.

Ведь через какое-то время класс List и егопроизводные классы придется расширять. А работа, которую пришлось бы проделать, чтобыубедиться в том, что все изменения, коснувшиеся базового класса, распространены и на всесвязанныеклассы,превратиласьбывнастоящийкошмар.Благодаряшаблонам,этапроблемалегкорешается,аспринятиемстандартаANSIшаблонысталинеотъемлемойчастьюязыкаC++,подобнокоторомуонисохраняюттипиоченьгибки.ПараметризованныетипыС помошью шаблонов можно "научить" компилятор составлять список элементов любоготипа, а не только заданного: PartsList — это список частей, CatsList — это список кошек.Единственноеотличиемеждуними—типэлементовсписка.Прииспользованиишаблоновтипэлементовспискастановитсяпараметромдляопределениякласса.Обшим компонентом практически всех библиотек C++ является класс массивов.

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

Характеристики

Тип файла
PDF-файл
Размер
5,25 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6375
Авторов
на СтудИзбе
309
Средний доход
с одного платного файла
Обучение Подробнее