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 各种参数传递方式
MyBatis参数传递方式 情况一:Mapper映射器接口方法参数只有一个且为基本类型 接口方法: public List<UserEntity> selectUserByAge(int ...
- 服务器RAID配置
一.RAID介绍RAID是Redundent Array of Inexpensive Disks的缩写,直译为"廉价冗余磁盘阵列",也简称为"磁盘阵列".后来 ...
- 【Web前端HTML5&CSS3】11-定位
笔记来源:尚硅谷Web前端HTML5&CSS3初学者零基础入门全套完整版 目录 定位的简介 1. 相对定位 偏移量(offset) 相对定位的特点 2. 绝对定位 绝对定位的特点 包含块(co ...
- skynet debug console 使用
预读 关于如何使用 skynet 可以参考 wiki 文档 更多实战内容见 https://www.lanqiao.cn/courses/2770 优惠码:2CZ2UA5u 环境测试搭建 使用示例代码 ...
- Python+Selenium - iframe定位
元素在iframe中.在html当中,内嵌了另一个html (iframe) 分辨元素是否在iframe当中 在代码当中,从当前的html切换到iframe当中的html,然后在元素定位 切换方式:d ...
- 优雅关闭springboot应用
1.添加钩子函数,钩子函数中指定要调用的方法 @PostConstruct public void run() { this.zkClient.start(this); this.schedulerS ...
- TVM vs TensorRT比较
TVM vs TensorRT比较 如果理解正确的话,TensorRT和TVM会加快预测速度. TensorRT优化预测GPU和TVM优化预测几乎所有平台支持GPU,ARM,Mobile... 两者在 ...
- h265player开发
h265player开发 https://github.com/goldvideo/h265player 简介 随着视频编码技术的发展,相比H.264, H.265同等画质体积仅为一半.带宽占用省一半 ...
- liunx:网络命令
现系统的学习一下Web渗透相关的命令 ping ping 命令是用来测试TCP/IP 网络是否畅通或者测试网络连接速度的命令,对确定网络是否正确连接,以及网络连接的状况十分有用.简单的说,ping就是 ...
- 【问题记录】—SignalR连接断线重连
起因: ASP.NET Core SignalR是一个开源库,可简化向应用添加实时 SignalR Web 功能. 实时 Web 功能使服务器端代码能够立即将内容推送到客户端.(相信大家都用得比较多了 ...