Modellazione carte
L’entità carta, intesa come carta vagone, è caratterizzata da un colore. Le carte vengono gestite in un’entità base Cards
, che modella una lista di carte; questa viene estesa per realizzare i concetti di mazzo di carte (Deck
) e mano del giocatore (Hand
), ma consentendo anche una facile creazione di altre entità che consistono in una lista di carte. Una lista di carte, quindi anche un mazzo e una mano del giocatore, viene creata tramite un generatore generico, che può essere realizzato per creare per esempio un’istanza di Deck
o di Hand
. Le entità forniscono un’implementazione di default del generatore, che viene utilizzata nel caso in cui non ne venga specificata un’altra.
---
config:
class:
hideEmptyMembersBox: true
---
classDiagram
Hand --|> Cards
Color "1" --o "*" Card
Card "1..*" --o "0..1" Cards
Hand "*" ..> "1" CardsGenerator~T~: use
Cards "*" ..> "1" CardsGenerator~T~: use
Deck --|> Cards
Deck "*" ..> "1" CardsGenerator~T~: use
class Color {
<<Enumeration>>
BLACK
WHITE
RED
BLUE
ORANGE
YELLOW
GREEN
PINK
}
class Card {
+color: Color
}
class CardsGenerator~T~ {
<<interface>>
+ generate() List[Card]
}
class Cards {
+ cards: List[Card]
}
class Deck {
<<interface>>
+ shuffle() Unit
+ draw(n: Int) List[Card]
+ reinsertAtTheBottom(card: Card) Unit
}
class Hand {
<<interface>>
+ playCards(cardsToPlay: List[Card]) Unit
+ addCards(cardsToAdd: List[Card]) Unit
+ groupCardsByColor() Unit
}