链表:综合实战:宠物商店

链表:宠物商店


现在需求建立宠物商店,里面可以进行要销售的宠物的上架、下架、关键字查询。

要求:描述出程序的关系即可。那么假设对于宠物的信息只要求有三项:名字、年龄、颜色。

那么此时对应的关系:一个宠物商店会有多种宠物。如果按照表设计来讲应属于一对多关系映射,但是现在的问题是,一方应该是宠物商店,而多方应该是宠物,但是宠物又分为多种种类。

1.建立宠物标准:

interface Per{
	public String getName();
	public String getColor();
	public int getAge();
}

2.对于宠物商店,只关注与宠物的标准,而不关心具体是那种宠物 

interface Pet{//定义宠物
	public String getName();
	public String getColor();
	public int getAge();
		
}
class PetShop{
	private Link pets=new Link();//开辟一个链表保存多个宠物
public void add(Pet pet) {
	this.pets.add(pet);//上架宠物向链表中保存数据
}
public void delete(Pet pet) {
	this.pets.remove(pet);//下架删除链表数据
}
public Link getPets() {
	//取得全部宠物
	return this.pets;
}
public Link search (String keyWord) {
	Link result =new Link();//保存查询结果
	Object []data =this.pets.toArray();
	for(int x=0;x<data.length;x++) {
		Pet pet=(Pet) data[x];
		if(pet.getName().contains(keyWord)||pet.getColor().contains(keyWord)) {
			result.add(pet);//满足查询结果
		}
	}
	return result;
}
}
3.定义宠物狗: 
class Dog implements Pet{
	private String name;
	private int age;
	private String color;
	public Dog(String name,int age,String color) {
		this.name=name;
		this.age=age;
		this.color=color;
				
	}
	public String toString () {
		return "【狗】名字:"+this.name+",年龄:"+this.age+",颜色"+this.color;
	}
	
	public String getName() {
	return this.name;
	}
	public String getColor() {
		return this.color;
	}

	public int getAge() {
	
		return this.age;
	}
public boolean equals(Object obj) {
	if(obj==null) {
		return false;
	}
	if(this==obj) {
		return true;
	}if(!(obj instanceof Dog)) {
		return false;
	}
	Dog pet=(Dog) obj;
	return this.name.equals(pet.name)&&this.age==pet.age&&this.color.equals(pet.color);
}
}

4.定义宠物猫 :同宠物狗代码

5.编写测试程序:

public class TestDemo {

	public static void main(String[] args) {
	PetShop ps=new PetShop();
	ps.add(new Dog("黑狗",1,"黑色"));
	ps.add(new Dog("黄狗",2,"金色"));
	ps.add(new Dog("白狗",1,"金色"));
	ps.add(new Dog("蓝狗",1,"金色"));
	ps.add(new Cat("蓝猫",1,"蓝色"));
	ps.add(new Cat("死猫",2,"金色"));
	ps.add(new Cat("懒猫",2,"黑色"));
	//----------
//	ps.delete(new Dog("黄狗",2,"金色"));//删除操作
	Link all=ps.search("金色");
	Object []data=all.toArray();
	for(int x=0;x<data.length;x++) {
		System.out.println(data[x]);
	}
	
	}

}

 实际之中这种代码在生活中处处可见:

·一个公园可以有多种植物

·动物园可以有多种动物

·一个衣柜可以有多件衣服

·一个人可以吃多种食物

都是基于接口的标准

在以后进行代码开发的过程之中一切都要以接口设计为主

以上的代码中宠物商店和宠物间没什么联系 靠的就是接口

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值