Java实例分析:宠物商店
设计一个“宠物商店”,在宠物商店中可以有多种宠物,试表示出此种关系,并要求可以根据宠物的关键字查找相应的宠物信息。
//=================================================
// File Name : factory
//------------------------------------------------------------------------------
// Author : Common // 接口名:Pet
// 属性:
// 方法:
interface Pet{
public String getName();
public String getColor();
public int getAge();
} //类名:Cat
//属性:
//方法:
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 String getName() {
return Name;
}
public void setName(String name) {
Name = name;
}
public String getColor() {
return Color;
}
public void setColor(String color) {
Color = color;
}
public int getAge() {
return Age;
}
public void setAge(int age) {
Age = age;
}
} //类名:Dog
//属性:
//方法:
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 String getName() {
return Name;
}
public void setName(String name) {
Name = name;
}
public String getColor() {
return Color;
}
public void setColor(String color) {
Color = color;
}
public int getAge() {
return Age;
}
public void setAge(int age) {
Age = age;
}
} //类名:PetShop
//属性:
//方法:
class PetShop{ private Pet[] pets; //定义一个Pet形数组,此数字的大小由传入的len决定
private int foot; //定义数组的当前元素下标 public PetShop(int len){ //数组的大小由len决定,构造方法
if(len>0){ //判断传入的长度是否大于0
this.pets = new Pet[len]; //根据传入的大小开辟空间
}else{
this.pets = new Pet[1]; //否则只开辟长度为1的空间
}
} public boolean add(Pet pet){
if(this.foot < this.pets.length){ //判断数组是否已经满了
this.pets[foot] = pet; //没有存满则继续添加
this.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;
} } //主类
//Function : 适配器设计模式
public class Pet_demo { public static void main(String[] args) {
// TODO 自动生成的方法存根
PetShop ps = new PetShop(5);
ps.add(new Cat("白猫","白",2));
ps.add(new Cat("黑猫","黑",4));
ps.add(new Cat("黄猫","黄",3));
ps.add(new Cat("白狗","白",2));
ps.add(new Cat("黑狗","黑",2));
ps.add(new Cat("黄狗","黄",3));
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].getAge()+p[i].getColor());
}
}
} }
Java实例分析:宠物商店的更多相关文章
- 吴裕雄--天生自然JAVA面向对象高级编程学习笔记:宠物商店实例分析
interface Pet{ // 定义宠物接口 public String getName() ; public String getColor() ; public int getAge() ; ...
- Java实验项目三——宠物商店
Program:宠物商店的设计(继承,接口,线性线性表) Description:本题未实现图形用户界面,项目结构描述如下: classes.Pet:定义宠物接口,只要实现该接口的宠物类,都可存储进宠 ...
- java基础学习05(面向对象基础01--类实例分析)
面向对象基础01(类实例分析) 实现的目标 1.如何分析一个类(类的基本分析思路) 分析的思路 1.根据要求写出类所包含的属性2.所有的属性都必须进行封装(private)3.封装之后的属性通过set ...
- RPC原理及RPC实例分析
在学校期间大家都写过不少程序,比如写个hello world服务类,然后本地调用下,如下所示.这些程序的特点是服务消费方和服务提供方是本地调用关系. 1 2 3 4 5 6 public class ...
- 从.NET的宠物商店到Android MVC MVP
1 一些闲话 记得刚进公司的时候,我们除了做常规的Training Project外,每天还要上课,接受各种技术培训和公司业务介绍.当时第一次知道QA和SQA的区别.Training Project时 ...
- Protocol Buffer技术详解(Java实例)
Protocol Buffer技术详解(Java实例) 该篇Blog和上一篇(C++实例)基本相同,只是面向于我们团队中的Java工程师,毕竟我们项目的前端部分是基于Android开发的,而且我们研发 ...
- Android Touch事件原理加实例分析
Android中有各种各样的事件,以响应用户的操作.这些事件可以分为按键事件和触屏事件.而Touch事件是触屏事件的基础事件,在进行Android开发时经常会用到,所以非常有必要深入理解它的原理机制. ...
- JVM 字节码执行实例分析
前言 最近在看<Java 虚拟机规范>和<深入理解JVM虚拟机>,对于字节码的执行有了进一步的了解.字节码就像是汇编语言,是 JVM 的指令集.下面我们先对 JVM 执行引擎做 ...
- OutOfMemoryError/OOM/内存溢出异常实例分析--虚拟机栈和本地方法栈溢出
关于虚拟机栈和本地方法栈,在JVM规范中描述了两种异常: 1.如果线程请求的栈深度大于JVM所允许的深度,将抛出StackOverflowError异常: 2.如果虚拟机在扩展栈时无法申请到足够的内存 ...
随机推荐
- 【Alpha版本】冲刺阶段——Day 5
我说的都队 031402304 陈燊 031402342 许玲玲 031402337 胡心颖 03140241 王婷婷 031402203 陈齐民 031402209 黄伟炜 031402233 郑扬 ...
- 如何调试js文件
来源于:http://stackoverflow.com/questions/988363/how-can-i-debug-my-javascript-code http://stackoverflo ...
- linux下部署项目问题
1. 今天linux下部署thinkphp项目,数据库用的mysql. 页面其他都是正常的,但是从数据库中取出的数据都是乱码.最后查了资料 解决方案: 在ThinkPHP里面 Library\Thin ...
- TCP/UDP,SOCKET网络通信,C++/Java实现
趁这两天没事干,就把网络通信这一块搞一搞,C/S方面的了解一下,很重要! TCP Server/Client
- vmware 虚拟机克隆之后配IP重启网络失败
在日常实验中,我新安装了一个虚拟机(全新的)node1,然后为了实验,又克隆了一天虚拟机node2 然后我给两台机器设置IP和主机名node1 : 192.168.220.128 node2 : 1 ...
- [转]制作png格式透明图片的简易方法
原文地址:http://blog.csdn.net/zhouyingge1104/article/details/24460743 photoshp之类的专业软件太复杂,其实,制作透明图标有比较简易的 ...
- 编译php5.4的时候出现错误----configure: error: in `/usr/local/src/php540/php-5.4.0':
错误如下:checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep - ...
- jquery 双击修改某项值
双击修改某项值 $(function() { $('td.breakword').dblclick(function(){ $(this).addClass('input').html('<in ...
- C#-WebForm-★ 制作图片验证码 ★
在前台放在如下四个控件 <div> <asp:TextBox ID="TextBox1" runat="server"></asp ...
- MVVM: 通过 x:Bind 实现 MVVM(不用 Command)
背水一战 Windows 10 之 MVVM(Model-View-ViewModel) 通过 x:Bind 实现 MVVM(不用 Command) 示例1.ModelMVVM/Model/Produ ...