Вопросы к экзамену по ООТ

1. Сложность присущая программному обеспечению

. Сложность вызывается четырьмя основными причинами:

· сложностью реальной предметной области, из которой исходит заказ на разработку;

· трудностью управления процессом разработки(Основная задача разработчиков состоит в создании иллюзии простоты, в защите пользователей от сложности описываемого предмета или процесса, при коллективном выполнении проекта главной задачей руководства является поддержание единства и целостности разработки);

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

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

2. Пять признаков сложных систем

1. Сложные системы часто являются иерархическими и состоят из взаимозависимых подсистем, которые в свою очередь также могут быть разделены на подсистемы, и т.д., вплоть до самого низкого уровням."

2. Выбор, какие компоненты в данной системе считаются элементарными, относительно произволен и в большой степени оставляется на усмотрение исследователя.(Низший уровень для одного наблюдателя может оказаться достаточно высоким для другого)

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

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

5. Любая работающая сложная система является результатом развития работавшей более простой системы... Сложная система, спроектированная "с нуля", никогда не заработает. Следует начинать с работающей простой системы

3. Роль декомпозиции в управлении сложной системы. Виды декомпозиции.

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

· Алгоритмическая декомпозиция

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

4. Роль абстракции и иерархии в проектировании сложных систем

Абстракция - отвлечение в процессе познания от несущественных сторон, свойств, связей объекта (предмета или явления) с целью выделения их существенных, закономерных признаков;

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

5. Объектно-ориентированный анализ, проектирование и программирование

ООА-методология, при которой требования к системе воспринимаются с точки зрения классов и объектов, выявленных предметной областью

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

ООПрогр- методология программирования, основанная на представлени программы в виде совокупности объектов. Каждый из объектов является экземпляром класса. А классы образуют иерарию наследования.

6. Преимущества объектной модели.

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

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

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

· Объектная модель естественна, поскольку ориентирована на человеческое восприятие мира.

7. Главные элементы объектной модели. Абстрагирование.

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

8. Главные элементы объектной модели. Инкапсуляция.

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

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

9. Главные элементы объектной модели. Иерархия.

Иерархия - это упорядочение абстракций, расположение их по уровням. Виды: структура классов (иерархия "is-a") Пр: одиночное наследование. (один класс заимствует структурную или функциональную часть класса) Двигатель есть механизм. Шкаф есть мебель.

структура объектов (иерархия "part of"). Пр: агрегация (обхекты одного класса входят в объект другого. Обеспечивает физическую группировку логически связанной струкутры. Пр: машина состоит из двигателя и корпуса(один класс содержит в себе в качестве агрегатов(подсистем) другие классы), Разрушая объект машина мы разрушаем экземпляр двигателя.

10. Главные элементы объектной модели. Модульность.

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

11. Дополнительные элементы объектной модели. Типизация.

Типизация - это способ защититься от использования объектов одного класса вместо другого, или по крайней мере управлять таким использованием(нельзя int A присвоить значение char).

Строгая - требует соблюдения типов. Слабая- не требуют (PHP,JavaScript)

Статическая типизация - типы всех переменных и выражений известны во время компиляции; Динамическая типизация- означает, что типы неизвестны до момента выполнения программы

12. Дополнительные элементы объектной модели. Сохраняемость.

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

13. Дополнительные элементы объектной модели. Параллелизм.

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

Ранее мы обзавелись классом ActiveTemperatureSensor, поведение которого предписывает ему периодически измерять температуру и обращаться к известной ему функции вызова, когда температура отклоняется на некоторую величину от установленного значения. Как он будет это делать, мы в тот момент не объяснили. При всех секретах реализации понятно, что это - активный объект и, следовательно, без параллелизма тут не обойтись. В объектно-ориентированном проектировании есть три подхода к параллелизму.

Во-первых, параллелизм - это внутреннее свойство некоторых языков программирования. Так, для языка Ada механизм параллельных процессов реализуется как задача. В Smalltalk есть класс process, которому наследуют все активные объекты. Есть много других языков со встроенными механизмами для параллельного выполнения и синхронизации процессов - Actors, Orient 84/K, ABCL/1, которые предусматривают сходные механизмы параллелизма и синхронизации. Во всех этих языках можно создавать активные объекты, код которых постоянно выполняется параллельно с другими активными объектами.

Во-вторых, можно использовать библиотеку классов, реализующих какую-нибудь разновидность "легкого" параллелизма. Например, библиотека AT&T для C++ содержит классы Shed, Timer, Task и т.д. Ее реализация, естественно, зависит от платформы, хотя интерфейс достаточно хорошо переносим. При этом подходе механизмы параллельного выполнения не встраиваются в язык (и, значит, не влияют на системы без параллельности), но в то же время практически воспринимаются как встроенные.

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

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

14. Понятие объекта его характеристики: состояние, поведение и идентичность

Объект обладает состоянием, поведением и идентичностью; структура и поведение схожих объектов определяет общий для них класс; термины "экземпляр класса" и "объект" взаимозаменяемы.

Состояние объекта характеризуется перечнем (обычно статическим) всех свойств данного объекта и текущими (обычно динамическими) значениями каждого из этих свойств.

поведение объекта - это его наблюдаемая и проверяемая извне деятельность. Поведение зависит от состояния.

Идентичность - это такое свойство объекта, которое отличает его от всех других объектов

15. Методология объектно-ориентированного анализа и проектирования


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: