Esempi di composizione nell'ingegneria del software?

7

Nella programmazione, vari termini come l'astrazione sono menzionati abbastanza pesantemente. Cosa, tuttavia, è la composizione? Che cosa è un esempio semplice ma efficace di composizione in gioco per ottenere un codice di buona qualità (buona qualità che significa facile da capire, breve e concisa, ecc.)

    
posta dotnetdev 15.09.2011 - 00:47
fonte

5 risposte

9

Nel senso programmazione funzionale , una composizione è:

se una funzione f prende un foo e restituisce una barra, e    se una funzione g prende una barra e restituisce un blah,    poi c'è una funzione h che prende un foo e restituisce un blah, tale che:    h (foo) = g (f (foo))

Cioè, se f è "prendi la lunghezza di una stringa" e g è "raddoppia la dimensione di un intero", allora esiste una funzione composta h che prende la lunghezza di una stringa e la raddoppia.

Nel senso di programmazione orientato agli oggetti una composizione è: una classe C può contenere campi delle classi D ed E. C è una classe che compone una D con una E.

    
risposta data 15.09.2011 - 01:04
fonte
5

La composizione è semplicemente quando hai più oggetti che compongono un oggetto più complesso. Esempio:

class Person {
    string FirstName { get; set; }
    string LastName { get; set; }
}

La persona è composta da FirstName e LastName

    
risposta data 15.09.2011 - 00:58
fonte
1

In OO , ci sono almeno questi significati di Composizione oltre a quanto menzionato prima:

1-Composition di diversi tipi di dati in una classe rappresenta un nuovo tipo.

Class House { auto pubblica myCar; forno pubblico myOven; tv pubblica myTv; }

2-Composition come tipo di associazione tra 2 oggetti la composizione in UML viene rappresentata usando l'etichetta "ha a" ed è rappresentata da una forma di diamante riempita di nero. Vedi:

link

link

3- Le classi interne rappresentano un tipo di composizione. In C # .Net puoi avere 1 file di codice di classe con più di 1 definizione di classe al suo interno.

In Modellazione delle relazioni di entità , la composizione viene implementata includendo la chiave primaria della tabella padre come parte della chiave della chiave primaria della tabella figlia e stabilendo un vincolo tale che quando il genitore è cancellato, tutti i bambini sono cancellati.

Questa rappresentazione, toget * testo strong * di lei con composizione nell'associazione di oggetti si traduce in un strong legame vitale tra componenti in modo che nessuno possa vivere (o avere un significato aziendale) senza l'altro. Un buon esempio potrebbe essere una fattura composta da intestazione e righe di dettaglio. Le linee di dettaglio da sole non hanno senso senza le informazioni di intestazione e viceversa.

    
risposta data 15.09.2011 - 05:16
fonte
0

Sebbene il termine composizione possa riferirsi a molti aspetti della programmazione come oggetti multipli all'interno di una classe, il termine quando si parla di programmazione astratta in genere significa eseguire più linee funzionali di codice all'interno di una singola istruzione. Pensa a f (g (x)) in termini matematici.

Il metodo di composizione più comune a cui posso pensare nella programmazione del mondo reale è la definizione delle direttive del pre-processore in C ++ o C.

 #define getmax(a,b) a>b?a:b

il precedente definisce una funzione if / then che restituisce un massimo di 2 interi diversi che possono quindi essere usati all'interno di altre linee di codice creando così una composizione.

Se hai mai sentito parlare di chiavi pubbliche e private quando parli di crittografia, questo è un classico esempio di algoritmi di composizione in cui f (g (x)) e x sono in genere la tua chiave privata.

    
risposta data 15.09.2011 - 01:09
fonte
0

Dipende da cosa intendi per composizione, che viene utilizzato per varie cose. Per prima cosa penso al pattern composito , che è ampiamente utilizzato. La gestione dei dati in una struttura ad albero è un semplice esempio di pattern composito e consente una facile ricorsione attraverso i nodi.

    
risposta data 15.09.2011 - 01:27
fonte

Leggi altre domande sui tag