Che cos'è esattamente la programmazione orientata ai componenti e in che cosa è diversa dalla programmazione orientata agli oggetti?
Grazie
Che cos'è esattamente la programmazione orientata ai componenti e in che cosa è diversa dalla programmazione orientata agli oggetti?
Grazie
Chiamerei Component Oriented Programming un discendente specializzato della programmazione orientata agli oggetti, nel senso che l'obiettivo è produrre oggetti generici facilmente riusabili.
Alla fine degli anni '90, ho frequentato un Open House presso il Dipartimento di Computer Science dell'UT Austin. Il mio obiettivo era parlare con un vecchio amico, un professore, per avere un'idea di un problema che avevo incontrato al lavoro. (Mi ha dato il puntatore esatto di cui avevo bisogno, e mi ha anche suggerito di parlare con un altro vecchio amico, che mi ha anche dato un ottimo aiuto.) Mentre ero lì, ho parlato con alcune altre persone, una di loro era Don Batory, che era lavorando alla creazione di generatori di programmi che rendessero più facile la costruzione e la composizione (combaciare) degli oggetti componenti.
Il suo commento era che la programmazione orientata agli oggetti non era abbastanza. Ti ha dato oggetti con interfacce definite, ma non erano necessariamente riutilizzabili. Ci vuole un ulteriore livello di sforzo progettuale per evitare che problemi estranei si insinuano nell'oggetto. Il Dr. Batory era entrato in questo mondo dal database, cercando di rendere più facile la costruzione di sistemi di database. A un certo punto, aveva sentito parlare di ragazzi che stavano affrontando un problema simile nella costruzione di sistemi operativi, e fu scioccato nello scoprire che la soluzione che stavano lavorando era dannatamente simile a ciò che stava facendo, indicando che c'era un corpo sottostante di riutilizzabile conoscenza.
Esempio reale: in un progetto che ho lavorato a metà degli anni '90, esisteva una "regola aziendale" che il telemetro laser non doveva essere sparato a meno che il localizzatore non fosse bloccato su un bersaglio. Il metodo orientato agli oggetti consente di passare lo stato di blocco nell'oggetto telemetro, come interblocco finale sul comando di sparo. Il modello del componente dice che l'oggetto telemetro esporta un metodo Fire () e la logica aziendale che utilizza il telemetro controlla lo stato del blocco target prima di premere il grilletto.
Sebbene l'approccio OOP si concentri sulla relazione tra le classi, COP si concentra maggiormente sui moduli intercambiabili che funzionano in modo indipendente e non richiedono la necessità di sapere esattamente come funzionano.
Modifica - Non penso che questo non sia chiaro, la domanda affronta la differenza di approccio, non sono completamente separati. In COP, un modulo può essere considerato un oggetto riutilizzabile, guidato dalla funzione (spesso un gruppo di classi) che può essere utilizzato e riutilizzato così com'è. OOP è più granulare, concentrandosi sulle singole classi stesse che, probabilmente richiedono un'interazione specifica con altre classi per funzionare dal punto di vista funzionale.
Leggi altre domande sui tag object-oriented design architecture component