java封裝案例

日常生活中的許多電器都用了封裝機制,將電氣內(nèi)部的實行細節(jié)完全封裝起來,只對外公開簡潔的訪問接口栏笆,例如:對于自動洗衣機,用戶無序了解洗衣機內(nèi)部的到底是如何結(jié)構(gòu)和運行的臊泰,用戶只需要簡單的按下幾個按鈕蛉加,就能讓洗衣機自動洗衣服

編寫一個表示自動洗衣機的類Washer類,并且在他的程序入口main()方法中提供一段模擬洗襯衫操作的程序代碼

  • 1:按下”開機“按鈕缸逃。
  • 2:把洗衣模式設(shè)為”快洗“
  • 3:向洗衣機內(nèi)放入襯衫
  • 4:按下”開始“按鈕
  • 5:當(dāng)洗衣結(jié)束后针饥,取出襯衫
  • 6:按下”關(guān)機“按鈕

*用Clothes類來表示待洗的衣服,他有名字 String 類型的name 還有表示 是否干凈的boolean類型的isClean屬性需频,對著兩個屬性提供相應(yīng)的個讀取和設(shè)置屬性的方法


/**
 * @version 1.0
 * @author: jiazhihao
 * @date: 2021-05-29 10:07
 */






public class Clothes {
      private  String name;
      private  boolean  isClean ;

    public Clothes(String name, boolean isClean) {
        this.name = name;
        this.isClean = isClean;
    }

    public Clothes() {
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public boolean isClean() {
        return isClean;
    }

    public void setClean(boolean clean) {
        isClean = clean;
    }

    @Override
    public String toString() {
        return "Clothes{" +
                "name='" + name + '\'' +
                ", isClean=" + isClean +
                '}';
    }
}


自動洗衣機的以下屬性屬于封裝在洗衣機內(nèi)的私有屬性
*mode 屬性 表示洗衣模式 有三個可選值 1丁眼、2、3 昭殉。初始值是1 户盯。1表示標(biāo)準(zhǔn)洗,2是快洗 3是慢洗
*waterLevel屬性 表示水位 有三個可選值 1饲化、2莽鸭、3. 1表示低水位 2表示中水位 3表示高水位初始值為1

  • status屬性 表示洗衣機的狀態(tài) 有五種:開機狀態(tài)、關(guān)機狀態(tài)吃靠、正在洗衣狀態(tài)硫眨、洗衣暫停狀態(tài)、洗衣結(jié)束狀態(tài)巢块、status 初始值為關(guān)機狀態(tài)

洗衣機好友一個衣服屬性礁阁,clothes。洗衣機的衣服并不是封裝在洗衣機內(nèi)部的族奢,而是由用戶自由的放進和取出姥闭。因此,可以把clothes屬性定義為public訪問級別越走,不過為了防止其他程序隨意修改clothes屬性棚品,還是把他設(shè)為private訪問級別,然后在提供 putclothes()和takeclothes()方法廊敌,分別用來向洗衣機放入如或取出衣服

代碼如下:

import com.sun.tools.javac.Main;
import org.w3c.dom.ls.LSOutput;

/**
 * @version 1.0
 * @author: jiazhihao
 * @date: 2021-05-29 10:07
 */
public class Washer {

        public  static final String OFF_STATUS = "關(guān)機狀態(tài)";
        public  static final String ON_STATUS = "開機狀態(tài)";
        public  static final String WASHING_STATUS = "正在洗衣狀態(tài)";
        public  static final String SUSPEND_STATUS = "關(guān)機狀態(tài)";
        public  static final String FINISHED_STATUS = "關(guān)機狀態(tài)";


        // 表示 洗衣模式   1:標(biāo)準(zhǔn)   2:快洗   3:慢洗
    private int mode = 1;
    //  表示水位铜跑, 1:低水位  2: 中水位  3: 高水位
    private int waterLevel = 1;
    //  表示 洗衣機的狀態(tài)   初始值為關(guān)機
    private String status = OFF_STATUS;
    // 表示洗衣機內(nèi)的衣服
    private Clothes clothes;






    public static String getOffStatus() {
        return OFF_STATUS;
    }

    public static String getOnStatus() {
        return ON_STATUS;
    }

    public static String getWashingStatus() {
        return WASHING_STATUS;
    }

    public static String getSuspendStatus() {
        return SUSPEND_STATUS;
    }

    public static String getFinishedStatus() {
        return FINISHED_STATUS;
    }
        //讀取洗衣模式
    public int getMode() {
        return mode;
    }

    public void setMode(int mode) {//設(shè)置洗衣模式
//            只有在開機狀態(tài)或暫停狀態(tài),才能設(shè)置洗衣模式
        if(status.equals(ON_STATUS) || status.equals(SUSPEND_STATUS)) {
            this.mode = mode;
        }
    }

    public int getWaterLevel() {  //讀取水位
        return waterLevel;
    }

    public void setWaterLevel(int waterLevel) {
        //只有在開機狀態(tài)或暫停狀態(tài)  才能設(shè)置水位
        if(status.equals(ON_STATUS) || status.equals(SUSPEND_STATUS)) {
            this.waterLevel = waterLevel;
        }
    }
//  獲取洗衣機的狀態(tài)
    public String getStatus() {
        return status;
    }
//設(shè)置洗衣機的狀態(tài)
    public void setStatus(String status) {
        this.status = status;
        System.out.println("進入"+status);
    }

    public Clothes getClothes() {
        return clothes;
    }

    public void setClothes(Clothes clothes) {
        this.clothes = clothes;
    }

    public void on(){  //開機
        setStatus(ON_STATUS);
    }

    public void off(){  //  關(guān)機
        setStatus(OFF_STATUS);
    }

    public void putClothes(Clothes clothes){
        System.out.println("向洗衣機放入"+clothes);
        this.clothes = clothes;
    }
    public void takeOutClothes(){
        System.out.println("向洗衣機取出"+clothes);
        this.clothes = clothes;

    }

    public void start() {
//        只有在開機狀態(tài)或暫停狀態(tài)才可以轉(zhuǎn)到洗衣狀態(tài)
        if (status.equals(ON_STATUS) || status.equals(SUSPEND_STATUS)) {
            setStatus(WASHING_STATUS);
            System.out.println("洗衣機賣力地洗" + clothes + "..");
            setStatus(FINISHED_STATUS);
            clothes.setClean(true);

        }
    }
        public void suspend(){  //暫停
        // 只有洗衣狀態(tài)才可以暫停
            if(status.equals(WASHING_STATUS)) {
                setStatus(SUSPEND_STATUS);
            }

        }

    public static void main(String[] args) {
        Washer washer = new Washer();
        washer.on();//開機
        washer.setMode(2); // 洗衣模式設(shè)成快洗
               // 創(chuàng)建一個對象骡澈,表示臟襯衫
        Clothes clothes = new Clothes("襯衫",false);
        washer.putClothes(clothes);  // 放入襯衫
        washer.start();//開始洗襯衫
        washer.takeOutClothes();// 取出襯衫
        washer.off();// 關(guān)機
        System.out.println(clothes.getName()+"是否洗干凈"+clothes.isClean());
    }


    }







?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末锅纺,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子肋殴,更是在濱河造成了極大的恐慌囤锉,老刑警劉巖坦弟,帶你破解...
    沈念sama閱讀 212,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異官地,居然都是意外死亡酿傍,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評論 3 385
  • 文/潘曉璐 我一進店門区丑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來拧粪,“玉大人,你說我怎么就攤上這事沧侥】肾” “怎么了?”我有些...
    開封第一講書人閱讀 158,369評論 0 348
  • 文/不壞的土叔 我叫張陵宴杀,是天一觀的道長癣朗。 經(jīng)常有香客問我,道長旺罢,這世上最難降的妖魔是什么旷余? 我笑而不...
    開封第一講書人閱讀 56,799評論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮扁达,結(jié)果婚禮上正卧,老公的妹妹穿的比我還像新娘。我一直安慰自己跪解,他們只是感情好炉旷,可當(dāng)我...
    茶點故事閱讀 65,910評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著叉讥,像睡著了一般窘行。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上图仓,一...
    開封第一講書人閱讀 50,096評論 1 291
  • 那天罐盔,我揣著相機與錄音,去河邊找鬼救崔。 笑死惶看,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的帚豪。 我是一名探鬼主播碳竟,決...
    沈念sama閱讀 39,159評論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼狸臣!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起昌执,我...
    開封第一講書人閱讀 37,917評論 0 268
  • 序言:老撾萬榮一對情侶失蹤烛亦,失蹤者是張志新(化名)和其女友劉穎诈泼,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體煤禽,經(jīng)...
    沈念sama閱讀 44,360評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡铐达,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,673評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了檬果。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瓮孙。...
    茶點故事閱讀 38,814評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖选脊,靈堂內(nèi)的尸體忽然破棺而出杭抠,到底是詐尸還是另有隱情,我是刑警寧澤恳啥,帶...
    沈念sama閱讀 34,509評論 4 334
  • 正文 年R本政府宣布偏灿,位于F島的核電站,受9級特大地震影響钝的,放射性物質(zhì)發(fā)生泄漏翁垂。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,156評論 3 317
  • 文/蒙蒙 一硝桩、第九天 我趴在偏房一處隱蔽的房頂上張望沿猜。 院中可真熱鬧,春花似錦碗脊、人聲如沸啼肩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽疟游。三九已至,卻和暖如春痕支,著一層夾襖步出監(jiān)牢的瞬間颁虐,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評論 1 267
  • 我被黑心中介騙來泰國打工卧须, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留另绩,地道東北人。 一個月前我還...
    沈念sama閱讀 46,641評論 2 362
  • 正文 我出身青樓花嘶,卻偏偏與公主長得像笋籽,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子椭员,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,728評論 2 351

推薦閱讀更多精彩內(nèi)容