Kısa süre önce bir Deck sınıfı oluşturdum (ki bu süper sınıf) ve sınıfımın çalışıp çalışmadığını görmek için bir test yöntemi oluşturmaya çalışıyorum.Programdaki alt sınıfın nesi var?
import java.util.List;
import java.util.ArrayList;
/**
* The Deck class represents a shuffled deck of cards.
* It provides several operations including
* initialize, shuffle, deal, and check if empty.
*/
public class Deck
{
/**
* cards contains all the cards in the deck.
*/
public static List<Card> cards;
/**
* size is the number of not-yet-dealt cards.
* Cards are dealt from the top (highest index) down.
* The next card to be dealt is at size - 1.
*/
private int size;
public static Card cardOne;
/**
* Creates a new <code>Deck</code> instance.<BR>
* It pairs each element of ranks with each element of suits,
* and produces one of the corresponding card.
* @param ranks is an array containing all of the card ranks.
* @param suits is an array containing all of the card suits.
* @param values is an array containing all of the card point values.
*/
public Deck(String[] ranks, String[] suits, int[] values)
{
for(int i=0; i<13;i++)
{
suits[i] = "Heart";
ranks[i] = cardOne.rank();
values[i] = cardOne.pointValue();
cards.add(cardOne);
}
for(int i=0; i<13;i++)
{
suits[i] = "Spade";
ranks[i] = cardOne.rank();
values[i] = cardOne.pointValue();
cards.add(cardOne);
}
for(int i=0; i<13;i++)
{
suits[i] = "Club";
ranks[i] = cardOne.rank();
values[i] = cardOne.pointValue();
cards.add(cardOne);
}
for(int i=0; i<13;i++)
{
suits[i] = "Diamond";
ranks[i] = cardOne.rank();
values[i] = cardOne.pointValue();
cards.add(cardOne);
}
}
/**
* Determines if this deck is empty (no undealt cards).
* @return true if this deck is empty, false otherwise.
*/
public static boolean isEmpty()
{
if(cards.size()==0)
return true;
else
return false;
}
/**
* Accesses the number of undealt cards in this deck.
* @return the number of undealt cards in this deck.
*/
public static int size()
{
return cards.size();
}
/**
* Randomly permute the given collection of cards
* and reset the size to represent the entire deck.
*/
public static List<Card> Shuffled[];
public void shuffle()
{
for(int i=0; i<52; i++)
{
cards.get(i);
int k=(int)(Math.random()*100);
while(k >52 || k<0)
{
k=(int)(Math.random()*100);
}
if(Shuffled[k]==null)
Shuffled[k]=(List<Card>) cards.get(i);
}
}
/**
* Deals a card from this deck.
* @return the card just dealt, or null if all the cards have been
* previously dealt.
*/
public Card deal()
{
int cardDealed= (int)(Math.random()*100);
while(cardDealed >52 || cardDealed<0)
{
cardDealed=(int)(Math.random()*100);
}
Shuffled[cardDealed].remove(cardDealed);
return (Card) Shuffled[cardDealed];
}
/**
* Generates and returns a string representation of this deck.
* @return a string representation of this deck.
*/
@Override
public String toString()
{
String rtn = "size = " + size + "\nUndealt cards: \n";
for (int k = size - 1; k >= 0; k--) {
rtn = rtn + cards.get(k);
if (k != 0) {
rtn = rtn + ", ";
}
if ((size - k) % 2 == 0) {
// Insert carriage returns so entire deck is visible on console.
rtn = rtn + "\n";
}
}
rtn = rtn + "\nDealt cards: \n";
for (int k = cards.size() - 1; k >= size; k--) {
rtn = rtn + cards.get(k);
if (k != size) {
rtn = rtn + ", ";
}
if ((k - cards.size()) % 2 == 0) {
// Insert carriage returns so entire deck is visible on console.
rtn = rtn + "\n";
}
}
rtn = rtn + "\n";
return rtn;
}
}
sorun (alt sınıf olan) bir araya DeckTester sınıfı koymak nasıl sergiyi karşılaşıyorum: İşte benim Güverte Sınıfı olduğunu. Şimdiye kadar aşağıdakilere sahibim:
import java.util.List;
/**
* This is a class that tests the Deck class.
*/
public class DeckTester extends Deck
{
public static List<Card> cards;
public DeckTester(String[] ranks, String[] suits, int[] values)
{
super(ranks, suits, values);
}
/**
* The main method in this class checks the Deck operations for consistency.
* @param args is not used.
*/
public static void main(String[] args)
{
}
}
Ayrıca tam işlevli bir Kartları sınıfım var. Deck sınıfını nasıl kontrol edeceğimi bilemiyorum.
ben bunu yapmak zorunda olduğunun farkındayım, konudur (burada JUnit kullanarak) vermem
kullanabileceğiniz çeşitli ayarlar hakkında bilgi girmek ama bu bir örnek olacağını Bunu nasıl yapacağımı bilmiyorum. – Pearlpoodle
Hayır, farkında değilsiniz. 'DeckTester' Deck'i genişletiyor - tamamen yanlış yaklaşım –