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.如果虚拟机在扩展栈时无法申请到足够的内存 ...
随机推荐
- windows server2008 r2 下启用 sqlserver 2008的远程连接
首先说明,本文转自互联网. TMD 花了二天,终于找到怎么开启这个远程连接了.....娘的,累死了,写下来,希望能帮助同胞们... 用win server 2008 r2 和sql server 20 ...
- html5 css3中的一些笔记
<!DOCTYPE html> <html> <head> <meta charset="utf-8" > <title> ...
- Linux 性能优化之 IO 子系统
本文介绍了对 Linux IO 子系统性能进行优化时需要考虑的因素,以及一些 IO 性能检测工具. 本文的大部分内容来自 IBM Redbook - Linux Performance and Tun ...
- mysql中IFIND_IN_SET和like的区别
在数据库中新建一张测试表t_user,包含三个字段'id','name','grilfriend',字段很容易看出,这是记录一个人的女朋友的表,注意这里的‘firlfriend’字段可以是多个人名,之 ...
- svn做目录访问控制(AuthzSVNAccessFile)
这个是Apache的配置文件 加载模块和svn的相关设置
- centos 20T硬盘(超过16T)分区
最近新买了一台服务器DELL R730 首先我们做了一个raid 1 和raid 5 在raid 1 上安装系统 安装完系统之后,现在要进行分区了,那个raid 5 做完之后,实际大小是19T 所以这 ...
- 将Extjs文件拷入eclipse工程下卡死问题
主要是由于eclipse默认对js文件进行校验,ExtJS中js文件多且庞大造成电脑资源耗尽. 解决方法: 找到工作空间中项目文件夹下的.project文件,将 <buildCommand> ...
- 【CodeVS 1199】【NOIP 2012】开车旅行
http://codevs.cn/problem/1199/ 主要思想是倍增,对于第一个回答从后往前扫,依次插入平衡树中. 我写的splay,比较繁琐. #include<cmath> # ...
- 【POJ 1151】Atlantis
离散化后扫描线扫一遍. 夏令营时gty学长就讲过扫描线,可惜当时too naive,知道现在才写出模板题. 当时也不会线段树啊233 #include<cstdio> #include&l ...
- linux下使用 du查看某个文件或目录占用磁盘空间的大小
du -ah --max-depth=1 这个是我想要的结果 a显示目录占用的磁盘空间大小,还要显示其下目录和文件占用磁盘空间的大小但是由于用了--max-depth选项,表示显示目录下所有 ...