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

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

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

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

В языкахObject Pascal, C++, CLOS и Ada существует понятие модуля как отдельнойязыковой конструкции. Решение о месте декларирования классов и объектов вэтих языках является компромиссом между требованиями видимости искрытия информации. В общем случае модули должны быть функциональносвязными внутри и слабо связанными друг с другом. При этом следуетучитывать ряд нетехнических факторов, таких, как повторное использование,безопасность, документирование. Проектирование модулей - не более простойпроцесс, чем проектирование классов и объектов. О скрытии информацииПарнас, Клеменс и Вейс говорят следующее: "Применение этого принципа невсегда очевидно. Принцип нацелен на минимизацию стоимости программныхсредств (в целом за время эксплуатации), для чего от проектировщикатребуется способность оценивать вероятность изменений.

Такие оценкиосновываются на практическом опыте и знаниях предметной области, включаяпонимание технологии программирования и аппаратных особенностей" [61].Выводы• Объект характеризуется состоянием, поведением и идентичностью.• Структура и поведение одинаковых объектов описывается в общемдля них классе.• Состояние объекта определяет его статические и динамическиесвойства.• Поведение объекта характеризуется изменением его состояния впроцессе взаимодействия (посредством передачи сообщений) с другимиобъектами.• Идентичность объекта - это его отличия от всех других объектов.• Иерархия объектов может строиться на принципах связи илиагрегации.• Множество объектов с одинаковой структурой и поведениемявляется классом.• Шесть типов иерархий классов включают: ассоциирование,наследование, агрегация, использование, инстанцирование иметаклассирование.• Классы и объекты, образующие словарь предметной области,называются ключевыми абстракциями.• Структура, объединяющая множество объектов и обеспечивающая ихсовместное целенаправленное функционирование, называется механизмом.• Качество абстракций измеряется их зацеплением, связностью,достаточностью, полнотой и примитивностью.Дополнительная литератураМакЛеннан (MacLennan) [G 1982] обсуждал различие междузначениями и объектами.

Работа Меиера (Меуег) Ц 1987] предлагаетконтрактный подход к программированию.По поводу иерархии классов было написано много, особое вниманиеуделялось наследованию и полиморфизму. Работы Альбано (Albano) [G 1983],Аллена (Allen) [A 1982], Брахмана (Brachman) (J 1983], Хайлперна и Нгуена(Hailpern and Nguyen) [G 1987], и Вегнера и Здоника (Wegner and Zdonik) [J1988] создали блестящее теоретическое обоснование всех основных вопросови концепций. Кук и Палсберг (Cook and Palsberg) U 1989] и Турецкий(Touretzky) [G 1986] дали формальное истолкование семантики наследования.Вирт (Wirth) [] 1987] предложил сходные решения для обобщенныхструктурных типов в Oberon. Ингалс (Ingalls) [G 1986] дал полезноеобсуждение вопроса множественного полиморфизма. Грогоно (Grogono) [G1989] изучает взаимодействие полиморфизма и проверки типов, а Пондер иБач (Ponder and Buch) [G 1992] предупреждают об опасностях безграничногополиморфизма.

Практические рекомендации по эффективному использованиюнаследования предложили Мейер (Меуег) [G 1988] и Халберд и О'Брайан(Halberd and O'Brien) [G 1988]. ЛаЛонд и Пух (LaLonde and Pugh) U 1985]изучали задачи обучения эффективному использованию специализации иобобщения.Природа ролей и обязанностей абстракции подробна рассмотрена вработе Рубина и Голд-берга (Rubin and Goldberg) [В 1992], а также ВирфсБрока, Вилкерсона и Винера (Wirfs-Brock, Wilkerson and Wiener) [F 1990].Качество классов рассматривал также Коад (Coad)[F1991].Мейер (Меуег) [G 1986] изучал связи между обобщенными функциямии наследованием применительно к языку Eiffel.

Страуструп (Stroustrup) [G1988] предложил механизм параметризованных типов в C++. Протоколметаобъектов в CLOS описали в деталях Кишалец, Ривьерес и Бобров(Kiczales, Rivieres, and Bobrow) [G 1991].Альтернативу иерархии, основанной на классах, предоставляетделегирование, использующее только экземпляры. Этот подход детальнорассмотрел Стейн (Stein) [G 1987].Глава 4КлассификацияКлассификация - средство упорядочения знаний. В объектно-ориентированном анализеопределение общих свойств объектов помогает найти общие ключевые абстракции имеханизмы, что в свою очередь приводит нас к более простой архитектуре системы.

Ксожалению, пока не разработаны строгие методы классификации и нет правила,позволяющего выделять классы и объекты. Нет таких понятий, как "совершеннаяструктура классов", "правильный выбор объектов". Как и во многих техническихдисциплинах, выбор классов является компромиссным решением.На одной из конференций программистам был задан вопрос: "Какими правилами выруководствуетесь при определении классов и объектов?" Страуструп, разработчикязыка C++, ответил: "Это как поиск святого Грааля. Не существует панацеи".

Габриель,один из разработчиков CLOS, сказал: "Это вопрос, на который нет простого ответа. Япросто пробую" [1]. К счастью, имеется богатый опыт классификации в других науках,на основе которого разработаны методики объектно-ориентированного анализа.Каждая такая методика предлагает свои правила (эвристики) идентификации классов иобъектов. Они и будут предметом этой главы.4.1. Важность правильной классификацииКлассификация и объектно-ориентированноепроектированиеОпределение классов и объектов - одна из самых сложных задачобъектно-ориентированного проектирования. Наш опыт показывает, что этаработа обычносодержит в себе элементы открытия и изобретения.

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

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

Такая классификация существенно облегчает понимание основнойпроблемы и дальнейшее развитие научной теории" [2]. Та же философияотносится и к инженерному делу. В области строительной архитектуры игородского планирования, как отмечает Алексан-дер, для архитектора "егопроектная деятельность, и скромная, и гигантская по размеру, управляетсяцеликом образами, которые он держит в своем сознании в данный момент, иего способностью комбинировать эти образы при создании нового проекта"[З].Неудивительно, что классификация затрагивает многие аспектыобъектно-ориентированного проектирования.

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

В главе 3 мы определили объект какнечто, имеющее четкие границы. На самом деле это не вполне так. Границыпредметов часто неопределенны. Например, посмотрите на вашу ногу.Попытайтесь определить, где начинается и кончается колено. В разговорнойречи трудно понять, почему именно эти звуки определяют слово, а неявляются частью какого-то более длинного слова. Представьте себе, что выпроектируете текстовый редактор. Что считать классом - буквы или слова?Как понимать отдельные фразы, предложения, параграфы, документы? Какобращаться с произвольными, не обязательно осмысленными, блоками текста?Что делать с предложениями, абзацами и целыми документами соответствуют ли такие классы нашей задаче?То, что разумная классификация - трудная проблема, новостью неназовешь.

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

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

Что подразумевается под этойсистемой? Некоторые авторы понимают некоторую простую схему,позволяющую расположить наиболее похожие живые организмы в один класси различные - в разные классы" [4]. В современной биологии термин"классификация" обозначает "установление иерархической системы категорийна основе предположительно существующих естественных связей междуорганизмами" [5]. Наиболее общее понятие в биологической таксономии царство, затем, в порядке убывания общности: тип (отдел), класс, отряд(порядок), семейство, род и, наконец, вид.

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

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

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