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条腿
OOP编程特性综合项目的更多相关文章
- Delphi研究,对全局变量函数与OOP编程关系的一点体会 good
		
感叹:设计VCL的人真是神人啊,感觉比Pascal编译器的设计人还要牛很多,把整个Windows架构理了一遍,封装的如此之好,复用的如此之好(以至于Delphi的控件满天飞,使用还特别容易),简直惊为 ...
 - 【PHP面向对象(OOP)编程入门教程】1.什么是面向对象?
		
面向对象编程(Object Oriented Programming, OOP, 面向对象程序设计)是一种计算机编程架构,OOP的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成 ...
 - JavaSE综合项目演练
		
光阴似箭日月如梭,大家学习已经有了一段时间了,转眼间,从刚开始如何配置JDK已经到了现在快学完网络编程了.学了这么多,眼看就要进入下一个阶段了,数据库编程了,那么在进入下个阶段前,我们来完成一个综合性 ...
 - PHP面向对象(OOP)编程入门教程
		
面向对象编程(OOP)是我们编程的一项基本技能,PHP5对OOP提供了良好的支持.如何使用OOP的思想来进行PHP的高级编程,对于提高 PHP编程能力和规划好Web开发构架都是非常有意义的.下面我们就 ...
 - LUA OOP编程实现方法
		
lua原生不支持OOP特性 确实如此, 同时可以采用其它lua代码的方式实现OOP的特性. OOP四大特性 抽象 封装 继承 多态 http://www.cnblogs.com/xiaosongluf ...
 - php面向对象(OOP)编程完全教程
		
摘自:http://www.php-note.com/article/detail/41 面向对象编程(OOP)是我们编程的一项基本技能,PHP5对OOP提供了良好的支持.如何使用OOP的思想来进行P ...
 - JavaScript的OOP编程1
		
首先要说的是,javascript其实是可以进行OOP编程的,其次javascript的OOP编程实现方式有多种,我写的这一种只是我测试过,可行的一种 version1 // 父类 function ...
 - js原生设计模式——4安全的工厂方法模式之oop编程增强版
		
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8&qu ...
 - java设计模式综合项目实战视频教程
		
java设计模式综合项目实战视频教程 视频课程目录如下: 第01节课:本课程整体内容介绍:X-gen系统概况,包括:引入.X-gen项目背景.X-gen的HelloWorld第02节课:X-gen整体 ...
 
随机推荐
- jquery_mobile事件
			
1 <!doctype html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 < ...
 - Django models数据库配置以及多数据库联用设置
			
今天来说说web框架Django怎么配置使用数据库,也就是传说中MVC(Model View Controller)中的M,Model(模型). 简单介绍一下Django中的MVC: 模型(model ...
 - poj 2455 二分+最大流
			
这个因为点少用邻接矩阵做的. 题意:求由1到n的t条不重复路径中最大边权值的最小值. 思路:先对边权进行排序,然后二分边权值,建图求从1到n的最大流,当最大流为t时便求出答案. 代码: #includ ...
 - 【集美大学1411_助教博客】团队作业5——测试与发布(Alpha版本)
			
同学们好像都进入了状态,任务都完成的不错,测试与发布是一个软件的非常重要的环节,每年双11前夕是阿里巴巴加班最严重的时期,这是因为他们在不断的测试,因为他们不想在双11到来之时有任何差池.所以无论你的 ...
 - SNS团队第二次站立会议(2017.04.23)
			
一.当天站立式会议照片 本次会议主要内容:汇报工作进度,根据完成情况调整进度 二.每个人的工作 成员 今天已完成的工作 明天计划完成的工作 罗于婕 梳理清楚数据的每个类型和数据项 具体落实把相关数据 ...
 - Swing-布局管理器之FlowLayout(流式布局)-入门
			
FlowLayout应该是Swing布局管理器学习中最简单.最基础的一个.所谓流式,就是内部控件像水流一样,从前到后按顺序水平排列,直到达到容器的宽度时跳转到第二行.既然是水平排列,那么就存在三种基本 ...
 - LaTeX排版指南
			
V0.0.1 工具链 CTeX:http://www.ctex.org/HomePage ,CTeX是一个中文套装,但也同时发布一个独立的ctex宏包 TeXLive:https://tug.org/ ...
 - 201521123029《Java程序设计》第八周学习总结
			
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 1.2 选做:收集你认为有用的代码片段 答: 2. 书面作业 本次作业题集集合 1.List中指定元素的删除( ...
 - 201521123106《java程序设计》第四周学习总结
			
1. 本周学习总结 2. 书面作业 1.注释的应用使用类的注释与方法的注释为前面编写的类与方法进行注释,并在Eclipse中查看.(截图) 面向对象设计(大作业1-非常重要)2.1 讲故事:将在网上商 ...
 - 201521123005 《Java程序设计》 第十二周学习总结
			
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 书面作业 将Student对象(属性:int id, String name,int age,doubl ...