Java实验项目三——宠物商店
Program:宠物商店的设计(继承,接口,线性线性表)
Description:本题未实现图形用户界面,项目结构描述如下:
classes.Pet:定义宠物接口,只要实现该接口的宠物类,都可存储进宠物商店
(本例定义的接口为标识接口,未定义任何方法,只用于标识)
classes.PetShop:宠物商店类,采用了单例设计模式
classes.entity.Dog:宠物狗类,实现了Pet接口
classes.entity.Cat:宠物猫类,实现了Pet接口
main.TestDemo:测试类
classes.Pet
1 /*
2 * Description:定义宠物标识接口,只要是实现此接口的类都为宠物类,都可放进宠物商店
3 *
4 * Written By:Cai
5 *
6 * Date Written:2017-10-18
7 *
8 * */
9
10
11 package classes;
12
13 public interface Pet {
14
15 }
classes.PetShop
1 /*
2 * Description:定义宠物商店,采用单例设计模式
3 *
4 * Written By:Cai
5 *
6 * Date Written:2017-10-18
7 *
8 * */
9
10
11 package classes;
12
13 import java.util.Iterator;
14 import java.util.List;
15 import java.util.ArrayList;
16
17 public class PetShop {
18
19 private List<Pet> pets = new ArrayList<Pet>(); //存取宠物
20 private static PetShop instance = null; //声明私有对象
21
22 //定义私有构造方法
23 private PetShop() { }
24
25 //取得宠物商店的实例
26 public static PetShop getInstance() {
27
28 if( PetShop.instance == null ) {
29
30 PetShop.instance = new PetShop();
31 }
32 return PetShop.instance;
33 }
34
35 //取得宠物的数量
36 public int getCount() {
37
38 return this.pets.size();
39 }
40
41 //添加宠物
42 public void add(Pet pet) {
43
44 if( pet != null ) {
45
46 this.pets.add(pet);
47 }
48 }
49
50 //打印所有宠物
51
52 public void displayInfo() {
53
54 Iterator<Pet> ite = this.pets.iterator();
55 while( ite.hasNext() ) {
56
57 System.out.println( ite.next() );
58 }
59 }
60
61 }
classes.entity.Dog
1 /*
2 * Description:定义宠物狗类
3 *
4 * Written By:Cai
5 *
6 * Date Written:2017-10-18
7 *
8 * */
9
10 package classes.entity;
11
12 import classes.Pet;
13
14 public class Dog implements Pet {
15
16 private String name;
17 private String color;
18 private int age;
19
20 //定义构造方法
21
22 public Dog() {}
23
24 public Dog(String name, String color, int age) {
25
26 super();
27 this.name = name;
28 this.color = color;
29 this.age = age;
30 }
31
32
33 //定义setter()和getter()方法
34
35 public String getName() {
36 return name;
37 }
38
39 public void setName(String name) {
40 this.name = name;
41 }
42
43 public String getColor() {
44 return color;
45 }
46
47 public void setColor(String color) {
48 this.color = color;
49 }
50
51 public int getAge() {
52 return age;
53 }
54
55 public void setAge(int age) {
56 this.age = age;
57 }
58
59
60 //覆写toString()方法
61 @Override
62 public String toString() {
63 return "Dog [name=" + name + ", color=" + color + ", age=" + age + "]";
64 }
65
66 }
classes.entity.Cat
1 /*
2 * Description:定义宠物猫类
3 *
4 * Written By:Cai
5 *
6 * Date Written:2017-10-18
7 *
8 * */
9
10 package classes.entity;
11
12 import classes.Pet;
13
14 public class Cat implements Pet {
15
16 private String name;
17 private String color;
18 private int age;
19
20 //定义构造方法
21
22 public Cat() {}
23
24 public Cat(String name, String color, int age) {
25
26 super();
27 this.name = name;
28 this.color = color;
29 this.age = age;
30 }
31
32
33 //定义setter()和getter()方法
34
35 public String getName() {
36 return name;
37 }
38
39 public void setName(String name) {
40 this.name = name;
41 }
42
43 public String getColor() {
44 return color;
45 }
46
47 public void setColor(String color) {
48 this.color = color;
49 }
50
51 public int getAge() {
52 return age;
53 }
54
55 public void setAge(int age) {
56 this.age = age;
57 }
58
59
60 //覆写toString()方法
61 @Override
62 public String toString() {
63 return "Cat [name=" + name + ", color=" + color + ", age=" + age + "]";
64 }
65
66 }
main.TestDemo
1 /*
2 * Description:定义测试类,测试宠物商店
3 *
4 * Written By:Cai
5 *
6 * Date Written:2017-10-18
7 *
8 * */
9
10 package main;
11
12 import classes.*;
13 import classes.entity.Cat;
14 import classes.entity.Dog;
15
16 public class TestDemo {
17
18 public static void main(String args[]) {
19
20 //取得宠物商店的实例
21 PetShop shop = PetShop.getInstance();
22
23 //添加宠物
24 shop.add( new Dog("小黑","黑色",2) );
25 shop.add( new Dog("小白","白色",3) );
26 shop.add( new Cat("小喵","黄色",1) );
27 shop.add( new Cat("大喵","白色",3) );
28
29 //打印所有宠物
30 shop.displayInfo();
31
32 }
33
34 }
1 /* *
2 * Description:定义宠物商店,采用单例设计模式
3 *
4 * Written By:Cai
5 *
6 * Date Written:2017-10-18
7 *
8 */
9
10 package classes;
11 import java.util.Iterator;
12 import java.util.List;
13 import java.util.ArrayList;
14 public class PetShop {
15 private List<Pet> pets = new ArrayList<Pet>();//存取宠物
16 private static PetShop instance = null;//声明私有对象
17 //定义私有构造方法
18 private PetShop() {}
19 //取得宠物商店的实例
20 public static PetShop getInstance() {
21 if( PetShop.instance == null ) {
22 PetShop.instance = new PetShop();
23 }
24 return PetShop.instance;
25 }
26 //取得宠物的数量
27 public int getCount() {
28 return this.pets.size();
29 }
30 //添加宠物
31 public void add(Pet pet) {
32 if( pet != null ) {
33 this.pets.add(pet);
34 }
35 }
36 //打印所有宠物
37 public void displayInfo() {
38 Iterator<Pet> ite = this.pets.iterator();
39 while( ite.hasNext() ) {
40 System.out.println( ite.next() );
41 }
42 }
43 }
Java实验项目三——宠物商店的更多相关文章
- Java实验项目三——职工类对象数组按照职工生日排序
Program: 修改项目三(1)中的第3题,实现比较方法,将对象数组的数据按照生日的大小给职工排序. Description:令日期类MyDate和员工类Worker类实现接口Comparable, ...
- Java实验项目三——平面图形和立体图形抽象类
Program:按照下面要求完成类的设计 (1)设计一个平面图形抽象类和一个立体图形抽象类,提供该类对象公共的方法和属性. (2)修改项目三中第2题中所设计的球类.圆柱类,圆锥类.矩形类.三角形类.圆 ...
- Java实验项目三——简单工厂模式
Program: 请采用采用简单工厂设计模式,为某个汽车销售店设计汽车销售系统,接口car至少有方法print(), 三个汽车类:宝马.奥迪.大众 (属性:品牌,价格),在测试类中根据客户要求购买的汽 ...
- Java实验项目三——编程实现Person类,学生类的设计及其继承关系
Program: 编程实现Person类,学生类的设计及其继承关系 代码如下: 定义抽象类Person 1 /* 2 * Description:建立抽象类 3 * 4 * Written By:Ca ...
- Java实验项目三——采用面向对象的方式设计线性表
Program: 采用面向对象的方法设计一个线性表,目的是为其他需要用线性表的应用提供线性表对象. 1.list包中,定义线性表类 1 /* 2 * Description:定义线性表类 3 * 4 ...
- Java实验项目三——面向对象定义职工类和日期类
Program:按照如下要求设计类: (1)设计一个日期类,用于记录年.月.日,并提供对日期处理的常用方法. (2)设计一个职工类,该职工类至少具有下面的属性:职工号,姓名,性别,生日,工作部门,参加 ...
- Java实验项目三——递归实现字符串查找和替换操作
Program:按照下面要求实现字符串的操作: (1)设计一个提供下面字符串操作的类 1)编写一个方法,查找在一个字符串中指定字符串出现的次数. 2)编写一个方法,参数(母字符串,目标字符串,替换字符 ...
- 20135231 JAVA实验报告三:敏捷开发与XP实践
---恢复内容开始--- JAVA实验报告三:敏捷开发与XP实践 20135231 何佳 实验内容 1. XP基础 2. XP核心实践 3. 相关工具 实验要求 1.没有Linux基础的同学建议先学习 ...
- java实验报告三 敏捷开发与XP
20145306 java 实验三 实验报告 实验内容 1.git下载结对同学的代码 2.修改结对同学的代码 3.实现代码重构 实验步骤 新建存储空间 git下载代码 将修改后的代码上传 上传结果 重 ...
随机推荐
- MyBatis 开启 Log4j 日志调试信息开关
Log4j 是什么 Log4j 是由 Apache 提供的开源日志框架,用于帮助用户处理日志信息. Log4j 能将日志信息分级打印和存储,而且提供了日志不同的存储方式,我们可以将日志发送到控制台,或 ...
- 9.13-15 runlevel & init & service
runlevel:输出当前运行级别 runlevel命令用于输出当前Linux系统的运行级别. -quiet 不输出结果,用于通过返回值判断的场合 [root@cs6 ~]# runlevel N 3 ...
- python3 贪吃蛇小游戏
贪吃蛇 #!/usr/bin/env python import pygame,sys,time,random from pygame.locals import * # 定义颜色变量 redColo ...
- MongoDB学习笔记:Python 操作MongoDB
MongoDB学习笔记:Python 操作MongoDB Pymongo 安装 安装pymongopip install pymongoPyMongo是驱动程序,使python程序能够使用Mong ...
- TVM性能评估分析(一)
TVM性能评估分析(一) System Overview AutoTVM vs Auto-scheduler Table 1. Workflow Comparision Figure 1. Searc ...
- CVPR2020论文解读:3D Object Detection三维目标检测
CVPR2020论文解读:3D Object Detection三维目标检测 PV-RCNN:Point-Voxel Feature Se tAbstraction for 3D Object Det ...
- TensorFlow常用Python扩展包
TensorFlow常用Python扩展包 TensorFlow 能够实现大部分神经网络的功能.但是,这还是不够的.对于预处理任务.序列化甚至绘图任务,还需要更多的 Python 包. 下面列出了一些 ...
- 摄像头ISP系统原理(中)
摄像头ISP系统原理(中) AF(FOCUS)----自动对焦 根据光学知识,景物在传感器上成像最清晰时处于合焦平面上.通过更改 LENS 的位置,使得景物在传感器上清晰的成像,是 ISP FOCUS ...
- 中继TensorRT集成
中继TensorRT集成 介绍 NVIDIA TensorRT是用于优化深度学习推理的库.这种集成将使尽可能多的算子从Relay转移到TensorRT,从而无需调整调度,即可在NVIDIA GPU上提 ...
- H.265 HD 和H.265 4K Video Encoder IP Core
H.265 HD 和H.265 4K Video Encoder IP Core H.265 HD Video Encoder IP Core(H.265 HD Video/Audio Encoder ...