Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы на вопросы по ООАиП.docx
Скачиваний:
1
Добавлен:
13.07.2019
Размер:
33.13 Кб
Скачать

Что такое параллелизм?

ПАРАЛЕЛИЗМ – это свойство, отличающее активные объекты от пассивных.

Реальная параллельность достигается только на многопроцессорных системах, а системы с одним процессором могут лишь имитировать параллельность за счет алгоритма разделения времени.

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

Параллелизм делает акцент на абстракции и синхронизации процессов.

Что такое персистентность?

ПЕРСИСТЕНТНОСТЬ – это способность объекта преодолевать временные рамки (т.е. продолжать свое существование после исчезновения своего создателя) или пространственные пределы (т.е. выходить за пределы первоначального адресного пространства).

Персистентность объектов может проявляться в разном виде:

- Локальные переменные в вызове процедур;

- Собственные переменные, глобальные переменные и динамические данные, экстент которых не совпадает с их областью видимости;

- Данные, сохраняющиеся между разными сеансами выполнения программы;

- Данные, сохраняющиеся при переходе от одной версии программы к другой;

- Данные, существующие после исчезновения программы;

Первые 3 вида характерны для традиционных ЯП, а последние – для баз данных.

ЧТО ТАКОЕ ОБЪЕКТ?

ОБЪЕКТ обладает состоянием, поведением и индивидуальностью. Структура и поведение схожих объектов определяется в общем для них классе. Термины экземпляр и объект являются синонимами.

ЧТО ТАКОЕ СОСТОЯНИЕ ОБЪЕКТА?

СОСТОЯНИЕ ОБЪЕКТА характеризуется перечнем всех (как правило, статических) свойств данного объекта и текущими (как правило, динамическими) значениями каждого из этих свойств.

Свойствами объекта называются отличительные характеристики, черты, качества или особенности, обеспечивающие его уникальность. Свойства, как правило, являются статическими, поскольку они образуют неизменяемую природу объекта. Все свойства имеют значения, которые могут быть простыми количественными характеристиками или обозначать другой объект.

Таким образом, объекты и простые значения отличаются друг от друга: простые количественные характеристики «не зависят от времени, не изменяются и не принимают других значений», тогда как объекты «существуют во времени, изменяются, имеют состояние, принимают разные значения, а также могут создаваться, уничтожаться и использоваться совместно».

ЧТО ТАКОЕ ПОВЕДЕНИЕ ОБЪЕКТА?

ПОВЕДЕНИЕ – это действия и реакции объекта, выраженные через изменения состояния объекта и передачу сообщений.

Таким образом, все объекты либо подвергаются воздействию, либо сами воздействуют на другие объекты.

Состояние объекта представляет собой суммарный результат его поведения.

ЧТО ТАКОЕ ИДИВИДУАЛЬНОСТЬ ОБЪЕКТА?

ИНДИВИДУАЛЬНОСТЬ – это свойство объекта, отличающее его от всех других объектов.

СТАНДАРТНЫЕ РОЛИ ОБЪЕКТОВ

ПРОТОКОЛ – это совокупность всех методов, связанных с конкретным объектом.

Таким образом, протокол объекта описывает поведение объекта и содержит все его статические и динамические свойства.

Работая со сложными абстракциями, полезно разделять протокол на логические группы свойств. Эти свойства описывают роли, которые может исполнять объект.

РОЛЬ – это маска, которую носит объект. Она определяет контракт абстракции с ее клиентами.

Роли объекта носят динамический характер, но могут быть и взаимоисключающими.

ОТНОШЕНИЯ МЕЖДУ ОБЪЕКТАМИ

Отношения между двумя объектами основываются на взаимных предположениях о допустимых операциях и ожидаемого поведения.

Наиболее важны для ООП два типа отношений:

- Связи;

- Агрегация.

СВЯЗЬ – это конкретное соединение, через которое объект (клиент) запрашивает услугу у другого объекта (сервера) или управляет им.

Участвуя в связи, объект может выполнять одну из ролей:

1. Контроллер. Этот объект может выполнять операции с другими объектами, но сам никогда не подвергается воздействию других объектов. В некоторых ПрО термины «активный объект» и «контроллер» являются синонимами.

2. Сервер. Этот объект не выполняет операций с другими объектами, а лишь подвергается воздействию со стороны других объектов.

3. Агент. Такой объект может выполнять операции над другими объектами и подвергаться воздействию с их стороны. Как правило, агенты создаются для представления реальных объектов, существующих в ПрО конкретного приложения.

АГРЕГАЦИЯ описывает иерархию «целое/часть» и позволяет переходить от целого (агрегата) к его компонентам. В этом случае агрегация является частным случаем ассоциации. Агрегация не всегда означает, что один объект буквально включает в себя другой объект. Такие отношения целое/часть носят абстрактный, а не физический характер.

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

ВАРИАНТЫ СИНХРОНИЗАЦИИ ПРИ НАЯВНОСТИ АКТИВНЫХ И ПАССИВНЫХ ОБЪЕКТОВ

- ПОСЛЕДОВАТЕЛЬНАЯ. Семантика пассивного объекта в каждый момент времени обеспечивается в присутствии только одного активного объекта.

- ЗАЩИЩЕННАЯ. Семантика пассивного объекта обеспечивается в присутствии многих потоков управления, но активные клиенты должны взаимодействовать, реализуя взаимное исключение.

- ПАРАЛЛЕЛЬНАЯ. Семантика пассивного объекта обеспечивается в присутствии многих потоков управления, причем взаимное исключение гарантируется сервером.

ЧТО ТАКОЕ КЛАСС?

КЛАСС – это множество объектов, обладающих общей структурой, поведением и семантикой.

Экземпляр класса – это отдельный объект. Класс – необходимый, но недостаточный инструмент декомпозиции сложных систем.

ИНТЕРФЕЙС И РЕАЛИЗАЦИЯ КЛАССА

ИНТЕРФЕЙС, как правило, состоит из объявлений операций, применимых к его объектам, а также объявлений других классов, констант, переменных и исключительных ситуаций, необходимых для полного описания абстракции. Внутреннее представление обеспечивает реализация класса, скрывающая секретные особенности его поведения. Реализация состоит, в основном, из описания всех операций, объявленных в интерфейсе класса.

КЛАССИФИКАТОРЫ ВИДИМОСТИ

Классификаторы видимости класса можно разделить на четыре части:

1. Открытый раздел – объявления, доступные всем клиентам.

2. Защищенный раздел – объявления, доступные самому классу и его подклассам.

3. Закрытый раздел – объявления, доступные только самому классу.

4. Пакет – объявления, доступные только классам, входящим в один и тот же пакет.

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

ОТНОШЕНИЯ МЕЖДУ КЛАССАМИ

Существует три основных типа отношений между классами:

1. Обобщение/специализация, или «is-a».

2. Целое/часть, или «part of».

3. Ассоциация, т.е. семантическая зависимость между классами, которые больше никак не связаны друг с другом.

АССОЦИАЦИЯ

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

Ассоциация лишь обозначает семантическую зависимость, но не указывает ее направления и не объясняет, как классы связаны друг с другом.

Существует три разновидности множественности:

1. Взаимно-однозначная зависимость.

2. Зависимость «один-множество».

3. Зависимость «множество-множество».

НАСЛЕДОВАНИЕ

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

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

ПОЛИМОРФИЗМ

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

Полиморфизм позволяет обойтись без операторов многовариантного выбора, поскольку каждый объект неявно сам знает свой тип.

Наследование без полиморфизма возможно, но не очень полезно.

Полиморфизм тесно связан с механизмом позднего связывания. При полиморфизме связь метода и имени определяется только в процессе выполнения программы.

АГРЕГАЦИЯ

Это отношение целое/часть между экземплярами классов.

Отношение агрегации между классами абсолютно аналогичны отношениям агрегации между объектами этих классов.

Альтернативой является делегирование, означающее, что объект поручает реализацию своего поведения другим объектам.

ЗАВИСИМОСТИ

Означает, что один из элементов каким-то образом зависит от другого. Изменение одного из таких элементов влияет на другой.

КРИТЕРИИ ОЦЕНИВАНИЯ КАЧЕСТВА АБСТРАКЦИЙ

1. Связанность. Определяют как силу связей между отдельными модулями. Сильная связанность усложняет систему, поскольку тесно связанные модули гораздо сложнее воспринимать и модифицировать. Сложность можно уменьшить, разрабатывая системы с как можно более слабыми связями между модулями.

2. Связность. Это глубина взаимодействия между элементами отдельного модуля. Наименее желательной является случайная связность, когда в одном классе или модуле собираются несвязанные друг с другом абстракции. Наиболее желательной является функциональная связность, при которой все элементы класса или модуля тесно взаимодействуют, обеспечивая четко определенное поведение.

3. Достаточность. Означает, что класс или модуль содержит достаточно много характеристик абстракции, чтобы обеспечить целенаправленное и эффективное взаимодействие. В противном случае компоненты становятся бессмысленными.

4. Полнота. Означает, что интерфейс класса или модуля описывает все существенные свойства абстракции. Полным называется класс или модуль, интерфейс которого гарантирует все необходимые средства для взаимодействия с клиентами.

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

КРИТЕРИИ ВЫБОРА МЕТОДОВ КЛАССА

Выбор количества методов для описания поведения класса определяется двумя взаимно противоречивыми рассуждениями:

1. Попытка описать поведение в одном методе упрощает интерфейс, но укрупняет и усложняет сам метод;

2. Распределение функциональных возможностей между методами усложняет интерфейс, но упрощает методы.

КРИТЕРИИ ПРИНЯТИЕ РЕШЕНИЯ:

- Возможность повторного использования: может ли данное свойство иметь смысл в другом контексте?

- Сложность: насколько трудно реализовать такое свойство?

- Применимость: насколько данное свойство характерно для класса, в который оно включается?

- Требования к реализации: зависит ли реализация данного свойства от внутренних деталей класса?

ВРЕМЕННАЯ И ПРОСТРАНСТВЕННАЯ СЕМАНТИКА

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

ВЫБОР ОТНОШЕНИЙ МЕЖДУ КЛАССАМИ И ОБЪЕКТАМИ

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

СОТРУДНИЧЕСТВО

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

МЕХАНИЗМЫ И ВИДИМОСТЬ

Отношения между объектами зависит от механизмов их взаимодействия. Перед проектировщиком стоит простой вопрос: как разделить знания между объектами?