首页 > 代码库 > 接口设计的一个程序实例(宠物商店)

接口设计的一个程序实例(宠物商店)

    外延     

                   以往写博客没有用那种目录的结构,今天终于会用了。如何使用目录结构请参照:目录结构的使用

    实例要求

                实现一个宠物商店,宠物商店的宠物可以有多种(数量由用户决定),试表示此种关系,并要求根据宠物的的关键字查找宠物的信息,所需要的宠物信息自行设计。

    所用知识

              接口,对象数组

    实例分析

             宠物信息可以自行设计,我们可以简单设计三个属性:名字、颜色、年龄
            宠物的类别很多、所以宠物应该是一个标准(接口)
            宠物商店有多种宠物,应该是一个宠物的对象数组  

    代码实现

          
interface Pet{	// 定义宠物接口
	public String getName() ;
	public String getColor() ;
	public int getAge() ;
}
class Cat implements Pet{	// 猫是宠物,实现接口
	private String name ;	// 宠物名字
	private String color ;	// 宠物颜色
	private int age ;		// 宠物年龄
	public Cat(String name,String color,int age){
		this.setName(name) ;
		this.setColor(color) ;
		this.setAge(age) ;
	}
	public void setName(String name){
		this.name = name ;
	}
	public void setColor(String color){
		this.color = color;
	}
	public void setAge(int age){
		this.age = age ;
	}
	public String getName(){
		return this.name ;
	}
	public String getColor(){
		return this.color ;
	}
	public int getAge(){
		return this.age ;
	}
};
class Dog implements Pet{	// 狗是宠物,实现接口
	private String name ;	// 宠物名字
	private String color ;	// 宠物颜色
	private int age ;		// 宠物年龄
	public Dog(String name,String color,int age){
		this.setName(name) ;
		this.setColor(color) ;
		this.setAge(age) ;
	}
	public void setName(String name){
		this.name = name ;
	}
	public void setColor(String color){
		this.color = color;
	}
	public void setAge(int age){
		this.age = age ;
	}
	public String getName(){
		return this.name ;
	}
	public String getColor(){
		return this.color ;
	}
	public int getAge(){
		return this.age ;
	}
};
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<this.pets.length){
			this.pets[this.foot] = pet ;	// 增加宠物
			this.foot ++ ;            //foot 数组下标
			return true ;
		}else{
			return false ;
		}
	}
	public Pet[] search(String keyWord){
		// 应该确定有多少个宠物符合要求
		Pet p[] = null ;
		int count = 0 ;	// 记录下会有多少个宠物符合查询结果
		for(int i=0;i<this.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 i=0;i<this.pets.length;i++){
			if(this.pets[i]!=null){		// 表示此位置有宠物
				if(this.pets[i].getName().indexOf(keyWord)!=-1
					||this.pets[i].getColor().indexOf(keyWord)!=-1){
					p[f] = this.pets[i] ;
					f++ ;
				}
			}
		}
		return p ;

	}
};
public class PetShopDemo{
	public static void main(String args[]){
		PetShop ps = new PetShop(5) ;	// 五个宠物
		ps.add(new Cat("白猫","白色的",2)) ;	// 增加宠物,成功
		ps.add(new Cat("黑猫","黑色的",3)) ;	// 增加宠物,成功
		ps.add(new Cat("花猫","花色的",3)) ;	// 增加宠物,成功
		ps.add(new Dog("拉步拉多","黄色的",3)) ;	// 增加宠物,成功
		ps.add(new Dog("金毛","金色的",2)) ;	// 增加宠物,成功
		ps.add(new Dog("黄狗","黑色的",2)) ;	// 增加宠物,失败    数组长度为5
		print(ps.search("黑")) ;
	}
	public static void print(Pet p[]){
		for(int i=0;i<p.length;i++){
			if(p[i]!=null){
				System.out.println(p[i].getName() + "," + p[i].getColor()
					+"," + p[i].getAge()) ;
			}
		}
	}
};

       总结

         本程序最主要的是接口的设计,    注意查询时indexof的使用,程序设计要严谨(一些判断的使用)。

接口设计的一个程序实例(宠物商店)