Главная » Просмотр файлов » М. Фаулер, К. Скотт - UML. Основы - 2002

М. Фаулер, К. Скотт - UML. Основы - 2002 (1158629), страница 24

Файл №1158629 М. Фаулер, К. Скотт - UML. Основы - 2002 (М. Фаулер, К. Скотт - UML. Основы - 2002) 24 страницаМ. Фаулер, К. Скотт - UML. Основы - 2002 (1158629) страница 242019-09-18СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Однако в течение некоторого периода времени Личность может работать в нескольких компаниях. Это условие предполагает наличие интерфейса следующего вида: о1ааа Рвгвоп ( //получить текуаего работодателя Соврапу цеСЕар1оуег( ); //работодатель на конкретную дату Соврапу цеСЕвр1оуег(0ате); чо1а опапцееар1оуег(соврапу пеневр1оуег, Овсе спапцеОасе); чо1а 1еачеЕвр1оуег(0ате онапцеОате); Стереотип «история» не является частью языка ()МЬ, однако я упомянул о нем здесь по двум причинам. Во-первых, эта нотация в нескольких случаях моделирования оказалась для меня весьма полезной.

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

о1авв бес <Т> ( чо10 1пвегт(Т пенЕ1еввпс); чо1а гевоче(Т апЕ1ваепС); После этого можно использовать это общее определение для задания конкретных классов-множеств. Вот <Евр1оуее> еар1оувецвт; Для этой цели в языке ()МЬ можно применить параметризованный класс, используя изображенную на рис. 6.18 нотацию. к, Ларянагр шаблона Рис. 6.18.

Параметризованный класс Глава б. Диаграммы классов: дополнительные понятия Верхний прямоугольник с буквой Т на диаграмме является тем местом, где указывается параметр типа. (Можно указать более одного параметра.) В нетипизированных языках, таких как язык Яша11$аПс, такой вопрос не возникает, поэтому от данного понятия нет никакой пользы. Подобное использование параметризованного класса, например Множество <Служащие>, называется связанным элементом (Ьоппс! е!е- шепФ).

Связанный элемент можно изобразить двумя способами. Первый способ отражает синтаксис языка С++ (рис. 6. 19). Рис. 6.19. Связанный элемент (версия 1) Альтернативная нотация (рис. 6.20) усиливает связь с шаблоном и допускает переименование связанного элемента. ! «присвщпь эне ниве <Служащий> Присниние зна етв ларане~ру Сваинный элемент Рис. 6.20. Связанный элемент (версия 2) Стереотип «присвоить значение» («Ыпд») является стереотипом отношения уточнения.

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

Когда в последующем вы объявите связанный элемент, компилятор попытается установить, поддерживает ли передаваемый параметр операции, определенные в данном шаблоне. Именно зти действия соответствуют механизму производных типов, поскольку можно вообще не определять тип параметра; компилятор сам вычисляет его в процессе связывания с источником шаблона. Это свойство является центральным при использовании параметризованных классов из библиотеки стандартных шаблонов ВТ| (Вйапс|агс| Тешр|а1е 1аЬгагу) в языке С++; зти классы могут также использоваться для решения других программистских задач.

Использование параметризованных классов не обходится без последствий — например, в языке С++ они могут повлечь за собой значительное увеличение объема кода. Я редко использую параметризованные классы в концептуальном моделировании, поскольку онн применяются в основном для совокупностей, которые следует моделировать посредством ассоциаций. (Исключение составляет лишь один случай, когда я все-таки пользуюсь ими. Он связан с образцом вйапяе» (Диапазон) (см. Фаулер, 1997 118).) Параметризованные классы бывают мне необходимы только в моделях уровня спецификации и реализации, если они поддерживаются тем языком программирования, на котором я работаю. Видимость Должен признаться„что испытываю некоторое беспокойство относительно данного раздела. Видимость — это одно из тех понятий, которые являются простымн по существу, однако обладают сложными тонкостями.

Сама идея видимости заключается в том, что у любого класса имеются общедоступные (риЪ|1с) и закрытые (рг|та$е) элементы. Общедоступные элементы могут быть использованы любым другим классом, а закрытые элементы— только классом-владельцем. Несмотря на это в каждом языке программирования существуют свои собственные правила. Хотя многие языки используют такие термины, как «общедоступный», «закрытый» и взащищенный» (ргоВес|ет|), в разных языках они имеют различное содержание. Эти различия невелики, однако они приводят к Глава б.

Диаграммы классов; дополнительные понятия недоразумениям, особенно тех из нас, кто использует в своей работе более одного языка программирования. Язык ПМ1. пытается решить эту проблему, не устраивая при этом жуткую путаницу. По существу, в рамках языка ()М? для любого атрибута или операции можно указать индикатор видимости. Для этой цели можно использовать любой подходящий маркер, смысл которого определяется тем или иным языком программирования. Однако язык СМЬ предлагает три (довольно трудно запомнить) отдельных обозначения для этих вариантов видимости: «+» (общедоступный), »-» (закрытый) и»№» (защищенный). Мне бы очень хотелось поскорее закончить на этом, но, к сожалению, разработчики при построении диаграмм используют видимость в своей собственной интерпретации.

Поэтому, чтобы действительно понять некоторые из основных различий, существующих между моделями, необходимо понимать трактовку видимости в различных языках программирования. Итак, сделаем глубокий вдох и погрузимся во мрак. Мы начнем с языка программирования С++, поскольку он является основой стандартного использования языка (УМЬ: ° Общедоступный элемент является видимым в любом месте программы и может быть вызван любым объектом в системе. ° Закрытый элемент может быть использован только тем классом, в котором он определен. ° Защищенный элемент может быть использован только а) тем классом, в котором он определен, или б) подклассом этого класса.

Рассмотрим класс Клиент и его подкласс Индивидуальный Клиент. Рассмотрим также объект Мартин, который является экземпляром класса Индивидуальный Клиент. Мартин может использовать любой общедоступный элемент любого объекта в системе. Мартин может также использовать любой закрытый элемент класса Индивидуальный Клиент. Мартин не может использовать никакой закрытый элемент, определенный внутри класса Клиент, однако он может использовать защищенные элементы класса Клиент и защищенные элементы класса Индивидуальный Клиент.

Теперь обратимся к языку Ята11Са!)с. В этом языке все переменные экземпляра являются закрытыми, а все операции — общедоступными. Однако закрытость в языке Ята11Са1(с имеет не тот же самый смысл, что в языке С++. В системе, написанной на Ята)1Са1)с, Мартин может иметь доступ к любой переменной экземпляра своего собственного объекта, независимо от того, где была определена эта переменная экземпляра: в Клиенте или в Индивидуальном Клиенте.

Таким образом, закрытость в языке Ята11Са))с имеет тот же смысл, что и защищенность в языке С++. Тем не менее, было бы слишком просто закончить на этом. Видимость Вернемся опять к языку С++. Пусть имеется еще один экземпляр класса Индивидуальный Клиент с именем Кендалл. Кендалл может иметь доступ к любому элементу Мартина, который был определен как часть класса Индивидуальный Клиент, независимо от того, является ли он общедоступным, закрытым или защищенным. Кендалл может также иметь доступ к любому защищенному или общедоступному элементу Мартина, который был определен в классе Клиент. Однако в языке ВшаПСаПс Кендалл не может получить доступ к закрытым переменным экземпляра Мартина, а только к общедоступным операциям Мартина.

В языке С++ доступ к элементам других объектов вашего собственного класса обеспечивается в той же степени, что и к вашим собственным элементам. В языке БтаПСаПс безразлично, принадлежит ли другой объект к тому же самому классу или нет; вам все равно доступны только общедоступные элементы другого объекта. Язык Лама похож на язык С++ в том, что он поддерживает свободный доступ к элементам других объектов одного и того же класса.

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

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

Тип файла
DJVU-файл
Размер
976,54 Kb
Тип материала
Высшее учебное заведение

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

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