+package solitaire;
+
+final class Card {
+ private final Suit suit;
+ private final Rank rank;
+ private boolean hidden;
+
+ Card(Suit suit, Rank rank, boolean hidden) {
+ this.suit = suit;
+ this.rank = rank;
+ this.hidden = hidden;
+ }
+
+ Card(Suit suit, Rank rank) {
+ this(suit, rank, true);
+ }
+
+ Suit getSuit() {
+ return this.suit;
+ }
+
+ Rank getRank() {
+ return this.rank;
+ }
+
+ boolean isHidden() {
+ return this.hidden;
+ }
+
+ void reveal() {
+ this.hidden = false;
+ }
+
+ @Override
+ public String toString() {
+ if (this.hidden)
+ return " * ";
+
+ return String.format("%s%2s", this.suit, this.rank);
+ }
+}