天天看點

Java項目實戰開發Day05 2020-03-20

内容

1.this

2.setter和getter

3.toString

4.final

5.撲克牌項目

一.this

詳細請看之前的一篇文章:​​https://www.jianshu.com/p/fd56fc887de0​​

二.setter和getter(前面也學過)

1.引
如人名,誰都可以喊你,就是得到你的名字,也就是得到某個值,就是getter方法,你自己也可以改一下名,也就是修改某個值,就是setter方法。
2.使用技巧

①AS裡面Ctrl和回車是快捷鍵,可以調用很多東西,比如構造方法,在這裡

AS裡面用Ctrl+回車可以調用setget方法

②建議将setget方法寫在最後面,目的是為了使代碼更容易了解。

三.toString

詳情請看之前的一篇文章:​​https://www.jianshu.com/p/8e404641b56c​​
簡介
當使用print輸出一個對象時,就會去這個對象内部查找toString方法,如果沒有實作,那麼就會從父類Object裡面去查找toString的實作。Object裡面的toString方法預設傳回 類名@hasCode,這個東西看不太懂,是以我們一般要重寫toString方法,重寫的目的是為了在調試的時候快速擷取這個對象的資訊

四.final

詳細請看之前的一篇文章:​​https://www.jianshu.com/p/8ea1a41a543b​​ 這裡再強調一個事情,就是通常一個常量我們全部用大寫字母表示

五.撲克牌項目

1.項目介紹
生成一副牌,并打亂順序
2.項目結構
一共四個類。分别為Constants、Myclass、Poker、PokerManager
3.具體代碼

①constants

package Poker;

//放一些固定的東西
public class Constants {
    
    //點數
    public static final String[] POKER_DOTS = new String[] {
            "2","3","4","5","6","7",
            "8","9","10","J","Q","K","A"
    };
    
    //用一個數組儲存所有的花色
    public static final String[] POKER_PICS = new String[] {"♥","♠","♣","♦"};
    
}      

②Poker

package Poker;

//管理一張牌的資訊
class Poker{
        
    private String dot;//儲存點數
    private String pic;//儲存花色
    
    //提供構造方法
    public Poker(String dot,String pic) {
        this.dot = dot;
        this.pic = pic;
    }
   
    //重寫toString
    public String toString() {
        return dot+pic;
    }
    
    //setter和getter
    public String getDot() {
        return dot;
    }
    public String getPic() {
        return pic;
    }
    
    public void setDot(String dot) {
        this.dot = dot;
    }
    
    public void setPic(String pic) {
        this.pic = pic;
    }
    
    
}      
package Poker;

import java.util.*;

//管理一副牌的所有操作(生成牌,洗牌,顯示牌)
public class PokerManager {

    //建立儲存一副牌的數組
    private ArrayList<Poker> pokers;
    
    //使用構造方法,産生所有的牌
    public PokerManager() {
        //初始化數組
        pokers = new ArrayList<>();//動态配置設定
    }
    
    //生成一副牌
    public void generateOnePackOfCard() {

        for(int i = 0;i < Constants.POKER_DOTS.length;i++) {
            
            //取出i對應的點數
            String dot = Constants.POKER_DOTS[i];
            
            //為這個點數建立四種花色
            for(int j = 0;j < Constants.POKER_PICS.length;j++) {
                
                //取出j對應的花色
                String pic = Constants.POKER_PICS[j];
                
                //建立一張牌
                Poker poker = new Poker(dot,pic);
                
                //儲存這張牌
                int index = i*4 + j;
                pokers.add(poker);
            }
        }
    }
    
    //顯示一副牌
    public void show() {
        int index = 0;
        for(Poker poker:pokers) {
            
            System.out.print(poker);//注意這裡是poker
            
            if((index+1) % 8 == 0) {
                System.out.println("");
            }
            
            index++;
        }
    }

    //洗牌
    public void shuffle() {
        Collections.shuffle(pokers);//使用系統打亂方法
    }
}      
package Poker;

public class MyClass {

    public static void main(String[] args) {
        //以下注釋的代碼展現了面向過程思想
        /*
        //用一個數組儲存所有的點數
        String[] dots = new String[] {
                "2","3","4","5","6","7",
                "8","9","10","J","Q","K","A"
        };
        
        //用一個數組儲存所有的花色
        String[] pics = new String[] {"♥","♠","♣","♦"};
        
        //用數組儲存所有的撲克牌
        Poker[] pokers = new Poker[52];
        
        //生成每一張牌,并儲存到數組中
        int index = 0;
        for(String dot:dots) {
            for(String pic:pics) {
                //建立一張撲克牌
                Poker poker = new Poker();
                poker.dot = dot;
                poker.pic = pic;
                pokers[index] = poker;
                index++;
            }
        }
        
        //輸出牌
        for(Poker poker:pokers) {
            System.out.print(poker.dot+poker.pic+" ");
        }
        */
        
    
        //1.建立管理器
        PokerManager manager = new PokerManager();
        
        //2.生成一副牌
        manager.generateOnePackOfCard();
        
        //3.打亂一副牌
        manager.shuffle();
        
        //4.顯示一副牌
        manager.show();
        
        
        
    }
}      

總結