OOP BlackJack Game (Tworzenie talii)

Próbuję stworzyć przyjazną OOP grę Java BlackJack, aby rozwijać moją wiedzę.

Uderzyłem w ścianę i po prostu nie wiem wystarczająco, aby zobaczyć problem. Zastanawiałem się, czy ktoś może wskazać moje problemy.

Dodatkowo, po wyszukaniu odpowiednich tematów na ten temat, odkrywałem, że ludzie raz po raz mówią, że używanie enumów byłoby bardziej korzystne, jako że początkującym byłoby to zalecane? Lub powinienem na razie trzymać się tablic String.

Dziękuję Ci.

mój kod:

public class BlackJack{

BlackJack() {
    Deck deck =  new Deck();
    deck.createDeck();
    System.out.println(deck.deckList);
}

public static void main(String[] args) {

    new BlackJack();


   }
}


public class Card{

private String valueCard;
private String suitCard;

public Card(String value, String suit) {
    this.valueCard = value;
    this.suitCard = suit;
}

public String getValue() {
    return valueCard;
}
public String getSuit() {
    return suitCard;
  }
}

import java.util.ArrayList;


public class Deck {

ArrayList<Card> deckList = new ArrayList<Card>();

String[] value = {"Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten",
        "Jack", "Queen", "King", "Ace"};
String[] suit = {"Hearts", "Clubs", "Spades", "Diamonds"};


Deck() {

    deckList = new ArrayList<Card>();

}

public void createDeck() {
    for (int i = 0; i < value.length; i++) {
        for (int x = 0; x < suit.length; x++) {
            Card card = new Card(value[i], suit[x]);
            deckList.add(card);

          }
      }
  }
}

edit: w tej chwili moim out-outem z mojego println jest: [Card @ addbf1, Card @ 42e816, Card @ 9304b1, ... etc] Co to oznacza?

Dziękuję za Twój czas.

EDYCJA: Każdy, kto również potrzebuje odpowiedzi na to w przyszłości:

dodany:

    @Override
public String toString(){
    return valueCard + " of " + suitCard;
}
 }  

do mojej klasy kart, a następnie użyłem jej w klasie Deck:

import java.util.ArrayList;


public class Deck {

ArrayList<Card> deckList = new ArrayList<Card>();

String[] value = {"Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten",
        "Jack", "Queen", "King", "Ace"};
String[] suit = {"Hearts", "Clubs", "Spades", "Diamonds"};


Deck() {

    deckList = new ArrayList<Card>();

}

public void createDeck() {
    for (int i = 0; i < value.length; i++) {
        for (int x = 0; x < suit.length; x++) {
            Card card = new Card(value[i], suit[x]);
            deckList.add(card);
            card.toString();
        }
    }
}
}

ENUM: public class CardEnum {

public enum Rank { DEUCE, THREE, FOUR, FIVE, SIX,
    SEVEN, EIGHT, NINE, TEN, JACK, QUEEN, KING, ACE }

public enum Suit { CLUBS, DIAMONDS, HEARTS, SPADES }


}


public class Card{

private CardEnum.Rank rank;
private CardEnum.Suit suit;

public Card(CardEnum.Rank rank, CardEnum.Suit suit) {
    this.rank = rank;
    this.suit = suit;
}

public Rank getRank() {
    return rank;
}
public Suit getSuit() {
    return suit;
}

@Override
public String toString(){
    return rank + " of " + suit;
}
}

questionAnswers(1)

yourAnswerToTheQuestion