set、get方法:间接访问private修饰的变量,对传过来的值可做判断处理。
toString:决定输出类时的内容。
下面对前几天写的扑克牌demo进行改进:
1.新建4个类,分别为Constants,MyClass,Poker,PokerManager,其中Constants保存扑克牌的花色和点数,Poker保存每一张牌,PokerManager为扑克牌功能的集合,MyClass为主类。
2.Constant:定义字符串保存扑克牌的花色和点数即可
public class Constants {
public static final String[] DOTS = new String[]{
"2","3","4" ,"5","6","7","8","9","10","J","Q","K","A"
};
public static final String[] PICS = new String[]{
"♠","♣","♦","♥"
};
}
3.Poker:定义扑克牌属性,并定义Poker类的构造方法和其get、set方法,并修改需要的toString方法
public class Poker {
private String dot;
private String pic;
public Poker(String dot, String pic) {
this.dot = dot;
this.pic = pic;
}
public String getDot() {
return dot;
}
public void setDot(String dot) {
this.dot = dot;
}
public String getPic() {
return pic;
}
public void setPic(String pic) {
this.pic = pic;
}
@Override
public String toString() {
return dot+pic+" ";
}
}
4.PokerManager:实现生成、显示、打乱一副牌的方法
public class PokerManager {
//保存一副牌
private ArrayList<Poker> pokers;
//构造方法
public PokerManager() {
pokers = new ArrayList<>();
}
//生成一副牌
public void generate(){
for (int i = 0;i<Constants.DOTS.length;i++){
String dot = Constants.DOTS[i];
for (int j = 0;j<Constants.PICS.length;j++){
String pic = Constants.PICS[j];
//创建一张牌保存
Poker poker = new Poker(dot,pic);
//保存
int index = i*4+j;
pokers.add(poker);
}
}
}
//显示一副牌
public void show(){
int index = 1;
for(Poker poker :pokers){
System.out.print(poker);
if(index%8 == 0){
System.out.println("");
}
index++;
}
}
//打乱一副牌
public void shuffle(){
Collections.shuffle(pokers);
}
}
5.MyClass:即为整个程序的运行逻辑
public class MyClass {
public static void main(String[] args){
//创建管理器
PokerManager manager = new PokerManager();
//生成一幅牌
manager.generate();
//打乱一副牌
manager.shuffle();
//显示
manager.show();
}