Главная » Просмотр файлов » Гради Буч - Объектно-ориентированный анализ и проектирование с примерами приложений на С++

Гради Буч - Объектно-ориентированный анализ и проектирование с примерами приложений на С++ (1158635), страница 39

Файл №1158635 Гради Буч - Объектно-ориентированный анализ и проектирование с примерами приложений на С++ (Гради Буч - Объектно-ориентированный анализ и проектирование с примерами приложений на С++) 39 страницаГради Буч - Объектно-ориентированный анализ и проектирование с примерами приложений на С++ (1158635) страница 392019-09-18СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

При идентификации одного толькообъекта вам нужно придумать имена: для него, для его класса и для модуля, вкотором класс объявлен. Умножьте на тысячу объектов и сотни классов, и выпоймете, как остра проблема.Мы предлагаем следующие правила:•Объекты следует называть существительными: theSensor или shape.•Классы следует называть обобщенными существительными: Sensors,Shapes.•Операции-модификаторы следует называть активными глаголами: Draw,moveLeft.•У операций-селекторов в имя должен включаться запрос или формаглагола "to be": extentOf, isOpen.•Подчеркивание и использование заглавных букв - на ваше усмотрение,постарайтесь лишь не противоречить сами себе.Идентификация механизмовКак найти механизмы? В предыдущем обсуждении мы называлимеханизмами структуры, посредством которых объекты взаимодействуютдруг с другом и ведут себя так, как требуется.

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

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

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

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

Так, на нижнем конце своеобразнойбиологической пирамиды находятся идиомы. Это обороты, специфические дляязыков программирования или программистских культур, и отражающиеобщепринятые способы выражаться.25 Например, в CLOS не принятоиспользовать подчеркивание в именах функций или переменных, хотя в Adaэто дело обычное [59]. Изучая язык, приходится учить его идиомы, которыеобычно передаются в форме фольклора. Однако, как отметил Коплейн,идиомы играют важную роль в кодификации шаблонов низкого уровня.

Онзаметил, что "многие общепрограммистские действия идиоматичны" ипоэтому распознание таких идиом позволяет "использовать конструкции C++для выражения функциональности вне самого этого языка с сохранениемиллюзии, что они являются частью языка" [60].Место на верху пирамиды занимают среды разработки.

Средаразработки - это собрание классов, предназначенных для определеннойприкладной ситуации. Среда дает готовые классы, механизмы и услуги,которыми можно сразу пользоваться или приспосабливать для своих нужд.Если идиомы составляют часть программистской культуры, то средыразработки обычно - коммерческий продукт. Например, Apple MacApp и егопреемник Bedrock - среды, написанные на C++ и предназначенные дляпостроения приложений со стандартным интерфейсом пользователяMacintosh. Аналогичную роль для Windows играют Microsoft FoundationClasses и ObjectWindows корпорации Borland.25Определяющей характеристикой идиомы является то, что ее игнорирование илинарушение влечет немедленные социальные последствия: вы превращаетесь в йехуили, еще хуже, в чужака, не заслуживающего уважения.Примеры механизмов.

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

Smalltalk использует вариант этого механизма, названный парадигмойModel-View-Controller, модель-вид-контроллер (MVC) [61].Механизмы, таким образом, представляют уровень повторногоиспользования в проектировании, более высокий, чем повторноеиспользование индивидуальных классов. MVC, например, является основойинтерфейса пользователя в языке Smalltalk. Эта парадигма в свою очередьстроится на базе механизма зависимостей, который вложен в поведениебазового класса языка Smalltalk (класса object) и часто используетсябиблиотекой классов языка Smalltalk.Примеры механизмов можно найти во многих системах.

Структуруоперационной системы, например, можно описать на высоком уровнеабстракции по тем механизмам, которые используются для диспетчеризациипрограмм. Система может быть монолитной (как MS-DOS), иметь ядро(UNIX) или представлять собой иерархию процессов (операционная системаTHE) [62]. В системах искусственного интеллекта использованыразнообразные механизмы принятия решений. Одним из наиболеераспространенных является механизм рабочей области, в которую каждыйиндивидуальный источник знаний независимо заносит свои сведения.

В такоммеханизме не существует центрального контроля, но любое изменение врабочей области может явиться толчком для выработки системой нового путирешения поставленной задачи [63]. Коад похожим образом выявил ряд общихмеханизмов в объектно-ориентированных системах, включая шаблонывременных ассоциаций, протоколирование событий и широковещательнуюрассылку сообщений [64]. Во всех случаях эти механизмы проявляются не какиндивидуальные классы, а как структуры сотрудничающих классов.На этом завершается наше изучение классификации и понятий,являющихся основой объектно-ориентированного проектирования.Следующие три главы посвящены самому методу, в частности системеобозначений, процессу проектирования и рассмотрению практическихпримеров.Выводы•Идентификация классов и объектов - важнейшая задача объектноориентированного проектирования; процесс идентификации состоит изоткрытия и изобретения.•Классификация есть проблема группирования (кластеризации) объектов.•Классификация - процесс последовательных приближений; трудностиклассификации обусловлены в основном тем, что есть многоравноправных решений.•Есть три подхода к классификации: классическое распределение покатегориям (классификация по свойствам), концептуальнаякластеризация (классификация по понятиям) и теория прототипов(классификация по схожести с прототипом).•Метод сценариев - это мощное средство объектно-ориентированногоанализа, его можно использовать для других методов: классическогоанализа, анализа поведения и анализа предметной области.•Ключевые абстракции отражают словарь предметной области; их находятлибо в ней самой, либо изобретают в процессе проектирования.•Механизмы обозначают стратегические проектные решенияотносительно совместной деятельности объектов многих различныхтипов.Дополнительная литератураПроблема классификации вечна.

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

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

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