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

Вы хотите изменить данные. Одним из методов является условная агрегация. Для этой цели я бы порекомендовал:

select name,
       group_concat(case when comm_rid = 5 then comm_value end) as what_5_means,
       group_concat(case when comm_rid = 6 then comm_value end) as radio,
       group_concat(case when comm_rid = 7 then comm_value end) as whateve_7_means
from . . .
group by name;

Я не знаю, из какого вопроса использовать пункт from.

При этом используется group_concat(), а не max() на тот случай, если у кого-то есть несколько средств связи одного типа.

12
задан Scott James 12 October 2008 в 21:12
поделиться

5 ответов

Радио Разработки программного обеспечения имеет эпизод по точно этой теме: http://se-radio.net/podcast/2008-02/episode-87-software-components

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

Обновление: Действительно, один не должен воображать такую архитектуру, потому что, поскольку другие указали, Бобы Java или Сервлеты можно было, конечно, считать компонентно-ориентированной архитектурой.

2
ответ дан 2 December 2019 в 22:39
поделиться

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

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

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

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

3
ответ дан 2 December 2019 в 22:39
поделиться

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

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

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

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

1
ответ дан 2 December 2019 в 22:39
поделиться

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

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

"Компонент", "Слой", "Уровень" и другие философские группировки - обычно - условные. Среда VB COM имела формализм для компонентов. Все остальные рассматривают их как просто идеи.

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

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

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

С некоторой осторожностью, можно определить подход к "компонентам" с интерфейсом и метаданными и многочисленными другими функциями.

1
ответ дан 2 December 2019 в 22:39
поделиться

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

  • EJBs
  • Сервлеты

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

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

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

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

0
ответ дан 2 December 2019 в 22:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: