Что такое компонент - PullRequest
       15

Что такое компонент

12 голосов
/ 13 октября 2008

Я слушаю подкаст Java-отряда, здесь часто обсуждаются компоненты (компоненты-примечания не являются (явно) объектами). Они оплакивают тот факт, что Java не имеет компонентов, и контрастируют с .NET, который имеет. Компоненты, очевидно, облегчают разработку приложений (не только приложений с графическим интерфейсом).

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

Итак, на вопросы:

. / Может кто-нибудь объяснить мне, что такое компонент. (и почему бобы Java не являются компонентами).

. / Кто-нибудь может объяснить, как они помогают развитию.

. / Кто-нибудь может объяснить, почему у java их нет, если они так полезны.

Ответы [ 6 ]

3 голосов
/ 13 октября 2008

Термин компонент является одним из самых неоднозначных и чрезмерно используемых в ОО.

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

Отличным примером архитектуры на основе компонентов был COM. Это отличный пример, потому что он был так сильно использован и жестко определен. Но обратите внимание, что потребность в этой архитектуре была основана на негибкости модели компиляции и развертывания C ++.

в Java вы можете сделать очень много для класса, не нарушая двоичную совместимость с остальной системой. Поэтому нет необходимости создавать жесткие архитектуры на основе компонентов. Но все зависит от того, как вы определяете термин, например, любой проект, построенный с использованием внедрения зависимостей, может считаться «компонентным».

2 голосов
/ 18 марта 2014

Хотя в начале Java понятие компонента много раз было связано с компонентами Gui, общий смысл компонента в разработке программного обеспечения выходит за рамки этого понятия.

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

В 1996 году JDK 1.0 была первой управляемой средой выполнения, предоставляющей компонентам метаданные. В этом случае компоненты представляют собой .class файлы, содержащие байт-коды и метаданные. Тем не менее, согласно спецификации Java, файл a .class содержит только одно определение типа . Таким образом, для развертывания набора типов в качестве компонента мы можем использовать архив Jar, содержащий несколько файлов .class.

С другой стороны, в платформе .Net, которая предоставляет ту же идею многократно используемых компонентов, компонент может содержать более одного определения типа. В этом случае компонент (он же сборка в .Net) представляет собой файл .dll или .exe.

2 голосов
/ 13 октября 2008

Software Engineering Radio имеет эпизод именно на эту тему: http://se -radio.net / podcast / 2008-02 / episode-87-software-components

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

Обновление: действительно, не нужно представлять такую ​​архитектуру, потому что, как отмечали другие, Java Beans или Servlets, безусловно, могут рассматриваться как архитектуры на основе компонентов.

1 голос
/ 13 октября 2008

Программное обеспечение поставляется в нескольких группах. Вот куски Java.

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

«Компонент», «Слой», «Ярус» и другие философские группировки, как правило, условны. В среде VB COM был формализм для компонентов. Все остальные относятся к ним как к идеям.

Бобы - это классы. Может ли один класс быть компонентом? Может быть. Компонент обычно представляет собой группу классов. Иногда всего два - формальный интерфейс и реализация.

Компоненты помогают сосредоточиться на логической группировке классов, пакетов, группировок и т. Д.

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

Вы можете, с некоторой осторожностью, определить подход к «компонентам» с помощью интерфейса, метаданных и множества других функций.

1 голос
/ 13 октября 2008

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

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

  1. Объекты, как правило, просто "вещи", тогда как компоненты - актеры. Разница в том, что компонент является частью процесса, а объект представляет собой некое абстрактное представление.
  2. Компоненты помогают обеспечить повторное использование кода и возможность подключения, потому что они в основном представляют собой небольшие «подпрограммы» (или иногда программы сами по себе), которые в идеале могут быть адаптированы для работы с другими компонентами.
  3. Вы склонны чаще видеть компоненты в системах передачи сообщений "ничего общего", таких как Erlang или Kamaelia , главным образом из-за того, что эти типы структур лучше всего подходят для компонентно-ориентированных дизайн.

Есть много хороших примеров компонентно-ориентированного проектирования, но мой первый выбор - UNIX. Основная идея UNIX заключается в том, что это скорее набор небольших программ, предназначенных для совместной работы, а не состоящих из нескольких более монолитных программ.

0 голосов
/ 13 октября 2008

Я не знаю особенно компонентов .NET, но из Java POV я бы сказал, что компонент - это некая функциональная единица, которая должна иметь определенный принцип интерфейса / использования. Хотя Java не имеет компонентов в качестве концепции языка, в Java есть компоненты IMHO. Технические компоненты будут, например ::10000

  • EJBs
  • сервлеты

Функциональные компоненты будут, например ::10000

  • Автоматическое обновление для приложения
  • Механизм формул, который позволяет выполнять вычисления в модели данных

Архитектурные компоненты могут быть файлами JAR или пакетами OSGi.

Конечно, всегда есть место для интерпретации;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...