Анализ компонентно-ориентированного программирования

Автор: Бучилин А.В., Булатникова И.Н.

Журнал: Форум молодых ученых @forum-nauka

Статья в выпуске: 4 (32), 2019 года.

Бесплатный доступ

Статья посвящена анализу компонентно-ориентированного программирования (КОП). Рассмотрены практические подходы решения задач с помощью КОП.

Компонентно-ориентированное программирование, объектно-ориентированное программирование, интерфейс, паттерн

Короткий адрес: https://sciup.org/140286171

IDR: 140286171

Текст научной статьи Анализ компонентно-ориентированного программирования

Компонентно-ориентированное программирование, объектноориентированное программирование, интерфейс, паттерн.

Component-oriented programming, object-oriented programming, interface, pattern.

Известно, что компонентно-ориентирование программирование (КОП) есть объектно-ориентированное программирование (ООП), которое подчинено требованиям безопасности «старого» структурного и модульного программирования примерно в том виде, в котором эти требования были реализованы в классическом Модуле-2, то есть представляли собой набор модулей, которые возможно компилировать раздельно, а также использовать повторно.

Родоначальником данной системы был Никлаус Вирт. Создавая компонентно-ориентированный подход, он хотел решить достаточно серьёзную проблему объектно-ориентированного подхода – «хрупкость» базовых классов, которая возникает при построении объёмной иерархии классов. Например, если у нас есть объект «Персонаж», то с точки зрения ООП – это один большой класс, который, возможно, наследуется от чего-то (рис. 1).

class Person {

String name;

class Employer : Person { BigDecimal salary;

}

Рисунок 1 – класс в ООП

С точки зрения КОП – это набор компонентов, которые составляют объект «персонаж». Например, характеристики персонажа – компонент «Stats», управление персонажем - «CharacterController», анимации персонажа – «CharacterAnimationController»:

public class CharacterLinks : MonoBehaviour { public Stats stats;

public CharacterAnimationController animationcontroller;

public Charactercontroller charactercontroller;

void Awake() { stats = GetComponent();

animationcontroller = GetComponent(); charactercontroller = GetComponent();

}

}

Рисунок 2 – структура компонентов в КОП

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

Согласованность пользовательского интерфейса в КОПе - ещё одно преимущество. При условии использования программистами одного и того же визуального компонента интерфейс будет исполнен в едином стиле. При этом, если нам понадобится изменить вид одного из компонентов, мы изменим его вид везде, где он используется. Кроме этого, компоненты позволяют разрабатывать части интерфейса независимо, а изменения не затрагивают код модулей.

Возможность быстрой и продуктивной разработки программ – преимущество, которое выражено не только программно, но и экономически. Мало того, что при достаточном накоплении компонентов возможно действительно быстро создавать визуальные интерфейсы программ, фактически, не написав более ни строчки, но и программистам проще друг другу объяснить, как использовать компонент. Ещё и уменьшается стоимость разработки программ до 70%.

При этом данный подход к программированию вовсе не лишён минусов. За всё это удовольствие, которое описано выше, придётся платить объектно-ориентированным подходом. Если, например, у нас есть необходимость создания компонента для отображения цветных строк, мы с помощью ООП создаём наследника класса ListBox, перекрыв метод Paint, реализуя отрисовку цветных строк. Возможность реализовать событие onPaint и не создавать никаких классов подталкивает многих программистов к использованию событий в ущерб объектноориентированному подходу. Но именно, что «подталкивает», ибо никто не мешает и не запрещает создать новый компонент, который умеет рисовать цветные строки на основе существующего компонента ListBox. И подобный подход будет наиболее верным по причине того, что подобные компоненты можно использовать повторно. Ещё один минус – необходимость иметь гибкие компоненты. Нет никакого смысла писать компонент, рисующий только строки красного цвета. Такой компонент будет очень сложно использовать ещё где-то, кроме как в узконаправленной программе, для которой и создавался подобный компонент. Имеет смысл создать компонент, который рисует строки заданного цвета, а сам цвет вынести в его свойства. Вот такой компонент будет более функционален и в дальнейшем сократит время на разработку, хотя изначальное написание требует несколько больших усилий, нежели разработка компонента только для одного цвета.

На данный момент компонентно-ориентированное программирование реализовано в таких современных языках, как Java, где реализация происходит посредством компонентов, именуемых «JavaBeans», поддержанных в одной из ранних спецификаций языка. Кроме этого в платформе .NET также используется данный подход для создания и повторного использования компонентов для языков, которые поддерживаются платформой.

Список литературы Анализ компонентно-ориентированного программирования

  • Агуров П. В. C#. Разработка компонентов в MS Visual Studio 2005/2008. - СПб.: БХВ-Петербург, 2008. - 480 е.
  • Добрынин В. Ю. Технологии компонентного программирования. - СПб.: Издательство СПбГУ, 2004.
  • https://ru.wikipedia.org
  • https://tproger.ru/
Статья научная