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

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

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

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

В обоих языках имеется жесткая типизация: переменные и значения должны быть заранее известного типа (предопределенного или определенного пользователем). Жесткая типизация повышает надежность программ, потому что позволяет обнаруживать несоответствие аргументов при вызове методов и предоставляет дополнительные возможности для оптимизации. 18.1.1. Введение в С++ Язык С++ был разработан Бьерном Страуструпом в Ве!1 ЕаЬогагог1ез в 80-х годах ХХ века.

Целью создания нового языка было расширение широко использовавшегося в то время языка С для обеспечения поддержки объектно-ориентирован- 18.1. Введение ЗУЗ ных концепций. С++ сохранил возможности низкоуровневого программирования, имевшиеся в С и добавил к ним поддержку высокоуровневых объектноориентированных концепций.

Изначально язык С++ был реализован в Вей 1.аЬз как препроцессор, который преобразовывал С++ в стандартный язык С. Когда С++ обрел широкую популярность, появились компиляторы с символическими отладчиками и другие мощные средства разработки. Комитет !50/АХ81 стандартизировал язык и его библиотеки в 1998 году. Компиляторы С++ для различных операционных систем выпускаются несколькими крупными производителями, а также фондом свободного программного обеспечения (ггее 8о(гааге гоппбаг1оп — г8г). Синтаксис языка С++ включает в себя синтаксис С.

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

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

При вызове выбирается метод или функция с соответствующим числом и типом параметров. Можно перегружать и операторы языка С++, что делает возможной интуитивно понятную форму записи (например, а + Ь вместо а.агЫ(Ь), где а и Ь принадлежат к типу Сотр!ех№шЬег). Спецификаторы доступа обеспечивают инкапсуляцию (сокрытие информации), предоставляя возможность ограничения доступа к членам класса (методов и данных). Члены класса могут быть доступны только методам самого класса (рпиаге), класса и его подклассов (ргогесгег!) или любого класса, метода или функции (риЫ!с).

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

Приложение 374 Глава 18 ~ Объектно-ориентированные языки может динамически выделять память из кучи (Ьеар) во время своего выполнения. Для этого служит операция пеы. Динамически созданный объект существует в памяти до тех пор, пока он не будет удален явным вызовом операции Ые!еге. Адрес размещения объекта в памяти не изменяется на протяжении всего его существования. Именно адрес в памяти служит уникальным идентификатором объекта. Программист может получить адрес статического объекта при помощи оператора О или адрес динамически созданного объекта в виде ссылки (панс)1е) в момент создания этого объекта.

Чтобы обратиться к объекту, на который указывает некоторый указатель, данный указатель разымеяовываетсл (беге(егепсе) при помощи оператора ". Для любого объекта О, расположенного в памяти по адресу А, выполняются следующие равенства: сэ О--А, "А--О.

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

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

Введение в Зача Язык )ача появился в начале 90-х годов ХХ века в виде побочного продукта исследований, проводимых корпорацией Бпп М)сгозузгешз. Эти исследования касались программирования пользовательских устройств. Для данного проекта требовался переносимый и независимый от устройств язык.

В 1995 году интерпретатор языка был выложен на веб-сайт (в то время веб-сайты были редкостью), н вскоре возможность выполнения )ача-программ с некоторыми ограничениями была добавлена в веб-браузеры, благодаря чему разработчики веб-страниц получили возможность создавать динамическое и интерактивное содержимое. За несколько лет бурного развития Интернета и приложений распределенной архитектуры язык )ага стал основным средством для коммерческих разработчиков. Коммерческие, условно-бесплатные и бесплатные средства разработки для )ача распространены очень широко. Язык продолжает развиваться, библиотеки для него растут.

Корпорация Бпп контролирует версии языка и бесплатно предоставляет основные средства для работы с ним для большинства платформ. 18.1. Введение 375 Популярность Дага обеспечена не столько характеристиками самого языка, сколько его переносимостью и наличием огромного количества библиотек классов. Исходный код на Дага компилируется в промежуточный байт-код, который, в свою очередь, выполняется виртуальной машиной Дага г!ггиа! МасЬ!пе (ДУМ). Виртуальные машины были разработаны почти для всех операционных систем. Имеются также собственные компиляторы Дага (также для разных систем). Подобно тому, как успех С++ определялся наличием большого количества программистов, владевших С, успех Дача основывался на тех, кто владел С++ и С. Синтаксис Дача во многом подобен синтаксису С++, однако модели работы с объектами и памятью в этих языках сушественно отличаются.

Дача относится к числу языков с жесткой типизацией, с разделением примитивных и объектных типов. Работа с этими типами осуществляется по-разному: память под примитивы выделяется статически, они интерпретируются как переменные со значениями (операция ~ -Д присваивает переменной ! значение пе- ременной)), тогда как объекты выделяются динамически во время выполнения, а работа с ними осуществляется только посредством переменных-ссылок (операция!1 =Д создает альтернативную ссылку ! для объекта, на который ссылается)).

В Дага не предусмотрен синтаксис для описания ссылок на примитивы, но имеются средства для преобразования между примитивами и соответствующими объектными типами, например между тг и 1нгеяег. В версии Дача 1.5 была добавлена концепция автаматической упаковки (аигоЬох!пя) — это автоматическое преобразование между примитивами и их объектными обертками в типичных ситуациях, например, при передаче параметров или при использовании совокупностей. Все объектные типы Дача происходят от общего предка Об)ест, поэтому на высшем уровне абстрагирования все они совместимы между собой.

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

Каждый компилируемый блок исходного кода (файл) может содержать не более одного открытого класса, причем название файла должно совпадать с именем этого класса. В том же файле могут быть определены вспомогательные классы. В самом начале файла объявляется пакет, к которому он относится. Для обращения к открытым элементам других пакетов используется директива вврогт (например, вврогт Гавало." — включение доступа к классам пакета ввода-вывода).

Подобно спецификаторам С++, модификаторы доступа Дага позволяют ограничить доступность атрибутов и методов. По умолчанию все атрибуты и методы имеют область видимости рас)где и могут быть использованы всеми остальными 376 Глава 18 ° Объектно-ориентированные языки 18.1.3. Сравнение С++ и Зача Характеристики обоих языков сравниваются в табл. 18.1. Таблица 18.1. С++ и зача Дача Управляется системой. Объекты перемещаются в памяти во время выполнения Доступно программисту. Объект располагается по фиксированному адресу Управление памятью Одиночное наследование с абстрактными интерфейсами. Автоматический полиморфизм.

Универсальный предок ОЬ)есс Одиночное и множественное наследование. Явный полиморфизм методов. Нет универсального класса-предка. Допускает смешивание иерархий Модель наследования Гибкая модель с защитой при помощи спецификатора сопле Нечеткая модель вызывает слабую инкапсуляцию Управление доступом и защита объектов Согласована для примитивных и объектных типов Разная для примитивных и объектных типов Семантика типов методами, определенными в том же пакете. Явным образом можно указать область видимости рпоаге (доступ внутри класса), рибдс (открытый доступ) и ртогесгегг (доступ для класса и его подклассов, определенных в других пакетах). Таким образом, термин ргогесгеИ в )ача имеет несколько иной смысл, чем в С++.

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

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

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