tenho o seguinte código
[code]package capitulo_7;
import java.util.Random;
public class DeckOfCards {
private Card[] deck;
private int currentCard;
private static final int NumberOfCards = 52;
private static final Random randomGenerator = new Random();
public DeckOfCards (){
String faces[] = {"Ás","Dois","Tres","Quatro","Cinco","Seis","Sete",
"Oito","Nove","Dez","Valete","Rainha","Rei"};
String suits[] = {"Coração","Ouro","Paus","Espadas"};
deck = new Card[NumberOfCards];
currentCard = 0;
for(int count = 0; count < deck.length; count++){
deck[count] = new Card( faces[count % 13], suits[count / 13]);
}
}
public void shuffle(){
currentCard = 0;
for(int first = 0; first < deck.length; first++){
int second = randomGenerator.nextInt(NumberOfCards);
Card temp = deck[first];
deck[first] = deck[second];
deck[second] = temp;
}
}
public Card dealCard(){
if(currentCard < deck.length)
return deck[currentCard++];
else
return null;
}
}
[/code]
[code]package capitulo_7;
public class Card {
private String face, suit;
public Card(String cardFace, String cardSuit){
face = cardFace; suit = cardSuit;
}
public String toString(){
return face + " de " + suit;
}
}[/code]
[code]package capitulo_7;
public class DeckOfCardTest {
public static void main(String[] args){
DeckOfCards application = new DeckOfCards();
application.shuffle();
for(int i = 1; i<=52; i++){
System.out.printf("%-19s", application.dealCard());
if(i % 4 == 0)
System.out.println();
}
}
}
[/code]
Estou ficando com muita raiva desse livro " Java como programar 8° edição", repete muito as mesmas coisas e não explica direito… pelomenos não esse código.
Estou com dificuldades para entender como o array deck da classe DeckOfCards manipula a classe Card
1° O que examente o programa cria com a instrução, private Card[] deck;
um array deck do tipo Card, como seria representado isso?, afinal na Classe Card só tem um construtor e um método de retorno.
2° Em momento algum eu vi o método toString de Card ser chamado, então como o programa chamou ele? foi no método dealCard?
3° Na instrução deck = new Card[NumberOfCards];
da classe DeckOfCards, essa instrução cria 52 elementos do tipo Card, então seria 52x as instruções da classe Card?, deck referencia um array da classe Card certo?
4° Se eu estiver certo na 3° pergunta, Na instrução for da classe DeckOfCards, o programa adiciona uma face e um naipe ao array deck conforme count vai subindo, e então o face e o naipe são usados no construtor da classe Card para inicilizar as variaveis de instancia, mais aquele método de retorno como fica?
só quero tirar algumas duvidas antes de continuar,o livro não explicou bem isso.