2009-08-13 7 views
5

Dentro del paradigma orientado a objetos, que optan por utilizar las clases porque nos ayudan a romper el sistema, y ​​proporcionar beneficios secundarios agradables tales como la encapsulación, la separación de responsabilidades, la herencia, modularidad, etc.Terminología: ¿Cuál es la diferencia entre una clase y un componente?

Si nos fijamos en una sistema de software a nivel de componentes, ¿podemos simplemente tratar los componentes de la misma manera conceptual, es decir, un componente es simplemente una "Gran Clase"? ¿O hay más que eso?

¿Qué consideraciones adicionales deben darse al diseñar componentes?

EDIT:

Sé que una clase y un componente son cosas diferentes. También entiendo que un componente puede contener muchas clases, cada una de las cuales tiene sus propios roles y responsabilidades.

Veré si puedo explicarme mejor.

  • Las clases nos permiten resolver problemas más grandes porque nos permiten pensar y diseñar de manera más abstracta.
  • Existen reglas & técnicas para determinar cómo desglosar y asignar datos y funcionalidad a las clases.

Parece una situación muy similar a la del diseño de componentes, solo que a un nivel más alto de abstracción. ¿Las técnicas utilizadas para determinar qué clases son necesarias se amplían a los componentes, y/o hay otras cosas que afectan el diseño de un sistema de alto nivel que no se aplican al nivel de abstracción de la clase?

+0

compruebe también http://stackoverflow.com/questions/1027875/in-a-software-project-how-would-you-differentiate-a-component-from-a-module – dfa

Respuesta

10

¿qué hay de usar la fase del proyecto o el rol para diferenciarlos?

Por ejemplo un componente es una unidad de tiempo de diseño (arquitectos de sistemas, los diseñadores), mientras que una clase es una unidad de tiempo de implementación (programadores). Por lo tanto, los diseñadores hablan sobre los componentes (o subsistemas o módulos, los cuadros de alto nivel en el dibujo de su arquitectura) mientras que los programadores hablan sobre los componentes y las clases (que implementan los componentes).

Bajo esta vista, un componente es implementado por una o más clases.

-1

¿Eh?

El componente de "subida de archivos" puede consistir en un montón de clases: Página para recibir el archivo, clase para guardarlo, etc.

+0

Tal vez no estaba claro en mi pregunta. Lo he aclarado ahora :) – andrewdotnich

2

A menudo pienso del Componente en el sentido de UML (ver Wikipedia descripción), mediante el cual representa una "parte modular de un sistema". En este sentido, tiende a representar una funcionalidad más grande que una clase y, de hecho, podría componerse de múltiples clases.

Consideraciones que daría por el diseño de los componentes son:

  • cómo podría ser reutilizado. En particular, ¿cuáles son los casos de uso que justifican la implementación de algo como un componente en lugar de un código personalizado (Como graduado solía hacer todo reutilizable)
  • Proporcionando interfaz (s) sensible (s), y en algunos casos simplificada adicional interfaces, quizás usando el patrón Facade.

Espero que ayude.

1

En este contexto (hipotético), un componente se puede considerar como una serie de clases.

Sin embargo, dependiendo de la tecnología que utilice, los componentes pueden ser más que un conjunto de clases. , es decir, pueden tener propiedades y funcionalidades adicionales que no forman parte de las clases que las forman. p. un componente COM +.

Por lo tanto, depende de una situación específica realmente.

1

Según la UML v2 specification:

8.3.1 Componente (de BasicComponents, PackagingComponents)

Un componente representa una parte modular de un sistema de que encapsula sus contenidos y cuya manifestación es reemplazable dentro de su entorno.

Un componente define su comportamiento en términos de las interfaces proporcionadas y requeridas . Como tal, un componente sirve como un tipo cuya conformidad se define por estos provistas y requeridas interfaces de (que abarca tanto sus estática como así como dinámica semántica). Por lo tanto, un componente puede sustituirse por por otro solo si los dos son del tipo . Las piezas más grandes de la funcionalidad de un sistema de pueden ensamblados por componentes reutilización como partes en un componente que abarca o montaje de componentes, y el cableado juntos sus requeridas y proporcionadas interfaces.

Cuando utiliza esta definición, los componentes parecen ser todo acerca de Inversion Of Control.

En cuanto al .NET framework para un ejemplo, la interfaz IComponent proporciona efectivamente IComponent. Site. GetService para lograr la inversión del control a través del patrón del proveedor del servicio. Una alternativa más ligera es la inyección de dependencia.

-1

componentes son subsistemas de clases. Clases proporcionan el modelo básico de bajo nivel de una interfaz objeto mientras componentes añade algunas funciones a la misma.

Cuestiones relacionadas