Шестой этап — компонентный подход
Компонентный подход предполагает построение программного обеспечения из независимых друг от друга «кирпичиков», которые объединяются между собой благодаря специальным стандартизированным интерфейсам. При компонентом подходе совместимость различных частей, или объектов, программы между собой обеспечивается тем, что все эти объекты соблюдают единые правила, декларируемые на уровне операционной системы. Компонентный подход позволяет в рамках одной программы работать компонентам, написанным на разных языках программирования и скомпилированным в разных средах разработки.
Наиболее известными технологиями, реализующими компонентный подход, являются COM, CORBA и .NET.
Глава 19. Технологии и инструменты программирования
19.2.7. Седьмой этап — архитектура, управляемая моделью
Этот этап развития технологий программирования пока еще не достиг своего логического завершения, да и сама идея архитектуры, управляемой моделью (Model Driving Architecture, MDA), продолжает развиваться и совершенствоваться, в частности, в рамках технологии ЕСО для .NET. Смысл технологии MDA — исключить этап кодирования из процесса разработки программного обеспечения. Для того чтобы создать завершенное приложение, достаточно построить его модель на языке UML, а все остальное за вас сделает среда разработки: сгенерирует классы данных, процедуры их обработки, способы подключения к данным, пользовательский интерфейс. Хотя это направление развития является весьма многообещающим, на сегодняшний день основным способом создания программного обеспечения все-таки остается ручное кодирование.
Концепция объектно-ориентированного программирования
Поскольку все современные средства разработки программного обеспечения, языки и технологии создания программ продолжают основываться на объектно-ориентированном программировании, предлагаем ознакомиться с основными положениями этого подхода. Объектно-ориентированное программирование базируется на четырех основных принципах: абстракции, наследовании, инкапсуляции и полиморфизме.
Абстрактные структуры, при помощи которых реализуется этот принцип, называются классами. |
Абстракция
Классы представляют собой абстрактные описания структур данных, но сами данные они не содержат. Данные появляются тогда, когда по описаниям классов в памяти программы выделяется необходимое пространство и в нем создаются экземпляры класса, или объекты. Тогда для каждого поля класса отводится необходимая область памяти и в эту область можно поместить нужное значение.
19.3. Концепция объектно-ориентированного программирования
Пример. Предположим, у нас есть три измерительных прибора: термометр, барометр и весы. Чтобы описать эти приборы внутри программы, мы абстрагируем важные для программы свойства этих приборов и создаем три класса (рис. 19.4).
~| | класс «барометр» |
класс «термометр» |
Инв. номер |
. Название |
Исполнение |
. Йсгюлнениё Температура ■ |
I класс «весы»
Йнв..-номер Название
Цвет . ■■ ■ ■ ■ ■ -.
Исполнение
8sc
Поля классов
Методы классов
Рис. 19.4. Классы
По названиям в соответствующих ячейках видно, что поля класса содержат в себе данные, описывающие состояние класса. Методы класса представляют реализацию некоторых действий, то есть описывают поведение класса. Например, метод класса «термометр», который носит название «измерить температуру», призван помещать значение температуры в поле с именем «температура». На рис. 19.5 представлены объекты (экземпляры класса).
Экземпляр класса «термометр» | |
Инв. номер | |
Название | TRM |
Цвет | белый |
Исполнение | оконный |
Температура | |
Измерить температуру |
Экзмпляр класса «весы» | |
Инв. номер | |
Название | VSV |
Цвет | серый |
Исполнение | напольные |
Вес | |
Измерить вес |
Экземпляр класса «барометр» | |
Инв. номер | |
Название | DRM |
Цвет | хром |
Исполнение | настенный |
Давление | |
Измерить давление |
Рис. 19.5.Экземпляры классов
Наследование
Пример. В рассмотренном примере у трех разных классов есть одинаковые поля: Инв. номер, Название, Цвет, Исполнение. Каждый раз при создании нового класса измерительного прибора приходится снова и снова создавать эти поля. Данная ситуация значительно упрощается за счет наследования: мы создаем класс Измеритель, в который помещаем эти повторяющиеся поля, а затем наследуем от него наши классы Термометр, Весы и Барометр (рис. 19.6).