2009-08-13 5 views
5

all'interno del paradigma OO, abbiamo scelto di utilizzare le classi, perché ci aiutano a rompere il sistema verso il basso, e fornire vantaggi collaterali piacevoli come l'incapsulamento, la separazione delle responsabilità, l'ereditarietà, la modularità, eccTerminologia: qual è la differenza tra una classe e un componente?

Se guardiamo un sistema software a livello di componenti, possiamo semplicemente trattare i componenti nello stesso modo concettuale, cioè un componente è semplicemente una "Big Class"? O c'è ancora dell'altro?

Quali ulteriori considerazioni devono essere fornite durante la progettazione dei componenti?

EDIT:

So che una classe e un componente sono cose diverse. Capisco anche che un componente può contenere molte molte classi, ognuna delle quali ha i propri ruoli e responsabilità.

Vedrò se riesco a spiegarmi meglio.

  • Le classi ci consentono di risolvere problemi più grandi perché ci consentono di pensare e progettare in modo più astratto.
  • Esistono regole & tecniche per determinare come suddividere e assegnare dati e funzionalità alle classi.

Questa sembra una situazione molto simile a quella del design dei componenti, proprio a un livello più alto di astrazione. Le tecniche utilizzate per determinare quali classi sono necessarie scalare fino a componenti e/o ci sono altre cose che influiscono su un progetto di sistema di alto livello che non si applicano a livello di astrazione di classe?

+0

controllare anche http://stackoverflow.com/questions/1027875/in-a-software-project-how-would-you-differentiate-a-component-from-a-module – dfa

risposta

10

cosa dire dell'utilizzo della fase o del ruolo del progetto per differenziarli?

Per esempio un componente è un'unità in fase di progettazione (architetti di sistema, progettisti), mentre una classe è un'unità implementazione in tempo (programmatori). Quindi i progettisti parlano di componenti (o sottosistemi o moduli, le caselle di livello elevato nel disegno dell'architettura) mentre i programmatori parlano di componenti e classi (che implementano componenti).

Sotto questa visualizzazione un componente è implementato da una o più classi.

-1

Eh?

La componente "File Upload" può essere composto da un sacco di classi: pagina per ricevere il file, di classe per salvarlo, ecc

+0

Forse non ero chiaro in la mia domanda. L'ho chiarito ora :) – andrewdotnich

2

Penso spesso del componente nel senso UML (vedi Wikipedia descrizione), per cui rappresenta una "parte modulare di un sistema". In questo senso tende a rappresentare una funzionalità più ampia di una classe e potrebbe infatti essere composta da più classi.

Considerazioni darei per la progettazione di componenti sono:

  • Come potrebbe essere riutilizzato. In particolare quali sono i casi d'uso che giustificano l'implementazione di qualcosa come un componente piuttosto che un codice su misura (Come un diploma ho usato per rendere tutto riutilizzabile!)
  • Fornire un'interfaccia sensibile (s), e in alcuni casi ulteriormente semplificata interfacce, forse usando il modello Facade.

Speranza che aiuta.

1

In questo contesto (ipotetico) un componente può essere pensato come una serie di classi.

Tuttavia, a seconda della tecnologia utilizzata, i componenti possono essere più di un insieme di classi. cioè possono avere proprietà e funzionalità aggiuntive che non fanno parte delle classi che li formano. ad es. un componente COM +.

Quindi dipende davvero da una situazione specifica.

1

Secondo la UML v2 specification:

8.3.1 Componente (da BasicComponents, PackagingComponents)

Un componente rappresenta una parte modulare di un sistema che incapsula il contenuto e cui verificarsi è sostituibile all'interno del proprio ambiente.

Un componente definisce il suo comportamento in termini di fornito e interfacce richieste. Come tale, un componente serve come un tipo cui conformità è definita da questi interfacce fornite e richieste (che comprende sia i loro statica nonché dinamica semantica). Un componente può pertanto essere sostituito da da un altro solo se i due sono conformi allo standard . pezzi più grandi di funzionalità di un sistema possono essere assemblati da componenti riutilizzo come parti in un componente che comprende o assemblaggio di componenti e cablaggio insieme le loro richieste e fornite interfacce.

Quando si utilizza questa definizione, i componenti sembrano essere interamente circa Inversion Of Control.

Guardando il framework .NET per un esempio, l'interfaccia IComponent fornisce in effetti IComponent. Site. GetService per ottenere l'inversione del controllo attraverso il modello del fornitore di servizi. Un'alternativa più leggera è l'iniezione di dipendenza.

-1

componenti sono sottosistemi di classi. Classi forniscono la base modello basso livello di un'interfaccia oggetto mentre componenti aggiunge alcune funzionalità ad esso.

Problemi correlati