Java动物乐园程序

要求:以面向对象的思想设计动物乐园

动物乐园的成员包括:猫、鸭子…

  • 属性:名称、腿
  • 方法:叫

需求说明:

  • 动物乐园增加一个新成员海豚,海豚的叫声为“海豚音…”;
  • 输出各种动物叫声;
  • 非别创建Cat、Duck、Dolphin对象并放到一个数组中,对数组进行遍历输出各种动物如何叫;
  • 输出各种动物腿的条数;

实现修改数据功能

  • 用户可以修改三种动物的信息
  • 如果修改信息中腿的条数不符合则手动抛出异常

实现思路:

  1. 创建抽象动物类,属性为名字和腿的条数,无参、有参构造函数,set()及get();
  2. 创建动物业务类,包含:不同动物的叫、展示动物信息及修改动物信息的方法,创建动物类型的数组,存放不同的动物;
  3. 分别创建Cat、Duck、Dolphin类,继承Animal类;
  4. 编写测试类。

运行结果如下
正常结果:
Java动物乐园程序_第1张图片

抛异常结果:
Java动物乐园程序_第2张图片

源码如下:

动物类Animal():

/**
 * animal抽象类
 * @author admin
 *
 */
public abstract class Animal {
     
	private String name;
	private int legs;
	public Animal() {
     
	}
	
	public Animal(String name,int legs) {
     
		super();
		this.name = name;
		this.legs = legs;
	}

	public String getName() {
     
		return name;
	}

	public void setName(String name) {
     
		this.name = name;
	}

	public int getLegs() {
     
		return legs;
	}

	public void setLegs(int legs) {
     
		this.legs = legs;
	}
	
}

动物业务类:

/**
 * 动物业务类
 * @author admin
 *
 */
public class AnimalService {
     
	//动物数组,存储动物信息
	Animal[] animalsArray = {
     new Cat("波斯猫", 4),new Duck("唐小鸭", 2),new Dolphin("海豚奇奇", 0)};
	
	/*
	 * 动物叫的方法
	 */
	public void shout(Animal animal) {
     
		if(animal instanceof Cat) {
     
			System.out.println("喵喵喵...");
		}else if(animal instanceof Duck) {
     
			System.out.println("嘎嘎嘎...");
		}else if (animal instanceof Dolphin) {
     
			System.out.println("海豚音...");
		}
	}
	
	/*
	 * 展示动物信息
	 */
	public void display() {
     
		System.out.println("动物名字\t腿的条数\t动物叫");
		for(int i=0;i<animalsArray.length;i++) {
     
			System.out.print(animalsArray[i].getName()+"\t"+animalsArray[i].getLegs()+"\t");
			shout(animalsArray[i]);
		}
	}
	
	/**
	 * 修改动物信息
	 * @param oldName 
	 * @param newName 
	 * @param legs
	 * @throws Exception
	 */
	public void Change(String oldName,String newName,int legs) throws Exception {
     
		if(oldName.equals(animalsArray[0].getName())) {
     
			if(legs==4) {
     
				animalsArray[0].setName(newName);
			}else {
     
				throw new Exception("猫有4条腿!");
			}
		}else if(oldName.equals(animalsArray[1].getName())) {
     
			if(legs==2) {
     
				animalsArray[1].setName(newName);
			}else {
     
				throw new Exception("鸭子有2条腿!");
			}
		}else if(oldName.equals(animalsArray[2].getName())) {
     
			if(legs==0) {
     
				animalsArray[2].setName(newName);
			}else {
     
				throw new Exception("企鹅没有腿!");
			}
		}
		System.out.println();
		display();
	}
}

Cat()类继承Animal():

/*
 * 实体猫类
 */
public class Cat extends Animal {
     
	private int legs;
	
	public Cat() {
     
		super();
	}

	public Cat(String name,int legs) {
     
		super(name,legs);
	}

}

Duck()类继承Animal():

/*
 * 实体鸭子类
 */
public class Duck extends Animal{
     

	public Duck() {
     
		super();
		// TODO Auto-generated constructor stub
	}

	public Duck(String name,int legs) {
     
		super(name,legs);
	}
	
}

Dolphin()类继承Animal():

/*
 * 实体海豚类
 */
public class Dolphin extends Animal{
     

	public Dolphin() {
     
		super();
	}

	public Dolphin(String name, int legs) {
     
		super(name, legs);
	}

	
}

测试类:

import java.util.Scanner;

public class Test {
     
	public static void main(String[] args) throws Exception {
     
		AnimalService as = new AnimalService();
		/*
		 * 展示动物信息
		 */
		as.display();
		
		Scanner sc = new Scanner(System.in);
		System.out.println("是否要继续修改数据:0、修改 ,其他数字退出:");
		int change = sc.nextInt();
		while(change==0) {
     
			System.out.println("请输入要修改的动物名称 :");
			String oldName = sc.next();
			System.out.println("请输入修改动物的新名称:");
			String newName = sc.next();
			System.out.println("请输入动物腿的条数:");
			int legs = sc.nextInt();
			as.Change(oldName, newName, legs);
			System.out.println("是否要继续修改数据:0、修改 ,其他数字退出:");
			change = sc.nextInt();
		}
	}
}

你可能感兴趣的:(Java,Java动物乐园,面向对象程序设计)