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下载代码 将修改后的代码上传 上传结果 重 ...
随机推荐
- mysql数据库-简介
目录 1 MySQL 的三大主要分支 1.1 官方文档 1.2 版本演变 1.3 MySQL 安装方式 1.3.1 RPM包安装Mysql 1.3.2 二进制安装MySQL 1.4 mysql组成 1 ...
- Python+Selenium自动化-模拟键盘操作
Python+Selenium自动化-模拟键盘操作 0.导入键盘类Keys() selenium中的Keys()类提供了大部分的键盘操作方法:通过send_keys()方法来模拟键盘上的按键. # ...
- TVM设计与构架构建
TVM设计与构架构建 本文档适用于希望了解TVM体系结构和/或在项目上进行积极开发的开发人员.该页面的组织如下: 实例编译流程Example Compilation Flow描述TVM把一个模型的高级 ...
- HTML——超链接<a>
一.超链接的一般格式: <a href="路径" target="目标窗口的位置">链接文本或图像<a/> 1.常用参数说明: href ...
- 08:jQuery(01)
今日内容概要 jQuery(封装了js的前端框架(模块)) 很容易与DOM操作混淆 jQuery """ jQuery内部封装了原生的js代码(还额外添加了很多的功能) ...
- 如何让vscode C++ 终端不再显示调试启动信息
按照微软的官方文档(https://go.microsoft.com/fwlink/?LinkID=533484#vscode)配置好C++环境之后. 每次按F5都会在终端输出,但是会附加一串信息.例 ...
- oracle中如何处理null
从两个表达式返回一个非 null 值.语法NVL(eExpression1, eExpression2)参数eExpression1, eExpression2如果 eExpression1 的计算结 ...
- Shiro-JWT SpringBoot前后端分离权限认证的一种思路
JWT-Shiro 整合 JWT-与Shiro整合进行授权认证的大致思路 图示 大致思路 将登录验证从shiro中分离,自己结合JWT实现 用户登陆后请求认证服务器进行密码等身份信息确认,确认成功后 ...
- 广州某小公司:ThreadLocal面试
<对线面试官>系列目前已经连载24篇啦!有深度风趣的系列! [对线面试官]Java注解 [对线面试官]Java泛型 [对线面试官] Java NIO [对线面试官]Java反射 & ...
- 32.qt quick-PathView实现好看的home界面
pathView的使用类似与ListView,都需要模型(model)和代理(delegate),只不过pathView多了一个路径(path)属性,顾名思义路径就是item滑动的路径. 一个Path ...