设计一个宠物商店
在宠物商店中可以有多种动物(由用户决定数量),并可以根据动物的关键字查找动物的信息
具体分析
- 动物信息可以自己设计,简单设计为名字
、颜色、年龄 - 宠物类别很多,如狗,猫,猪...所以要统一一个标准。
- 只要符合该标准都可以放入宠物商店中。
- 宠物商店中要保存多种宠物,所以应该有一个宠物数组,如果个数由用户决定,则创建动物时,就因该分配动物个数。
代码实现
动物父类
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;
}
}