面向对象第六章课后作业

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();	//显示当前属性值
	}

}

你可能感兴趣的:(java面向对象程序设计)