Главная » Просмотр файлов » Дж. Рамбо, М. Блаха - UML 2.0 - Объектно-ориентированное моделирование и разработка

Дж. Рамбо, М. Блаха - UML 2.0 - Объектно-ориентированное моделирование и разработка (1158633), страница 90

Файл №1158633 Дж. Рамбо, М. Блаха - UML 2.0 - Объектно-ориентированное моделирование и разработка (Дж. Рамбо, М. Блаха - UML 2.0 - Объектно-ориентированное моделирование и разработка) 90 страницаДж. Рамбо, М. Блаха - UML 2.0 - Объектно-ориентированное моделирование и разработка (1158633) страница 902019-09-18СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

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

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

Сокращенная модель банкомата 377 Зача Функции и данные могут существовать вне классов. Область действия может быть глобальной или определяться пространством имен Главным образом обеспечивающие низкоуровневую функциональность. Богатая библиотека шаблонов контейнеров (структур данных) и алгоритмов Должно быть предусмотрено программистом. Ошибки приводят к непредсказуемому поведению программы Исходный код требует компиляции под нужную платформу.

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

Зависит от реализации виртуальной машины Переносимость Эффективность Отличная 18.2. Сокращенная модель банкомата СагбАцбгобаа!!оп 1 СавЬСагб Ваяв Менее 1 равзвгогб 11тп вепагмотьег пате вс1ыеСвгб чепГуРввююогб сгеа!езач1пдвАссоцп! сгеа1еСЬесюпдАссоцп! сгеа!еСазЬСагб чепгуАтоцп! 0..1 аббАссооп! геточеАссооп1 бозе Ассоип! С ив!отег Ьа!апсе сгеб10лп1! пате абб геев !егпрАтооп! с1ове чег1ГуАтоцп! роз! ассоцп!Собе де!Атооп! де!Ассоцп1 0..1 0..1 0..1 АТМвевв веввюп8ШПТ1те Рис. г.В.Х. Сокращенная модель классов банкомата, используемая в этой главе На рис.

18А показана часть модели классов банкомата, которую мы рассмотрим в качестве примера реализации. Мы добавили классы Огес)ггп8Ассоипг (СчетДо- Востребования) и 5апгп8зАссоип! (СберегательиыйСчет), чтобы иметь возмож- ность обсуждать обобщения. 378 Глава 18 ° Объектно-ориентированные языки 18.3. Реализация структуры Первый этап реализации объектно-ориентированного проекта — это реализация структуры, определяемой моделью классов. Вы должны выполнить следующие действия. 1. Реализовать типы данных (раздел 18.3.1). 2. Реализовать классы (раздел 18.3.2). 3.

Реализовать управление доступом (раздел 18.3.3). 4. Реализовать обобщения (раздел 18.3А). 5. Реализовать ассоциации (раздел 18.3.5). 18.3.1. Типы данных Если вы еще не определили типы атрибутов, сейчас самое время сделать это. Некоторые типы данных требуют особого рассмотрения. Примитивы Простые значения могут быть числами с плавающей точкой, целыми числами, символами и логическими значениями. Старайтесь использовать числовые значения вместо строковых. Числовые типы более эффективны с точки зрения хранения, обработки и простоты обеспечения цельности атрибутов (см.

ниже о перечислениях). Объектные типы Объекты могут использоваться для объединения и упорядочения атрибутов. С+е поддерживает физическую вложенность объектов: экземпляр одного объекта создаются внутри пространства памяти другого объекта. зача поддерживает только ссылки на объекты, поэтому объект)ача внутри другого объекта — это аналог указателя С++, который должен быть явным образом связан с конкретным объектом. Структуры С++ технически отличаются от классов тем, что их члены по умолчанию открыты для доступа извне. Их удобно использовать для логического объединения данных без методов.

Можно добавить конструктор, который будет инициализировать данные. Объект, в котором будет находиться структура, может обеспечивать сокрытие данных этой структуры. эстпсс абстевв вспыля вссеес) вссьпэ с11у) вст1пЧ эсасе) аботеэв() : вСсееС(""), супу(""), зпапе("") ( ): с1ав* Со*Совет ( встьпр лаве! аббсевв аост) УУатрибут объекта 11оас Сетралаппп; рпЬ|ьс: ввс1пч Супу() (сееотп адат.с11у) ) У/этот метод следует вызывать извне 18.3.

Реализация структуры 379 Аналогичную стратегию можно использовать и в языке )ача, однако необходимо обеспечить явное создание экземпляра объекта-атрибута внутри конструктора или инициализатора внешнего объекта. Доступ внутри пакета подразумевает доступ к объектам-атрибутам внутри классов.

с1азз Аббгезз ) зсггпд зггеег зсг1пэ с1су 5ггтпэ агаве ) роь1гс с1азз Снзсоиег ) рг1наге зсг1пэ паве) //явное создание объекта-атрибута: рггнаге аббгезз аббг = пен Аббгезз)); //объект-атрибут рггуасе 11оас Геирмяоппс) 5сг1пч сгсу)) ) геснгп аббг.сагу; ) //этот метод следует вызвать извне ) Ссылочные типы Для реализации ассоциаций можно использовать ссылки на объекты в )ача и указатели и ссылки в С++. В ) ауа все переменные-классы представляют собой ссылки на объекты, тогда как в С++ переменная может быть самим объектом.

С++ требуе~ особого внимания, чтобы не перепутать объект с ссылкой на него. Идентификаторы объектов В объектно-ориентированных языках предусмотрены встроенные механизмы идентификации объектов и средства для проверки индивидуальности объектов. Обычно необходимости создавать явный тип идентификаторов объектов не возникает.

Если вам нужен уникальный идентификатор объекта, вы можете получить его от системы во время выполнения программы. В С++ уникальным идентификатором объекта является адрес объекта в физической памяти, который можно получить применением оператора ст к самому объекту или ссылке на него. Индивидуальность объекта можно проверить сравнением указателей или адресов. В )ауа оператор = = позволяет сравнивать индивидуальности объектов во время выполнения.

Если нужен идентификатор объекта, можно воспользоваться методами ))азг)Соде~) и го5гг)пдО универсального суперкласса Об/есд которые возвращают идентификатор объекта в целочисленном и строчном форматах. Адреса памяти в ~ауа недоступны, однако в большинстве систем эти методы реализованы на внутреннем размещении объекта. Не путайте уникальный идентификатор предметной области (например, номер банковского счета или индивидуальный номер налогоплательщика) с идентификатором объекта.

Идентификатор предметной области описывает свойство, относящееся к этой области, тогда как идентификатор объекта — это атрибут, относящийся к системе. Перечисления Перечисления (перечислимые типы — епитегайонз) обладают двумя преимуществами: ограниченным множеством значений и их символьным представлением. 380 Глава 18 ° Объектно-ориентированные языки Например, множество значений масти игральной карты можно описать перечислением СШВ, Р1АМОМР, НЕЛВТ, 5РАРЕ (ТРЕ(1)А, БУБНА, ЧЕРВА, ПИКА).

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

С++ гарантирует, что размер объектов перечислимого типа достаточен для разме)цения в памяти максимального значения. Например, переменная, принимающая значения (ТВГ/Е, ЕЛЕЕ), может иметь размер в один бит. Перечисления могут быть определены глобально или входить в какие-либо классы. На практике использование перечислений С++ может быть затруднено сложностью преобразования и необходимостью переопределения операций, работающих с целочисленными аргументами. Лучше всего использовать перечисления для повышения ясности кода, что достигается использованием символьных констант. Скрытые значения атрибутов могут храниться в виде целочисленных переменных, тогда как в интерфейсе объекта можно использовать константы для ограничения значений параметров, а в реализации методов те же константы будут служить граничными значениями.

с1ааз Саг ( роътгс: // перечисление сделаем открытым, чтобы клиенты могли его испольэовать еппи бьгессгоп (И,Е,В,И)) рг1часе: (по эръ) // скорость автомобиля 1пт певи; // направление движения роь1гс: // требуется передача параметра типа епои Саг(1пс арееб, б1гесс(оп б1г) : ирн(врееб), леан(б1г) () // 1по позволяет использовать ь+ и — без перегрузки для типа епои сага тогпв1чьг() (11 (ььпезн > и) певи = и) геспгп *гьгв)) Сага тогпьетг() (11 (--певи < И) певи = И) геаогп *опта)) // 1пг иа1п() ( Саг (15,Саг::Е)) // клиент использует значение из открытого перечисления // ) Версии )ача вплоть до 1.5 не поддерживали понятие перечислимого типа. Перечисления )ача аналогичны перечислениям в С++.

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

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

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