宠物系统重构与扩展
4.在第三题的进行功能扩展。
(1)增加一种新的动物类型:Pig(猪),实现shout()方法。
(2)修改Store类的get()方法:如果传入的参数是字符串dog,则返回一个Dog对象;如果传入的参数是字串 pig,则返回一个Pig对象;否则,返回一个Cat对象。
(3)在测试类Test中加以测试:向Store类的get()方法中传入参数“pig”,并返回的对象中调用shout()方 法,看看与预期的结果是否一致。
package com.homework.demo.test6_4;
/**
* 动物接口
* @author suixin
*
*/
public interface Animal {
void shout();
}
package com.homework.demo.test6_4;
public class Cat implements Animal {
@Override
public void shout() {
// TODO Auto-generated method stub
System.out.println("M M!");
}
}
package com.homework.demo.test6_4;
public class Dog implements Animal {
@Override
public void shout() {
// TODO Auto-generated method stub
System.out.println("W W!");
}
}
package com.homework.demo.test6_4;
public class Pig implements Animal {
@Override
public void shout() {
// TODO Auto-generated method stub
System.out.println("猪叫!");
}
}
package com.homework.demo.test6_4;
public class Store {
public static Animal get (String choice) {
if (choice.equalsIgnoreCase("dog")) {
return new Dog();
}else if (choice.equalsIgnoreCase("pig")) {
return new Pig();
}else {
return new Cat();
}
}
}
package com.homework.demo.test6_4;
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
Animal al = Store.get("dog");
al.shout();
Animal a2 = Store.get("pig");
a2.shout();
}
}
5.对贯穿本书的案列电子宠物系统的类结构进行重构,要求如下:>定义Eatble接口,在接口中定义eat( )方法,表示吃饭功能。
>定义FlyingDiscCatchable接口,在接口定义中catchingFiyDise( )方法,表示接飞盘功能。
>定义Swimmable接口,在接口中定义swim( )方法,表示游泳功能。
>定义抽象类Pet,包括宠物名称(mane),健康值(health),和主人亲密度(love)属性。并提供抽象方法print( ),用来输出宠物信息。
>定义狗类Dog,继承Pet类,实现Eatable和FlyingDiscCatchable接口,并重写或实现各个方法。
>定义企鹅类Penguin,继承Pet类,实现Eatable和Swimmble接口,并重写或实现各个方法。
>编写测试类,实现狗吃饭,企鹅游泳和狗玩飞盘游戏的功能,并输出企鹅信息。
package com.homework.demo.test6_5;
/**
* 宠物狗类继承宠物父类,实现接飞盘接口和吃饭接口
* @author suixin
*
*/
public class Dog extends Pet implements Eatable, FlyingDiscCatchable {
public Dog(String name, int health, int love) {
super(name, health, love);
// TODO Auto-generated constructor stub
}
@Override
public void catchingFlyDisc() {//接飞盘
// TODO Auto-generated method stub
System.out.println("狗狗"+super.name+"正在接飞盘。");
super.health -= 10;
super.love +=5;
}
@Override
public void eat() {//吃饭
// TODO Auto-generated method stub
System.out.println("狗狗"+super.name+"吃饱啦!健康值增加5。");
super.health += 5;
}
@Override
public void print() {
// TODO Auto-generated method stub
System.out.println("宠物的自白:n我的名字叫"+this.name+",健康值是"+this.health
+",和主人的亲密度是"+this.love);
}
}
package com.homework.demo.test6_5;
/**
* 吃饭功能接口
* @author suixin
*
*/
public interface Eatable {
void eat();//吃饭功能
}
package com.homework.demo.test6_5;
/**
* 接飞盘功能接口
* @author suixin
*
*/
public interface FlyingDiscCatchable {
void catchingFlyDisc(); //接飞盘功能
}
package com.homework.demo.test6_5;
/**
* 企鹅类
* @author suixin
*
*/
public class Penguin extends Pet implements Eatable, Swimmable {
public Penguin(String name, int health, int love) {
super(name, health, love);
// TODO Auto-generated constructor stub
}
@Override
public void swim() {//游泳
// TODO Auto-generated method stub
System.out.println("企鹅"+super.name+"正在游泳。");
super.health -= 10;
super.love +=5;
}
@Override
public void eat() {//吃饭
// TODO Auto-generated method stub
System.out.println("企鹅"+super.name+"吃饱啦!健康值增加5。");
super.health += 5;
}
@Override
public void print() {
// TODO Auto-generated method stub
System.out.println("宠物的自白:n我的名字叫"+this.name+",健康值是"+this.health
+",和主人的亲密度是"+this.love);
}
}
package com.homework.demo.test6_5;
/**
* 宠物父类
* @author suixin
*
*/
public abstract class Pet {
String name; //宠物昵称
int health = 100; //健康值
int love = 0; //亲密度
public Pet(String name, int health, int love) {
super();
this.name = name;
this.health = health;
this.love = love;
}
/**
* 输出基本信息
*/
public abstract void print();
/**
* 输出实现功能后的属性值
*/
public void print2() {
System.out.println(this.name+"当前的健康值是"+this.health+",和主人的亲密度是"+this.love);
}
}
package com.homework.demo.test6_5;
/**
* 游泳功能接口
* @author suixin
*
*/
public interface Swimmable {
void swim(); //游泳功能
}
package com.homework.demo.test6_5;
/**
* 测试类
* @author suixin
*
*/
public class TestPet {
public static void main(String[] args) {
// TODO Auto-generated method stub
Dog dog = new Dog("旺财", 80, 0);//创建狗的对象
dog.print(); //调用输出信息方法
dog.eat(); //吃饭方法
dog.print2(); //显示当前属性值方法
dog.catchingFlyDisc(); //接飞盘方法
dog.print2();//显示当前属性值
System.out.println("n");
Penguin penguin = new Penguin("鸥欧", 80, 0); //创建企鹅对象
penguin.print();//调用输出信息方法
penguin.eat();//吃饭方法
penguin.print2();//显示当前属性值方法
penguin.swim();//游泳方法
penguin.print2();//显示当前属性值
}
}
相关知识
重构第九章——简化条件语句
中国传统伦理道德的现代化转型与重构
基于vue宠物领养系统有什么
当代摄影的创新与重构:信念与方法
社交媒体场景下裕固族社会交往的变迁与重构
php添加openssl扩展
“变化多端”的回忆:是记不住,还是在不断“重构”?
【毕业设计】基于SpringBoot + Vue的宠物健康顾问系统
经管之家:行为哲学重构心理学
SSM宠物领养系统:课程设计与管理员功能
网址: 宠物系统重构与扩展 https://www.mcbbbk.com/newsview936127.html
上一篇: python宠物模拟 |
下一篇: 宠物电子狗供应商,价格,宠物电子 |
推荐分享

- 1我的狗老公李淑敏33——如何 5096
- 2南京宠物粮食薄荷饼宠物食品包 4363
- 3家养水獭多少钱一只正常 3825
- 4豆柴犬为什么不建议养?可爱的 3668
- 5自制狗狗辅食:棉花面纱犬的美 3615
- 6狗交配为什么会锁住?从狗狗生 3601
- 7广州哪里卖宠物猫狗的选择性多 3535
- 8湖南隆飞尔动物药业有限公司宠 3477
- 9黄金蟒的价格 3396
- 10益和 MATCHWELL 狗 3352