2012-06-25 6 views
13

mi sono imbattuto in questa linea in un libro su WCF:Qual è la differenza tra un linguaggio orientato ai componenti e orientato agli oggetti?

... e le lingue utilizzate per la scrittura di componenti COM (come C++ e Visual Basic) erano nel migliore dei casi orientata agli oggetti, ma non orientato ai componenti. ..

Qual è la differenza tra i due?

+1

Buona domanda. Vorrei anche mandare un'email all'autore per chiedere loro di rispondere a questa domanda qui. –

+0

Raramente collego [Wikipedia] (http://en.wikipedia.org/wiki/Component-based_software_engineering#Differences_from_object-orientated_programming), ma quando lo faccio ... O hai bisogno di una risposta più dettagliata? – raina77ow

+2

Parlando di COM, avrebbe potuto significare che non avevano alcun supporto diretto/incorporato per lavorare con/creare oggetti COM. Guardandolo in modo leggermente diverso, le probabilità sono in realtà piuttosto buone che non significava molto tecnico da parte sua, e stava semplicemente cercando un modo per distinguere il "nuovo splendente" dal "noioso vecchio", così è venuto fuori con una frase di marketing dal suono ragionevole. –

risposta

7

La mia opinione/comprensione è probabilmente sbagliata e ho intenzione di prendere fuoco per averlo scritto.

Oggetto orientato a "me" indica un modo di riconoscere i modelli di dati chiave essenziali per il contesto del problema e i metodi corrispondenti che manipolano lo stato di questi dati, anche nel contesto del problema. È un modello per l'organizzazione dei dati. Un altro schema si sta organizzando semplicemente sulla base di funzioni suddivise in livelli gestibili - procedurali.

Il modello orientato al componente non si preoccupa molto di come si organizzano i vari modelli di dati ma di come li si lega. È così che parlano tra loro. Potrebbe essere in molti modi COM/RPC, servizi Web (REST/SOAP) ecc. Questo è accoppiamento lento o accoppiamento stretto.

E l'autore è solo cercando di dire che le capacità COM sono state costruite con un linguaggio che non fornisce servizi COM in-built ad esso :)

mia comprensione è che l'affermazione non è corretta come scelta di tie la creazione di componenti, è un'astrazione di livello superiore a quella fornita dal linguaggio C/C++. COM fornisce solo uno dei modi per legare i componenti.

0

Qui è il mio introito,

Inheritance contro Interfacce sembra essere un argomento che viene menzionato un sacco quando si parla del 2.

Penso anche che il design dei componenti implica che avete a che fare con le scatole nere

Anche il design del componente sembra coprire sistemi che vanno oltre un singolo spazio di memoria. Quindi chiamare i servizi web o altri servizi remoti.

Non direi che si tratta di paradigmi in competizione, ma di paradigmi diversi.