宠物商店(java版本)

设计一个宠物商店

在宠物商店中可以有多种动物(由用户决定数量),并可以根据动物的关键字查找动物的信息

具体分析

  1. 动物信息可以自己设计,简单设计为名字
    、颜色、年龄
  2. 宠物类别很多,如狗,猫,猪...所以要统一一个标准。
  3. 只要符合该标准都可以放入宠物商店中。
  4. 宠物商店中要保存多种宠物,所以应该有一个宠物数组,如果个数由用户决定,则创建动物时,就因该分配动物个数。

代码实现

动物父类

package com.toltech.ainmal;

/**
 * Created by wanggs on 2017/9/21.
 * 动物父类
 */
public class Animal {
    public String name;
    public int age;
    public String color;

    public Animal() {
    }

    public Animal(String name, int age, String color) {
        this.name = name;
        this.age = age;
        this.color = color;
    }

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

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

    public String getColor() {
        return color;
    }

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

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

宠物接口

package com.toltech.ainmal;

/**
 * Created by wanggs on 2017/9/21.
 * 宠物接口
 */
public interface Pet {
    // 得到宠物名字
    public String getName();
    // 得到宠物年龄
    public int getAge();
    // 得到宠物颜色
    public String getColor();
}

宠物

package com.toltech.ainmal;

/**
 * Created by wanggs on 2017/9/21.
 */
public class Dog extends Animal implements Pet {
    public Dog() {
    }

    public Dog(String name, int age, String color) {
        super(name, age, color);
    }

    @Override
    public String getName() {
        return this.name;
    }

    @Override
    public int getAge() {
        return this.age;
    }

    @Override
    public String getColor() {
        return this.color;
    }
}

// 猫
package com.toltech.ainmal;

/**
 * Created by wanggs on 2017/9/21.
 */
public class Cat extends Animal implements Pet {
    public Cat() {
    }

    public Cat(String name, int age, String color) {
        super(name, age, color);
    }

    @Override
    public String getName() {
        return super.getName();
    }

    @Override
    public int getAge() {
        return super.getAge();
    }

    @Override
    public String getColor() {
        return super.getColor();
    }
}
// 猪
package com.toltech.ainmal;

/**
 * Created by wanggs on 2017/9/21.
 */
public class Pig extends Animal implements Pet {
    public Pig() {
    }

    public Pig(String name, int age, String color) {
        super(name, age, color);
    }

    @Override
    public String getName() {
        return super.getName();
    }

    @Override
    public int getAge() {
        return super.getAge();
    }

    @Override
    public String getColor() {
        return super.getColor();
    }
}

宠物商店

package com.toltech.ainmal;

/**
 * Created by wanggs on 2017/9/21.
 */
public class PetShop {
    // 保存多个属性
    private Pet[] pets;
    // 数据保存位置
    private int foot;

    // 开辟宠物数组大小
    public PetShop(int len) {
        if (len > 0) {
            // 为对象数组开辟空间
            this.pets = new Pet[len];
        } else {
            // 至少开辟一个空间
            this.pets = new Pet[1];
        }
    }

    // 添加宠物
    public boolean add(Pet pet) {
        // 判断宠物店的宠物是否添加满
        if (this.foot < pets.length) {
            // 添加宠物
            this.pets[this.foot] = pet;
            // 修改保存位置
            this.foot++;
            // 添加成功
            return true;
        }
        // 添加失败
        return false;
    }

    // 关键字查找
    public Pet[] search(String keyWord) {
        // 此处为查找后的结果,不固定
        Pet[] p = null;
        // 记录符合查询结果
        int count = 0;
        // 确认开辟空间大小,查询符合结果
        for (int i = 0; i < pets.length; i++) {
            // 判断数组内容是否为空
            if (this.pets[i] != null) {
                // 统计符合的宠物
                if (this.pets[i].getName().indexOf(keyWord) != -1 || this.pets[i].getColor().indexOf(keyWord) != -1) {
                    count++;
                }
            }
        }
        // 根据已经确定的数据开辟数组空间
        p = new Pet[count];
        // 设置增加位置标志
        int f = 0;
        for (int j = 0; j < this.pets.length; j++) {
            if (this.pets[j] != null) {
                // 统计符合的宠物
                if (this.pets[j].getName().indexOf(keyWord) != -1 || this.pets[j].getColor().indexOf(keyWord) != -1) {
                    // 符合条件的保存
                    p[f] = pets[j];
                    // 增加位置标志
                    f++;
                }
            }
        }
        return p;
    }
}

测试

package com.toltech.ainmal;

import java.util.List;

/**
 * Created by wanggs on 2017/9/21.
 */
public class PetTest {
    public static void main(String[] args) {
        // 5个宠物ba
      PetShop petShop = new PetShop(5);
      petShop.add(new Cat("白猫",2,"白色"));
      petShop.add(new Cat("黑猫",1,"黑色"));
      petShop.add(new Cat("花猫",2,"花色"));
      petShop.add(new Pig("白猪",3,"白色"));
      petShop.add(new Dog("黑狗",2,"黑色"));

        Pet[] pets = petShop.search("1");
        for(Pet pet : pets){
            System.out.println(pet);
        }


    }
}

精简版

package com.toltech.ainmal;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by wanggs on 2017/9/21.
 */
public class PetShop {
    // 保存多个属性
    List pets;

    // 关键字查找
    public List search(String keyWord) {
        // 此处为查找后的结果,不固定
        List p = new ArrayList();
        System.out.println(pets.size());
        for (int j = 0; j < this.pets.size(); j++) {
            if (pets.get(j) != null) {
                // 统计符合的宠物
                if (this.pets.get(j).getName().indexOf(keyWord) != -1 || this.pets.get(j).getColor().indexOf(keyWord) != -1) {
                    p.add(pets.get(j));
                }
            }
        }
        return p;
    }

    public List getPets() {
        return pets;
    }

    public void setPets(List pets) {
        this.pets = pets;
    }
}

你可能感兴趣的:(宠物商店(java版本))