Coesione e disaccoppiamento, che cosa rappresentano?
-
04-10-2019 - |
Domanda
Quali sono coesione e disaccoppiamento? Ho trovato informazioni su accoppiamento ma non di disaccoppiamento.
Soluzione
Tale articolo di Aaron è molto buono per la comprensione, anche io consiglierei di leggere Manning Publications Primavera in azione libro , danno ottimi esempi di come le risolve primaverili che il problema sarà sicuramente migliorare la comprensione di questo.
Modifica
Sono venuto attraversavano questo in questo grande libro chiamato Crescere software orientato agli oggetti guidato dai test:
accoppiamento:
Gli elementi vengono accoppiati se un cambiamento uno forze di un cambiamento nell'altra. Per esempio, se due classi ereditano da una genitore comune, allora un cambiamento in uno classe potrebbe richiedere una modifica della altro. Pensate ad un sistema di combo audio: È strettamente legato perché se vogliono cambiare da analogico a digitale radio, dobbiamo ricostruire l'intera sistema. Se montiamo un sistema da separa, avrebbe accoppiamento basso e potremmo semplicemente scambiare la ricevitore. caratteristiche “Liberamente” accoppiati (Cioè quelli con accoppiamento basso) sono più facile da mantenere.
di coesione:
Un elemento di coesione è una misura dal fatto che le sue responsabilità formano un un'unità significativa. Ad esempio, una classe che analizza entrambe le date e gli URL non è coerenti, perché sono estranei concetti. Pensate a una macchina che lava entrambi i vestiti e piatti: è improbabile che fare entrambe le cose well.2 Al All'altro estremo, una classe che analizza solo la punteggiatura in un URL è improbabile che sia coerente, perché non rappresenta un intero concetto. Per fare niente, il programmatore dovrà trovare altri parser per protocollo, di accoglienza, di risorse, e così via. Caratteristiche con coerenza “alto” sono più facile da mantenere.
Altri suggerimenti
di coesione - legata al principio che un / metodo di classe dovrebbe essere responsabile per una cosa solo cioè non esistono metodi randagi che non appartengono alla incapsulamento; un metodo non solo una cosa. High / Low di coesione è il grado in cui questo vale.
Accoppiamento - come interdipendenti diverse parti del sistema sono. per esempio come e dove ci sono dipendenze. Se due classi effettuare chiamate ai metodi di ogni altro allora sono strettamente accoppiati, come cambiando una significherebbe dover cambiare l'altro. Disaccoppiamento è il processo di fare qualcosa che è stato strettamente meno, non agganciati affatto.
sistemi flessibili hanno alta coesione e allentato accoppiamento.
Per l'accoppiamento, questo articolo Wikipedia dovrebbe rispondere a tutte le vostre domande. Questo articolo si occupa con la coesione.
"disaccoppiamento" è solo un altro nome per "piccolo / basso accoppiamento".
Quindi questi termini rispondere a queste domande:
- Quanto ogni parte del vostro progetto dipende da un'altra parte?
- Se si voleva utilizzare solo una parte del progetto (come per risolvere un problema specifico) quanto avete bisogno di sapere a tutto il resto del progetto?
- È ogni parte del vostro progetto si è concentrato su una sola soluzione a un problema specifico o non soluzioni "fuga" in altre parti?
Qui ci sono i miei pensieri sulla coesione. Immaginate che ci sia un modulo. Dentro quel modulo, abbiamo alcuni compiti. Quando queste attività sono altamente correlate tra loro, ci dicono che ha alta coesione. Quando questi compiti non sono legati, diciamo che ha una bassa coesione. Il mio migliore tentativo di spiegare disaccoppiamento è che il disaccoppiamento è l'atto di rimozione di accoppiamento.
Low Coupling ci aiuta ad alta coesione! Ricordate che vogliamo che il nostro modulo di avere attività correlate e una singola responsabilità. Ma che cosa è l'accoppiamento? L'accoppiamento è il grado di dipendenza da altri moduli per ottenere la nostra responsabilità singola per quel modulo. Così da accoppiamento basso, diciamo che non siamo molto dipendenti moduli esterni quindi abbiamo alta coesione.
Tuttavia, se abbiamo molte dipendenze ai moduli esterni, avremmo accoppiamento alto e bassa coesione. Get it?
Altri pensatori e gruppi più decorati dicono:
La coesione è il grado in cui i compiti svolti da un singolo modulo funzionalmente correlate. "IEEE 1983" di coesione è la 'colla' che tiene insieme un modulo. Esso può essere pensato come il tipo di associazione tra gli elementi componenti di un modulo. In generale, si vuole il più alto livello di coesione possibile ". Bergland 1981
Un componente software è detto di presentare un elevato grado di coesione se gli elementi di tale unità presentano un elevato grado di parentela funzionale. Questo significa che ogni elemento nell'unità programma dovrebbero essere essenziale per tale unità a raggiungere il suo scopo. Sommerville 1989
disaccoppiamento consente la separazione di interazione dell'oggetto da classi e ereditarietà in strati distinti di astrazione utilizzati per polimorfico-ally disaccoppiare l'incapsulamento che è la pratica di utilizzare il codice riutilizzabili per impedire moduli di codice discreti di interagire con l'altro.