OOP编程特性综合项目

时间:2023-03-09 16:38:12
OOP编程特性综合项目

package SourceFile;

//创建动物类(父类).

public abstract class CAnimal

{

 public boolean
mammal;   //是不是哺乳动物

public boolean
carnivorous; //是不是食肉动物

 public int
mood;    //动物当前的心情(0表示心情正常,1表示心情高兴,2表示心情烦躁)

//返回boolean值表示是不是哺乳动物

 public boolean isMammal(boolean flag)

 {

  if(flag == true)

  {

   System.out.println("是哺乳动物");

}else if(flag == false)

  {

   System.out.println("不是哺乳动物");

}

  return flag;

 }

 

 //返回boolean值表示是不是食肉动物

 public boolean isCarnivorous(boolean flag)

 {

  if(flag == true)

  {

   System.out.println("是食肉动物");

}else if(flag == false)

  {

   System.out.println("不是食肉动物");

}

  return flag;

 }

 

 //改变动物当前心情的方法

 public void setMood(int newValue)

 {

  mood = newValue;

 }

 

 //返回int表示动物当前的心情

 public int getMood() 

 {

  return mood;

 }

 

 //动物打招呼的方法,会根据心情做不同的实现

 public abstract void sayHello();

 

 //根据传入表示心情的参数作对应输出

 public abstract void sayHello(int mood);

}

package SourceFile;

//创建猫类(动物类的子类属于陆行动物)

public class CCat extends CAnimal

{

 public int
numberOfLegs; //表示拥有腿的数量

 

 //两种构造方法

 public CCat()

 {

  super();

 }

 

 public CCat(int numberOfLegs)

 {

  this.numberOfLegs =
numberOfLegs;

 }

 

 //重写父类的方法,会根据动物当前的心情作对应的输出

 public void sayHello() 

 {

  if(mood == 0)

  {

   System.out.println("猫通常情况下,和人打招呼的方式为:竖竖耳朵");

}else if(mood == 1)

  {

   System.out.println("猫心情好的情况下,和人打招呼的方式为:喵喵叫");

}else if(mood == 2)

  {

   System.out.println("猫心情烦躁的时候,会哇哇叫");

}

 }

 

 //方法重载,根据传入表示心情的参数作对应输出

 public void sayHello(int
newMood) 

 {

  if(newMood == 0)

  {

   System.out.println("猫通常情况下,和人打招呼的方式为:竖竖耳朵");

}else if(newMood == 1)

  {

   System.out.println("猫心情好的情况下,和人打招呼的方式为:喵喵叫");

}else if(newMood == 2)

  {

   System.out.println("猫心情烦躁的时候,会哇哇叫");

}

 }

 

 //返回int表示动物拥有腿的数量

 public int
getNumberOfLegs() 

 {

  return numberOfLegs;

 }

}

package SourceFile;

//创建狗类(动物类的子类属于陆行动物)

public class CDog extends CAnimal

{

 public int
numberOfLegs; //表示拥有腿的数量

 

 //两种构造方法

 public CDog()

 {

  super();

 }

 

 public CDog(int numberOfLegs)

 {

  this.numberOfLegs =
numberOfLegs;

 }

 

 //重写父类的方法,会根据动物当前的心情做对应的输出

 public void sayHello()

 {

  if(mood == 0)

  {

   System.out.println("狗通常情况下,和人打招呼的方式为:摇摇尾巴");

}else if(mood == 1)

  {

   System.out.println("狗心情好的情况下,和人打招呼的方式为:旺旺叫");

}else if(mood == 2)

  {

   System.out.println("狗心情烦躁的时候,会呜呜叫");

}

 }

 

 //方法重载,根据传入表示心情的参数作对应输出

 public void sayHello(int newMood)

 {

  if(newMood == 0)

  {

   System.out.println("狗通常情况下,和人打招呼的方式为:摇摇尾巴");

}else if(newMood == 1)

  {

   System.out.println("狗心情好的情况下,和人打招呼的方式为:旺旺叫");

}else if(newMood == 2)

  {

   System.out.println("狗心情烦躁的时候,会呜呜叫");

}

 }

 

 //返回int表示动物拥有腿的数量

 public int getNumberOfLegs()

 {

  return numberOfLegs;

 }

}

package SourceFile;

//创建蛙类(动物类的子类属于陆行动物和水生动物)

public class CFrog extends CAnimal

{

 public int
numberOfLegs;  //表示拥有腿的数量

 public boolean
hasGills;  //表示有没有腮

//两种构造方法

 public CFrog()

 {

  super();

 }

 

 public CFrog(int numberOfLegs,boolean
hasGills)

 {

  this.numberOfLegs =
numberOfLegs;

  this.hasGills = hasGills;

 }

 

 //重写父类的方法,会根据动物当前的心情作对应的输出

 public void
sayHello()  

 {

  if(mood == 0)

  {

   System.out.println("青蛙通常情况下,和人打招呼的方式为:眨眼睛");

}else if(mood == 1)

  {

   System.out.println("青蛙心情好的情况下,和人打招呼的方式为:呱呱叫");

}else if(mood == 2)

  {

   System.out.println("青蛙心情烦躁的时候,跳入水中");

}

 }

 

 //方法重载,根据传入表示心情的参数作对应输出

 public void sayHello(int
newMood) 

 {

  if(newMood == 0)

  {

   System.out.println("青蛙通常情况下,和人打招呼的方式为:眨眼睛");

}else if(newMood == 1)

  {

   System.out.println("青蛙心情好的情况下,和人打招呼的方式为:呱呱叫");

}else if(newMood == 2)

  {

   System.out.println("青蛙心情烦躁的时候,跳入水中");

}

 }

 

 //返回int表示动物拥有腿的数量

 public int
getNumberOfLegs() 

 {

  return numberOfLegs;

 }

 

 //表示水生动物的产卵方法

 public void laysEggs() 

 {

  System.out.println("产卵");

 }

 

 //返回boolean表示是不是有腮

 public boolean isHasGills(boolean hasGills)

 {

  if(hasGills == true)

  {

   System.out.println("有腮");

}else if(hasGills ==
false)

  {

   System.out.println("没有腮");

}

  return hasGills;

 }

}

package SourceFile;

//创建陆行动物接口

public interface ILandAnimal

{

 //返回int表示陆行动物腿的数量

 int getNumberOfLegs(); 

}

package SourceFile;

//创建水生动物接口

public interface IWaterAnimal

{

 //方法:表示能够产卵

 public void laysEggs();

}

package SourceFile;

import java.util.Scanner;

public class Main

{

 public static void main(String args[])

 {

  Scanner s = new
Scanner(System.in);

  boolean flag = true;

  int choice = 0;

  while(flag != false)

  {

   System.out.println("请输入要查找的动物名称编号(1狗,2猫,3青蛙,4退出):");

choice =
s.nextInt();

   if(choice ==
1)

   {

    //创建一个狗类的实例对象

CDog
d = new CDog(4);

    System.out.print("狗");

d.isMammal(true);

System.out.print("狗");

d.isCarnivorous(true);

d.sayHello();

d.sayHello(1);

d.sayHello(2);

System.out.println("狗有"
+ d.getNumberOfLegs() + "条腿" + "\n");

   }else
if(choice == 2)

   {

    //创建一个猫类的实例对象

CCat
c = new CCat(4);

    System.out.print("猫");

c.isMammal(true);

System.out.print("猫");

c.isCarnivorous(true);

c.sayHello();

c.sayHello(1);

c.sayHello(2);

System.out.println("猫有"
+ c.getNumberOfLegs() + "条腿" + "\n");

   }else
if(choice == 3)

   {

    //创建一个蛙类的实例对象

CFrog
f = new CFrog(4,true);

    System.out.print("青蛙");

f.isMammal(false);

System.out.print("青蛙");

f.isCarnivorous(false);

f.sayHello();

f.sayHello(1);

f.sayHello(2);

System.out.print("青蛙");

f.laysEggs();

System.out.print("青蛙");

f.isHasGills(true);

System.out.println("青蛙有"
+ f.getNumberOfLegs() + "条腿" + "\n");

   }else
if(choice == 4)

   {

    System.exit(0);

flag
= false;

   }else{System.out.println("请输入1-4之间的操作编号!");}

}

 }

}

项目要求:

类表述如下:

动物类: Animal

属性:

mammal     
表示是不是哺乳动物boolean类型

carnivorous 表示是不是食肉动物boolean类型

mood       
表示动物当前的心情int类型,0表示心情正常,1表示心情高兴,2表示心情烦躁

方法:

public boolean isMammal()      
   
返回boolean值表示是不是哺乳动物

public boolean isCarnivorous()     
返回boolean值表示是不是食肉动物

public void setMood(int newValue)  
改变动物当前心情的方法

public int getMood()               
返回int表示动物当前的心情

abstract public void sayHello()    
动物打招呼的方法,会根据心情做不同的实现

abstract public void sayHello(int mood) 根据传入表示心情的参数作对应输出

陆行动物接口:LandAnimal

方法:  int
getNumberOfLegs()  
返回int表示陆行动物腿的数量

水生动物接口:WaterAnimal

方法:  void
laysEggs()    
表示能够产卵

狗类:Dog  
是动物类的子类并属于陆行动物

属性:

int numberOfLegs   
表示拥有腿的数量

方法:

Dog()                  
构造方法,可以自行重载

void sayHello()        
重写父类的方法,会根据动物当前的心情做对应的输出

void sayHello(int newMood)  方法重载,根据传入表示心情的参数作对应输出

int getNumberOfLegs()      
返回int表示动物拥有腿的数量

猫类:Cat  
是动物类的子类并属于陆行动物

属性:

int numberOfLegs   
表示拥有腿的数量

方法:

Cat()                  
构造方法,可以自行重载

void sayHello()        
重写父类的方法,会根据动物当前的心情作对应的输出

void sayHello(int newMood)  方法重载,根据传入表示心情的参数作对应输出

int getNumberOfLegs()      
返回int表示动物拥有腿的数量

蛙类:Frog 
是动物类的子类,属于陆行动物同时也属于水生动物

属性:

int numberOfLegs           
表示拥有腿的数量

boolean hasGills           
表示有没有腮

方法:

Frog ()                
构造方法,可以自行重载

void sayHello()        
重写父类的方法,会根据动物当前的心情作对应的输出

void sayHello(int newMood)  方法重载,根据传入表示心情的参数作对应输出

int getNumberOfLegs()      
返回int表示动物拥有腿的数量

void laysEggs()        
表示水生动物的产卵方法

boolean isHasGills()           
返回boolean表示是不是有腮

类图表述如下:

问题描述:

1.  实现各个类,及他们之间的关系

2.  创建各个类(猫,狗,青蛙)输出他们的状态及不同心情下打招呼的行为

3.  创建程序使用编写的各个类,将结果输出。效果如下:

狗是哺乳动物

狗是食肉动物

狗通常情况下,和人打招呼的方式为:摇摇尾巴

狗心情好的情况下,和人打招呼的方式为:旺旺叫

狗心情烦躁的时候,会呜呜叫

狗有4条退

如果是蛙类则输出:

青蛙不是哺乳动物

青蛙不是食肉动物

青蛙通常情况下,和人打招呼的方式为:眨眼睛

青蛙心情好的情况下,和人打招呼的方式为:呱呱叫

青蛙心情烦躁的时候,跳入水中

青蛙产卵

青蛙有腮

青蛙有4条腿