Come mostra un Singleton rapporto in un diagramma di classe

Se una classe contiene un puntatore ad una classe singleton, può essereaggregation?

Per la mia comprensione non può essere un has-a rapporto, in quanto la classe non creare un’istanza della classe singleton, è proprio come association rapporto.

InformationsquelleAutor ahj | 2012-02-29

 

4 Replies
  1. 11

    Il titolo non rende al 100% completo di senso come è scritto. Ci sono classi singleton, ma non ci sono davvero singleton relazioni. Ogni rapporto può essere assegnata una molteplicità di entrambe le estremità, quindi se vuoi dire ” one-to-one relazioni, tutto quello che dovrete fare è assegnare molteplicità 1 a entrambe le estremità.

    Le classi possono anche avere la molteplicità. Non capita spesso di vedere questo utilizzato, tranne in un caso: singleton.

    Quando si tratta di avere o che contiene o fa riferimento a B, ci sono fondamentalmente tre livelli di tenuta in UML.

    Di aggregazione (inevase romboidale testa di freccia), implica che il contenimento non è esclusiva e che l’oggetto contenuto non condividere ogni aspetto del suo ciclo di vita con l’oggetto che lo contiene. In attuazione, in genere, è un puntatore.

    Composizione (riempito romboidale testa di freccia) implica che l’oggetto contenuto viene distrutta quando l’oggetto che lo contiene non. Ottenere questo lavoro di solito significa che il contenimento è esclusivo. In attuazione, questo è spesso un indicatore di cui il distruttore viene chiamato il distruttore della classe che lo contiene (anche se non può essere creata nel costruttore della classe che lo contiene).

    Diretto associazione o di un membro attributo (stessa cosa in UML) implica che l’oggetto contenuto è parte integrante dello stato, o di un componente se si vuole, di oggetto che lo contiene. In attuazione, questo in genere significa che il riferimento non è un puntatore, o se è che l’oggetto contenuto è co-creato e distrutto con l’oggetto che lo contiene.

    Aggregazione di un singleton è perfettamente ammissibile (anche da diverse classi), perché l’aggregazione è, per definizione, non esclusiva.

    Composizione è un po ‘ incerto, a meno che la classe che lo contiene, è anche un singleton.

    Attributo /directed associazione è probabilmente sbagliato. Se la classe che lo contiene è un singleton, non ha alcun senso per rendere la classe di contenuto di un singleton, in quanto che implicita. E se la classe di contenuto è usato come membro in due classi diverse, non può essere un singleton.

    In aggiunta a quanto sopra, si può anche aggiungere come molti di Utilizzo di relazioni come si desidera. Questo è comune a tutti, e implica che la classe all’origine di fine del rapporto di chiamate di metodi in classe a il target di fine.

    Come mostra un Singleton rapporto in un diagramma di classe

    • Ciao, potresti dirci qualcosa di più circa il punto “se la classe di contenuto è usato come membro in due classi diverse, non può essere un singleton.”?
  2. 4

    Direi che, tecnicamente, sì, si può avere una variabile membro che è un puntatore a un oggetto singleton e la chiamata di aggregazione; utilizzando l’aggregazione termine non ha molto senso una volta che si scrive il codice però. Per tutti gli effetti, è solo un’associazione.

    Tuttavia, l’uso di un’aggregazione di associazione in un diagramma può o non può aiutare un visualizzatore di diagramma a comprenderlo. Che probabilmente dipende da chi si sta andando a mostrare e cosa si potrebbe capire di aggregazione per dire.

    Effettivamente rispondere alla domanda nel titolo (utilizzando informazioni da UML Guida per l’Utente (2 ° Edizione):

    ______________________          ______________________
    |                    |          |                   1|
    |  AggregatingClass  |          |   SingletonClass   |
    |____________________|      0..1|____________________|
    |                    |<>--------|                    |
    |____________________|          |____________________|
    |                    |          |                    |
    |____________________|          |____________________|

    (Nota il 1 in alto a destra della classe singleton casella per indicare le cardinalità.)

    • Ho capito che nessuno aveva effettivamente rispondere al titolo della domanda!
    • …e dopo il mio ultimo commento, non è stato ancora senza risposta! Ho aggiornato il mio schema e risposto correttamente. Ho letto male singleton relationship come singleton pattern. @ahj
  3. 1

    C’è anche un’aggregazione con una piazza aperta, invece di un pieno.
    Open significa che la prima istanza di non fare altro (ma ha ancora una relazione).

  4. 1

    Si potrebbe far finta che non sia aggregazione, ma la verità è questa: singleton non hanno nulla a che fare con object oriented codice. Essi sono una forma di stato globale, proprio come le variabili globali sono).

    Si potrebbe desiderare di prendere in considerazione un approccio diverso al problema.

    P. S alcuni materiali che potrebbero aiutare:

Lascia un commento