JAVA寵物結婚(封裝)

定義一個寵物,包括名稱、年齡、性別、配偶等基本屬性。結婚必須滿足三個條件:必須是異性,同性不允許結婚;有配偶者不能結婚;要達到結婚年齡方可結婚:雄性滿5歲,雌性滿4歲。

 package JAVA_Project_01_05;//創建一個包

/*
定義一個寵物,包括名稱、年齡、性別、配偶等基本屬性。結婚必須滿足三個條件:必須是異性,同性不允許結婚;
有配偶者不能結婚;要達到結婚年齡方可結婚:雄性滿5歲,雌性滿4歲。
 */
class Pet {//定義寵物類

    private String name;//寵物名稱

    private int age;//寵物年齡

    private boolean gender;//寵物性別

    private Pet partner;//配偶

    public Pet() { }//默認構造方法

    public Pet(String name, int age, boolean gender, Pet partner) {//帶參數的構造方法

        this.name = name;

        this.age = age;

        this.gender = gender;

        this.partner = partner;
    }

    public int getAge() {

        return age;

    }

    public void setAge(int age) {

        this.age = age;

    }

    public boolean isGender() {

        return gender;

    }

    public void setGender(boolean gender) {

        this.gender = gender;

    }

    public String getName() {

        return name;

    }

    public void setName(String name) {

        this.name = name;

    }

    public Pet getPartner() {

        return partner;

    }

    public void setPartner(Pet partner) {

        this.partner = partner;

    }

    public boolean isOverAgeForMarry() {//判斷是否到結婚年齡

        if (this.gender&&this.getAge()>=5){

            return true;

        }

        if (!this.gender&&this.getAge()>=4){

            return true;

        }

        return false;

    }

    public boolean marry(Pet pet) {//判斷是否符合結婚條件

        if (this.gender == pet.gender) {

            System.out.println("根據規定,不允許同性結婚");

            return false;

        }

        if (this.partner != null || pet.partner != null) {

            System.out.println("一方已結婚,不能再結");

            return false;

        }

        if (!this.isOverAgeForMarry() || !pet.isOverAgeForMarry()) {//未達到結婚年齡

            System.out.println("未達到結婚年齡,不能結婚,再過幾年吧");

            return false;

        }

        System.out.println("恭喜" + this.name + "和" + pet.name + "結婚!");

        this.partner = pet;

        pet.partner = this;

        return true;

    }

}

public class TextEncapsulation {//操作封裝類模擬寵物結婚類

    public static void main(String[] args) {//Java程序主入口處

        Pet pet1 = new Pet("Cat1", 5, true, null);

        Pet pet2 = new Pet("Cat2", 4, false, null);

        Pet pet3 = new Pet("Cat3", 6, true, null);

        Pet pet4 = new Pet("Cat4", 5, true, null);

        Pet pet5 = new Pet("Cat5", 3, false, null);

        System.out.println("1.雙方都滿足結婚條件,可以結嗎?");

        pet1.marry(pet2);//Cat1與Cat2符合結婚條件

        System.out.println("2.如果一方已經結婚,可以再結嗎?");

        pet2.marry(pet3);//一方結婚不能再結

        System.out.println("3.如果是同性,可以結婚嗎?");

        pet3.marry(pet4);//同性不能結婚

        System.out.println("4.如果一方未到結婚年齡,雙方可以結婚嗎?");

        pet4.marry(pet5);//一方未到結婚年齡不能結婚

        System.out.println("5.一方離婚,可以與其他寵物結婚嗎?");

        pet2.setPartner(null);//當一方離婚,就可以和其他寵物結婚了

        pet2.marry(pet3);

    }
}

/*
(1)在main()主方法中,創建多個Pet對象,全面測試寵物結婚可能出現的不同情況,保證程序的正確性。

(2)marry()方法中對不同性別、年齡以及婚配情況的五個對象分別進行匹配,滿足結婚條件的即可結婚,並修改配偶的值;
不滿足結婚條件的寵物,拒絕結婚並將理由打印輸出。
 */

發佈了71 篇原創文章 · 獲贊 12 · 訪問量 4542
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章