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下载代码 将修改后的代码上传 上传结果 重 ...
随机推荐
- 安装篇--xshell评估过期解决方法
打开XSHELL6(以自身版本为准,没有版本限制),弹出如上提示框,解决如下: 1.点击取消,不用卸载原来的,直接进入官网下载安装免费授权的https://www.netsarang.com/ 2.点 ...
- Navigation 实现不同fragment之间的view的共享(含动画过渡)
以imageView的共享举例 两个fragment都要有各自的imageview视图,id可以不同,但transitonName一定要相同, 都要指定相同的src 例如: fragment A &l ...
- springboot整合JDBC出现Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'.
今天使用springboot整合JDBC的使用,开始使用的是 com.mysql.jdbc.Driver驱动 结果运行出现此异常 那我们根据提示要求来修改即可 把驱动改成最新的com.mysql.cj ...
- docker部署安装流程第一版
docker部署安装流程第一版 1.以Dockerfile的方式进行构建docker 以cloud 新联盟为例 dockerfile from hub.c.163.com/library/maven ...
- javascript数组排序之冒泡排序
冒泡排序 作为一名程序员数组的排序算法是必须要掌握的,今天来说最简单的一种数组排序----冒泡排序 冒泡排序原理 冒泡排序算法是一种简单直观的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如 ...
- 编译ONNX模型Compile ONNX Models
编译ONNX模型Compile ONNX Models 本文是一篇介绍如何使用Relay部署ONNX模型的说明. 首先,必须安装ONNX包. 一个快速的解决方案是安装protobuf编译器,然后 pi ...
- 数据、人工智能和传感器按COVID-19新冠流感排列
数据.人工智能和传感器按COVID-19新冠流感排列 Data, AI and sensors arrayed against COVID-19 各国政府.卫生保健专业人士和工业界争先恐后地应对Cov ...
- 尚硅谷Java——宋红康笔记【day6-day10】
day6 一.数组的概述 1.数组的理解:数组(Array),是多个相同类型数据按一定顺序排列的集合,并使用一个名字命名,并通过编号的方式对这些数据进行统一管理. 2.数组相关的概念: 数组名 元素 ...
- 可微渲染 SoftRas 实践
SoftRas 是目前主流三角网格可微渲染器之一. 可微渲染通过计算渲染过程的导数,使得从单张图片学习三维结构逐渐成为现实.可微渲染目前被广泛地应用于三维重建,特别是人体重建.人脸重建和三维属性估计等 ...
- 【模拟7.27】题(liu_runda的神题)(卡特兰数,组合数)
考场的SB经验不再分享 case 0: 一道组合计数的水题,具体不再讲可以看以前的相似题 case 1: 很明显的卡特兰计数,我们把长度为n的序列看成01串 关于卡特兰计数的详细的讲解 由此可知我们需 ...