Элементы абстракции
Слоистая архитектура, базирующаяся на абстракции, имеет три основные характеристики.
1. Ясно определенные слои. Слои должны строиться один на другом так, чтобы каждый новый слой обеспечивал более сложную и комплексную абстракцию по сравнению с нижележащим слоем. Например, клетки - более комплексные и сложные, чем молекулы, скелетная система более комплексная и сложная, чем клетки, из которых она состоит, и т.д. В то же время термин "высший уровень абстракции" использован для формирования конкретного указания о том, как слои абстракции строятся один на другом.
2. Формальные и явные интерфейсы между конкретными слоями. Каждый слой может обращаться к услугам нижележащего слоя. Интерфейсы определяют высокоуровневые действия, которые активизируют более детальное поведение, выполняемое на нижележащем слое. Это аналогично тому, как ваш мозг выдает команды - поднять правую ногу, опустить ее перед левой ногой. Эти высокоуровневые операции переводятся в специфические нервные сигналы, активизирующие группы мышц. Тем не менее, все эти детали скрыты высокоуровневым интерфейсом между вашим мозгом и телом. Эти операции являются доступными для вышележащего слоя, а интерфейс определяет точно, какие аспекты функций внутри данного слоя являются видимыми и доступными для внешнего мира. Например, ваш рациональный рассудок не имеет интерфейсных функций, позволяющих сознанию контролировать биение вашего сердца. В результате контроль пульса рассматривается как функция, недоступная вашему сознанию потому, что ее нет в интерфейсе.
|
|
|
3. Скрытые и защищенные детали внутри каждого слоя. Например, ваш рациональный рассудок обычно "думает" в терминах высокоуровневых действий, которые может выполнить тело; передвинуть руку, сделать шаг и т.п. В то же время ваше тело запрещает вашему рациональному рассудку контролировать его на более детальном уровне. Проиллюстрируем это. Когда вы начинаете бежать, часть вашего мозга, тело и нервная система заставляют сердце увеличить ритм. После того как вы остановились, ваше сердце начинает вновь биться медленнее. Это автоматическое поведение: вы не можете контролировать его вашим рациональным сознанием, даже если захотите.
Инкапсуляция - процесс объединения информации и поведения системы в некоторую новую сущность, именуемую компонентом.
Чтобы лучше понять сущность инкапсуляции, необходимо обратиться к понятию объекта. Одно важное использование этого термина ориентировано на сочетание «субъект-действие-объект». Люди мыслят категориями объектов, с которыми они работают, перед тем как думают о действиях, которые хотят применить к данным объектам. Так, обычно человек сначала думает о гвозде и только потом о молотке как инструменте для забивания гвоздя в доску. На этом психологическом принципе основаны многие современные программные средства, ориентированные на дружественные интерфейсы пользователя. Объектно-ориентированные интерфейсы позволяют пользователю сначала думать о своей непосредственной работе (например, о составлении отчета или написании служебной записки), без необходимости вспоминать о том, что все это построено на системах обработки текстов, электронных таблицах и т.д. Выберите объект, откройте его - и подходящее действие или инструментальное средство вызывается для вас автоматически. Таким образом, в нашем контексте объектом может служить небольшой фрагмент программного кода приложения, реализующий некоторую функцию делового процесса. Например, это могут быть стандартные функции календаря, выдающие на экран информацию о количестве рабочих дней в месяце. Об объекте можно говорить как о некоторой совокупности данных и операций над ними, которую можно использовать при проектировании приложений, встраивая ее там, где это необходимо.
|
|
|
Поток процессов простого приложения может представлять некоторую диаграмму объектов.

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






