Может ли самолет быть имуществом?

Может ли самолет быть имуществом?

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

Пусть класс AIRPLANE описывает самолет. Среди запросов к нему могут быть число пассажиров (passenger_count), высота (altitude), положение (position), скорость (speed); среди команд - взлететь (take_off), приземлиться (land), набрать скорость (set_speed).

Независимо от него может иметься класс ASSET, описывающий понятие имущества. К его компонентам можно отнести такие атрибуты и методы, как цена покупки (purchase_price), цена продажи (resale_value), уменьшить в цене (depreciate), перепродать (resell), внести очередной платеж (pay_installment).

Наверное, вы догадались, к чему мы клоним: компания ведь может владеть самолетом! И для пилота самолет компании это просто машина, способная взлетать, садиться, набирать скорость. Для финансиста это имущество, имеющее (очень высокую) цену покупки, (слишком низкую) цену продажи, и вынуждающее компанию ежемесячно платить по кредиту.

Для моделирования понятия "самолет компании" прибегнем к множественному наследованию:

Рис. 15.3.  Самолет компании

class COMPANY_PLANE inherit

PLANE

ASSET

feature

... Любой компонент, характерный для самолетов компании,

(отличающийся от наследуемых компонентов родителей) ...

end

Родителей класса достаточно перечислить в предложении inherit. (Как обычно, можно разделять их имена точкой с запятой, хотя это не обязательно.) Порядок перечисления классов не играет никакой роли.

В моделировании систем найдется еще немало примеров, подобных COMPANY_PLANE.

[x]. Наручные часы-калькулятор моделируются с применением множественного наследования. Один родитель позволяет устанавливать время и отвечать на такие запросы, как текущее время и текущая дата. Другой - электронный калькулятор - поддерживает арифметические операции.

[x]. Наследником классов судно и грузовик является амфибия (AMPHIBIOUS_VEHICLE). Наследник классов: судно, самолет - гидросамолет (HYDROPLANE). (Как и с TEACHING_ASSISTANT, здесь также возможно дублируемое наследование, поскольку каждый из классов-родителей является потомком средства передвижения VEHICLE.)

[x]. Ужин в ресторане; поездка в вагоне поезда - вагон-ресторан (EATING_CAR). Вариант: спальный вагон (SLEEPING_CAR).

[x]. Диван-кровать (SOFA_BED), на котором можно не только читать, но и спать.

[x]. "Дом на колесах" (MOBILE_HOME) - вид транспорта (VEHICLE) и жилище (HOUSE) одновременно; и так далее.

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

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг:

Его вам сразу вклю́чат, а может быть, включáт

Из книги автора

Его вам сразу вклю?чат, а может быть, включ?т Элемент audio выглядит практически идеальным. Где-то должен быть подвох, правда? Он есть.Проблемы с элементом audio не в спецификации. Главная проблема – с форматами аудиофайлов.Хотя формат MP3 и распространен повсеместно, это


Че Геварой может быть не всякий

Из книги автора

Че Геварой может быть не всякий Децентрализация политики может быть восхитительна, если речь идет о накоплении знаний (вспомните “Википедию”), но сама по себе децентрализация не есть существенное условие успешной политической реформы. В большинстве случаев она даже не


Зачем вашей компании может быть нужен корпоративный блог?

Из книги автора

Зачем вашей компании может быть нужен корпоративный блог? Не знают, зачем нужен корпоративный блог, всего семь человек. «Создание имиджа компании» повторяется в ответах категории «Другое» несколько раз как дополнение к влиянию на соискателей, инвесторов. Один из


Приложение А. Чем Школа Программирования может быть полезна лично Вам

Из книги автора

Приложение А. Чем Школа Программирования может быть полезна лично Вам Что ж, если Вы дочитали эту книгу почти до конца, то, наверное, со многим описанным Вы можете согласиться. Впрочем, нет необходимости соглашаться абсолютно со всем. У каждого из нас уникальный опыт,


Может ли быть оправдан несерьезный подход?

Из книги автора

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


Может ли быть польза от неведения?

Из книги автора

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


Закон 4. Всегда может быть создана новая сигнатура кода, которая не будет восприниматься как угроза

Из книги автора

Закон 4. Всегда может быть создана новая сигнатура кода, которая не будет восприниматься как угроза Этот закон сравнительно нов в обсуждении вопросов безопасности, но за последний год он стал очень популярен. Это новая реальность, поскольку теперь у злоумышленников


Модульные роботы M-Blocks, которых не может быть Андрей Васильков

Из книги автора

Модульные роботы M-Blocks, которых не может быть Андрей Васильков Опубликовано 07 октября 2013 Молодой инженер Джон Романишин (John Romanishin) создал роботов M-Blocks, которые совсем недавно считались невозможными. Они уникальны тем, что умеют выполнять


Ошибки 0x00000077 и 0x0000007A: а может быть, у нас вирус?

Из книги автора

Ошибки 0x00000077 и 0x0000007A: а может быть, у нас вирус? Система попыталась прочитать данные из файла подкачки и… не нашла их там по указанному адресу.Причины:? сбой жесткого диска («битые» секторы);? дефект оперативной памяти;? повреждение данных вирусом.Производить диагностику


Может быть, астрономия в школе всё-таки нужна? Дмитрий Вибе

Из книги автора

Может быть, астрономия в школе всё-таки нужна? Дмитрий Вибе Опубликовано 11 августа 2013 Коллеги-колумнисты отписались по вопросам образования; я тоже хочу. Тем более что в теме российского образования есть мотив, который в нашей профессиональной


Может быть, астрономия в школе всё-таки нужна? Дмитрий Вибе

Из книги автора

Может быть, астрономия в школе всё-таки нужна? Дмитрий Вибе Опубликовано 11 августа 2013 Коллеги-колумнисты отписались по вопросам образования; я тоже хочу. Тем более что в теме российского образования есть мотив, который в нашей профессиональной


Быть или не быть Microsoft Office для Linux Максим Плакса

Из книги автора

Быть или не быть Microsoft Office для Linux Максим Плакса Опубликовано 13 февраля 2013 Слух о предстоящем выходе версии Microsoft Office для Linux появился 5 февраля. Об этом якобы проговорился автору сайта Phoronix один из сотрудников Microsoft во время проходившего в Брюсселе


Студенческие стартапы: а может быть, деньги — не главное? Денис Викторов

Из книги автора

Студенческие стартапы: а может быть, деньги — не главное? Денис Викторов Опубликовано 12 февраля 2013Опросы, проводимые российскими рекрутинговыми компаниями, рисуют грустную картину. И дело не только в том, что выпускник столичного вуза хочет получать сразу после


Отслеживаем процесс: Как наша информация может быть обращена против нас

Из книги автора

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