Domanda

Quando ho una classe con un membro Mappa, non voglio disegnare un oggetto classe / interfaccia separato per rappresentare la Mappa stessa, ma preferirei trattare la mappa come se fosse un tipo nativo, piuttosto di un oggetto complesso.

Considera il seguente esempio

public class IndexManagerImpl implements IndexManager {
    /* ... */

    private static Map<Searcher, Integer> searcherCache;
}

Vorrei sottolineare il fatto che un IndexManagerImpl contiene (anche se indirettamente) riferimenti alle istanze Searcher . Sarebbe bello se la rappresentazione potesse mostrare anche i parametri di tipo di searcherCache .

È stato utile?

Soluzione

In disaccordo con Martin ... MAP è la struttura di dati di base che apprendiamo in qualsiasi corso di laurea in informatica! Esiste nella maggior parte delle lingue moderne ed è un'importante risorsa di progettazione per gli analisti. Una mappa può essere disegnata come associazione in alcune situazioni, ma sarà necessario un qualche tipo di estensione (stereotipi) OPPURE puoi definire una classe modello. Non mi piace l'approccio modello: nasconde le associazioni tra i principali attori. L'ultima risorsa è la AssociationClass, una speciale classe UML utilizzata per definire le relazioni nxn con gli attributi, ciò che penso si adatta al tuo problema, in cui il "intero". Il campo è una specie di contatore di Ricercatori relativi a indexManager. Ricorda anche che per codice non puoi vedere l'altro lato della relazione, mentre UML è progettato per mostrare entrambi i lati, i problemi di navigazione e così via.

Altri suggerimenti

In realtà gli oggetti di raccolta indicano un'associazione uno-a-molti tra due classi. Pertanto, nel diagramma dovrebbe essere presente una classe IndexManagerImpl con un'associazione uno-a-molti a una classe Searcher

Le mappe non possono essere considerate raccolte in quanto hanno proprietà diverse rispetto alle raccolte. In realtà una mappa è multipla di raccolta con relazione (mappatura) specifica. A mio avviso, la rappresentazione della mappa dipende in larga misura dal requisito e potrebbero esserci diverse rappresentazioni UML in base al tuo requisito. Pertanto, in una forma semplice, è possibile rappresentare una relazione della mappa, una o più associazioni all'elemento set di chiavi e un'associazione uno a uno dell'elemento keyset all'elemento valore. Dove l'elemento chiave e l'elemento valore sono wrapper per gli elementi originali in quanto l'associazione non è effettivamente con gli elementi originali.

Spero che questo aiuti ....

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top