您现在的位置是:首页 > 编程 > 

通过宠物商店理解java面向对象

2025-07-27 02:14:29
通过宠物商店理解java面向对象 前言:本篇博客,适合刚刚学完java基础语法的但是,对于面向对象,理解不够深刻的读者,本文通过经典的宠物商店,来让读者深刻的理解,面向对象,IS-A,HAS-A法则。本文不仅仅是简单的用java来模拟一个宠物商店,而是通过分析宠物商店的业务,来让大家理解,最简单的业务逻辑,即商店,商品,用户,这三者的逻辑,这个代码同样可以适用于,图书管理系统,书店管理系统,宿舍管

通过宠物商店理解java面向对象

前言:本篇博客,适合刚刚学完java基础语法的但是,对于面向对象,理解不够深刻的读者,本文通过经典的宠物商店,来让读者深刻的理解,面向对象,IS-AHAS-A法则。本文不仅仅是简单的用java来模拟一个宠物商店,而是通过分析宠物商店的业务,来让大家理解,最简单的业务逻辑,即商店商品用户,这三者的逻辑,这个代码同样可以适用于,图书管理系统书店管理系统宿舍管理系统等等的入门理解。

好了本文开始了。首先我们先把题目给出来。

题目
业务逻辑分析

首先是分析,宠物店,动物,小猫小狗,客户之间的关系,其中最为明显的就是,小猫小狗与动物之间的关系,很显然小猫小狗继承动物的属性,他们之间属于IS-A,什么是IS-A法则,就是这种继承关系,所以,我们可以构建Animal类,思考所有动物的公共属性,比如我这里写的这个Animal类中的姓名价格性别年龄这些成员,因为是举例子,所以很多地方并不会写的很全,然后再分析行为,我这里设计的他们的共有行为便是,Shout()大叫属性。

Animal这个基类成功之后,那么后续就是,设计猫类,狗类了,对于这两个类的话,为了方便理解,我们设置他们的新的成员是,对于猫来说为CatPara,对于狗来说的话是DogPara,然后他们会重写父类的Shout()方法,这里就体现了面向对象里面的多态,具体代码如下。

动物类的编写

代码如下

代码语言:javascript代码运行次数:0运行复制
/*
* 讲解面向对象的三个基本特性
* IS-A法则
* HAS-A法则
* */

// 动物类
class Animal{
    private String name;  // 姓名
    private Double price; // 价格
    private Boolean ; // 性别
    private String color; // 颜 
    private Integer age; // 年龄

    public Animal() {
    }

    public void Shout(){ // 大叫
        println("大声的叫");
    }

    public String getame() {
        return name;
    }

    public void setame(String name) {
         = name;
    }

    public Double getPrice() {
        return price;
    }

    public void setPrice(Double price) {
        this.price = price;
    }

    public Boolean getSex() {
        return ;
    }

    public void setSex(Boolean ) {
        this. = ;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
         = color;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    @Override
    public String toString() { // 重写toString()方法 方便遍历类
        return "Animal{" +
                "name='" + name + '\'' +
                ", price=" + price +
                ", =" +  +
                ", color='" + color + '\'' +
                ", age=" + age +
                '}';
    }
}

// 狗类
class Dog extends Animal{ // Dog is a animal // 继承父类属性 这里体现了继承
    private Integer DogPara; // 狗参数

    public Integer getDogPara() {
        return DogPara;
    }

    public void setDogPara(Integer dogPara) {
        DogPara = dogPara;
    }

    public void WagTail(){ // 对于小狗添加了一个新的摇尾巴的方法
        println("摇尾巴");
    }
    public Dog() {
    }
    @Override
    public void Shout(){   // 重写父类的方法 这里体现了多态
        println("汪汪汪");
    }

    @Override
    public String toString() {
        return "Dog{" +
                "DogPara=" + DogPara + " " + () +
                '}';
    }
}

// 猫类
class Cat extends Animal{
    private Integer CatPara; // 猫参数

    public Integer getCatPara() {
        return CatPara;
    }

    public void setCatPara(Integer catPara) {
        CatPara = catPara;
    }

    public void LickHair(){   // 对于小猫 添加一个毛的方法
        println("毛");
    }
    public Cat() {
    }
    @Override
    public void Shout(){ // 重写父类属性
        println("喵喵喵");
    }

    @Override
    public String toString() {  // 重写toString()方法 方便遍历类
        return "Cat{" +			// super()调用父类的toString()方法 可以简写很多。
                "CatPara=" + CatPara + " " + () +
                '}';
    }
}
宠物店类的编写

对于宠物店类,和宠物的关系,这里属于的是HAS-A法则,HAS-A法则什么意思了,比如,汽车轮胎之间的关系,轮胎属于汽车,在这个例题中的情况就是,宠物属于宠物店,这就是HAS-A法则。

代码语言:javascript代码运行次数:0运行复制
/*
* Has-A法则
*
* */
// 宠物店类
class PetShop{
	// 这里体现了HAS-A法则 宠物店包含小猫,小狗这些宠物
    private ArrayList<Dog> dogs;  // 宠物店的小狗的集合
    private ArrayList<Cat> cats;  // 宠物店中小猫的集合

    public PetShop() {  // 构造方法中加上代码 随机的生成初始数据
        Random random = new Random();
        dogs = new ArrayList<>();
        cats = new ArrayList<>();
        for (int i = 0; i < 100; i++) {
               Dog dog = new Dog();
               Cat cat = new Cat();
               dog.setame("dog" + i);
               cat.setame("cat" + i);
               dog.setPrice(() * 400 + 100); // [0,1) * 400 = [0, 400) + 100 = [100, 500)
               cat.setPrice(() * 400 + 100); // [0,1) * 400 = [0, 400) + 100 = [100, 500)
               dog.setSex(());
               cat.setSex(());

               dog.setDogPara((1000));
               cat.setCatPara((1000));

               dog.setColor((1000) + ":" + (1000) + ":" + (1000));
               cat.setColor((1000) + ":" + (1000) + ":" + (1000));

               dog.setAge((10));
               cat.setAge((10));

               dogs.add(dog);
               cats.add(cat);
        }
    }



    public void Traversal(){  // 遍历现有数据
        for (int i = 0; i < dogs.size(); i++) {
            println(dogs.get(i));
        }
        println("----------------------------------");
        Iterator<Cat> iterator2 = cats.iterator();
        while(iterator2.hat())
        {
            println(());
        }
    }

    public int getumDog(){
        return dogs.size();
    }
    public int getumCat(){
        return cats.size();
    }

    public ArrayList<Dog> getDogs() {
        return dogs;
    }

    public void setDogs(ArrayList<Dog> dogs) {
        this.dogs = dogs;
    }

    public ArrayList<Cat> getCats() {
        return cats;
    }

    public void setCats(ArrayList<Cat> cats) {
         = cats;
    }
}
客户类的编写

这时候我们就需要分析最后一种关系,客户宠物店之间的关系,它们之间的关系,是两个单独的个体,至于怎么联合起来,通过客户类中的Buy(PetShop petShop)行为就可以理解了。

代码语言:javascript代码运行次数:0运行复制
class Custom{
    private Boolean ;
    private Integer age;

    private String name;

    private ArrayList<Dog> dogs;
    private ArrayList<Cat> cats;

    public Custom() {
    }

    public Custom(String name) {
         = name;
    }

    public boolean Buy(PetShop petShop){ // 这是客户在宠物店中购买商品的情况 
    // 因为这是一个讲解面向对象的,所以这里作者就先不补全了,示意即可
        Scanner in = new Scanner(System.in);
        println("Y/"); // 小狗就是Y 小猫就是
        String flag = ().toLowerCase();
        if (("y")){

        }
        else {

        }
        return false;
    }

    public Boolean getSex() {
        return ;
    }

    public void setSex(Boolean ) {
        this. = ;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public ArrayList<Dog> getDogs() {
        return dogs;
    }

    public void setDogs(ArrayList<Dog> dogs) {
        this.dogs = dogs;
    }

    public ArrayList<Cat> getCats() {
        return cats;
    }

    public void setCats(ArrayList<Cat> cats) {
         = cats;
    }
}
代码汇总

通过该文章的这个例题的简介,基本上就讲解完了,面向对象的基础和IS-A,HAS-A法则。

代码语言:javascript代码运行次数:0运行复制
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Random;
import java.util.Scanner;

/*
* 讲解面向对象的三个基本特性
* IS-A法则
* HAS-A法则
* */
class Animal{
    private String name;  // 姓名
    private Double price; // 价格
    private Boolean ; // 性别
    private String color; // 颜 
    private Integer age; // 年龄

    public Animal() {
    }

    public void Shout(){ // 大叫
        println("大声的叫");
    }

    public String getame() {
        return name;
    }

    public void setame(String name) {
         = name;
    }

    public Double getPrice() {
        return price;
    }

    public void setPrice(Double price) {
        this.price = price;
    }

    public Boolean getSex() {
        return ;
    }

    public void setSex(Boolean ) {
        this. = ;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
         = color;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Animal{" +
                "name='" + name + '\'' +
                ", price=" + price +
                ", =" +  +
                ", color='" + color + '\'' +
                ", age=" + age +
                '}';
    }
}

class Dog extends Animal{ // Dog is a animal
    private Integer DogPara;

    public Integer getDogPara() {
        return DogPara;
    }

    public void setDogPara(Integer dogPara) {
        DogPara = dogPara;
    }

    public void WagTail(){
        println("摇尾巴");
    }
    public Dog() {
    }
    @Override
    public void Shout(){
        println("汪汪汪");
    }

    @Override
    public String toString() {
        return "Dog{" +
                "DogPara=" + DogPara + " " + () +
                '}';
    }
}

class Cat extends Animal{
    private Integer CatPara;

    public Integer getCatPara() {
        return CatPara;
    }

    public void setCatPara(Integer catPara) {
        CatPara = catPara;
    }

    public void LickHair(){
        println("毛");
    }
    public Cat() {
    }
    @Override
    public void Shout(){
        println("喵喵喵");
    }

    @Override
    public String toString() {
        return "Cat{" +
                "CatPara=" + CatPara + " " + () +
                '}';
    }
}

/*
* Has-A法则
*
* */

class PetShop{
    private ArrayList<Dog> dogs;
    private ArrayList<Cat> cats;

    public PetShop() {
        Random random = new Random();
        dogs = new ArrayList<>();
        cats = new ArrayList<>();
        for (int i = 0; i < 100; i++) {
               Dog dog = new Dog();
               Cat cat = new Cat();
               dog.setame("dog" + i);
               cat.setame("cat" + i);
               dog.setPrice(() * 400 + 100); // [0,1) * 400 = [0, 400) + 100 = [100, 500)
               cat.setPrice(() * 400 + 100); // [0,1) * 400 = [0, 400) + 100 = [100, 500)
               dog.setSex(());
               cat.setSex(());

               dog.setDogPara((1000));
               cat.setCatPara((1000));

               dog.setColor((1000) + ":" + (1000) + ":" + (1000));
               cat.setColor((1000) + ":" + (1000) + ":" + (1000));

               dog.setAge((10));
               cat.setAge((10));

               dogs.add(dog);
               cats.add(cat);
        }
    }



    public void Traversal(){
        for (int i = 0; i < dogs.size(); i++) {
            println(dogs.get(i));
        }
        println("----------------------------------");
        Iterator<Cat> iterator2 = cats.iterator();
        while(iterator2.hat())
        {
            println(());
        }
    }

    public int getumDog(){
        return dogs.size();
    }
    public int getumCat(){
        return cats.size();
    }

    public ArrayList<Dog> getDogs() {
        return dogs;
    }

    public void setDogs(ArrayList<Dog> dogs) {
        this.dogs = dogs;
    }

    public ArrayList<Cat> getCats() {
        return cats;
    }

    public void setCats(ArrayList<Cat> cats) {
         = cats;
    }
}

class Custom{
    private Boolean ;
    private Integer age;

    private String name;

    private ArrayList<Dog> dogs;
    private ArrayList<Cat> cats;

    public Custom() {
    }

    public Custom(String name) {
         = name;
    }

    public boolean Buy(PetShop petShop){
        Scanner in = new Scanner(System.in);
        println("Y/"); // 小狗就是Y 小猫就是
        String flag = ().toLowerCase();
        if (("y")){

        }
        else {

        }
        return false;
    }

    public Boolean getSex() {
        return ;
    }

    public void setSex(Boolean ) {
        this. = ;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public ArrayList<Dog> getDogs() {
        return dogs;
    }

    public void setDogs(ArrayList<Dog> dogs) {
        this.dogs = dogs;
    }

    public ArrayList<Cat> getCats() {
        return cats;
    }

    public void setCats(ArrayList<Cat> cats) {
         = cats;
    }
}

public class Main {


    public static void main(String[] args) {
        PetShop petShop = new PetShop(); // 创建一个宠物店
//        petShop.Traversal();
        Custom custom = new Custom("LiHua");

    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:202-09-14,如有侵权请联系 cloudcommunity@tencent 删除javapublicreturnvoid继承

#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格

本文地址:http://www.dnpztj.cn/biancheng/1155316.html

相关标签:无
上传时间: 2025-07-20 05:42:31
留言与评论(共有 15 条评论)
本站网友 召开
14分钟前 发表
适合刚刚学完java基础语法的但是
本站网友 标签打印机品牌
22分钟前 发表
price=" + price + "
本站网友 uyaaa
1分钟前 发表
因为是举例子
本站网友 se222
15分钟前 发表
书店管理系统
本站网友 打屁屁的视频大全
6分钟前 发表
价格
本站网友 壹号肉铺
3分钟前 发表
理解不够深刻的读者
本站网友 郧西县中
5分钟前 发表
代码语言:javascript代码运行次数:0运行复制import java.util.ArrayList; import java.util.Iterator; import java.util.Random; import java.util.Scanner; /* * 讲解面向对象的三个基本特性 * IS-A法则 * HAS-A法则 * */ class Animal{ private String name; // 姓名 private Double price; // 价格 private Boolean ; // 性别 private String color; // 颜 private Integer age; // 年龄 public Animal() { } public void Shout(){ // 大叫 println("大声的叫"); } public String getame() { return name; } public void setame(String name) { = name; } public Double getPrice() { return price; } public void setPrice(Double price) { this.price = price; } public Boolean getSex() { return ; } public void setSex(Boolean ) { this. = ; } public String getColor() { return color; } public void setColor(String color) { = color; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } @Override public String toString() { return "Animal{" + "name='" + name + '\'' + "
本站网友 装修材料价格
11分钟前 发表
IS-A
本站网友 谷歌新漏洞
15分钟前 发表
本站网友 华为技术支持
1秒前 发表
age=" + age + '}'; } } class Dog extends Animal{ // Dog is a animal private Integer DogPara; public Integer getDogPara() { return DogPara; } public void setDogPara(Integer dogPara) { DogPara = dogPara; } public void WagTail(){ println("摇尾巴"); } public Dog() { } @Override public void Shout(){ println("汪汪汪"); } @Override public String toString() { return "Dog{" + "DogPara=" + DogPara + " " + () + '}'; } } class Cat extends Animal{ private Integer CatPara; public Integer getCatPara() { return CatPara; } public void setCatPara(Integer catPara) { CatPara = catPara; } public void LickHair(){ println("毛"); } public Cat() { } @Override public void Shout(){ println("喵喵喵"); } @Override public String toString() { return "Cat{" + "CatPara=" + CatPara + " " + () + '}'; } } /* * Has-A法则 * * */ class PetShop{ private ArrayList<Dog> dogs; private ArrayList<Cat> cats; public PetShop() { Random random = new Random(); dogs = new ArrayList<>(); cats = new ArrayList<>(); for (int i = 0; i < 100; i++) { Dog dog = new Dog(); Cat cat = new Cat(); dog.setame("dog" + i); cat.setame("cat" + i); dog.setPrice(() * 400 + 100); // [0
本站网友 矿震
11分钟前 发表
HAS-A法则
本站网友 芳草集橙花痘印修护精油
20分钟前 发表
1) * 400 = [0
本站网友 雨霁天青
5分钟前 发表
HAS-A法则什么意思了
本站网友 铁岭租房
24分钟前 发表
price=" + price + "