《动物特性的面向对象描述.ppt》由会员分享,可在线阅读,更多相关《动物特性的面向对象描述.ppt(16页珍藏版)》请在三一办公上搜索。
1、动物特性的面向对象描述,察具戎鳞乓惦菇姚火肃瞳镊脯评敛喀累拢谁京遵蔼樱叠莱衣雕基皇挛矮仿动物特性的面向对象描述动物特性的面向对象描述,2,问题描述,动物特性描述狗生活在陆地上(是一种陆生动物),既是哺乳类的也是肉食性的。狗通常的时候和人打招呼会通过“摇摇尾巴”,在被抚摸感到舒服的时候,会“旺旺叫”,而在受到惊吓情绪烦躁时,会发出“呜呜”声;猫也生活在陆地上(是一种陆生动物),既是哺乳类的也是肉食性的。猫通常的时候和人打招呼会发出“喵”的声音,在被抚摸情绪很好时,会发出“咕噜咕噜”声,而在受到惊吓时,会发出“嘶嘶”声;青蛙是一种两栖动物(既是水生动物也是陆生动物),既不是哺乳类的也不是肉食性的,
2、属于卵生。当青蛙情绪好的时候,会在岸边“呱呱呱”的唱歌,而在受到惊吓时,会“扑通一声跳入水中”;,胆口翌刊觅甜雌安滓斩饯杂窖头梭瞅剔组裳底锈矣端氧拦盟符癌娥焕串泌动物特性的面向对象描述动物特性的面向对象描述,3,问题分析,首先需要抽取问题描述中对象分析每个对象所具有的特征分析每个对象所发出的动作从这些对象的特征中,抽取类的属性和方法分析类之间的关系,画出类结构图,渔丽睛萍举堂球贩竹硷荡桨鲍幅气束问枕注燎衙凿今交纷氢虑锣糠痈亿蜕动物特性的面向对象描述动物特性的面向对象描述,4,难点分析-1,抽象类和对象的基本方法:抽取对象的基本的方法:找出句子中所使用的名词 例如:在句子“小猫喵喵叫”中,我们能
3、够确定一个对象:猫;确定对象发出的行为动作的基本的方法:找出句子中的动词 例如:“旺旺叫”、“喵喵叫”都属于对象发出的动作;确定对象的属性或者特征的基本的方法:找出句子中的形容词 例如:“哺乳性的”“肉食性的”“卵生的”等等;“是”的关系一般抽象为继承 例如:狗是一种动物,意味着:“狗”类 继承自“动物”类;“有”的关系一般抽象为类的属性 例如:动物都有情绪,意味着:“情绪”是“动物”类的一个属性;,斥男衔氰存佰踪髓文啼刁婿蝎阐那踪地婴府触硝茨坎戎锨妮我械迂肃儡衡动物特性的面向对象描述动物特性的面向对象描述,5,难点分析-2,Dog:int numberOfLegsDog()sayHello(
4、)sayHello(int newValue)getNumberOfLegs(),Cat:int numberOfLegsCat()sayHello()sayHello(int newValue)getNumberOfLegs(),Frog:int numberOfLegsFrog()sayHello()sayHello(int newValue)getNumberOfLegs()hasGills()laysEggs(),WaterAnimal:hasGills()laysEggs(),LandAnimal:getNumberOfLegs(),Animal:boolean mammalbool
5、ean carnivorousint moodisMammal()isCarnivorous()setMood(int newValue)getMood()sayHello()sayHello(int moodval),鹃殿液载劈叔琐占赃缴讨掘胯工卞秧校皋旁援恤硫绰角惑徒纺抨炕联彬旗动物特性的面向对象描述动物特性的面向对象描述,6,阶段划分,第一阶段(60分钟):不考虑情绪影响动物打招 呼的方式第二阶段(40分钟):考虑情绪影响动物打招呼 的方式第三阶段(60分钟):考虑陆生动物和水生动物,蛛钱耘胡刘祖慧驯硝吸菌侣趾犁当诺赏卧翰倦价赫泪捐楞曼谚场级遁盅懈动物特性的面向对象描述动物特性的面向对象
6、描述,7,第一阶段,第一阶段(60分钟):不考虑情绪影响动物打招呼的方式编写Animal类,没有mood属性,只有一种SayHello方法;编写Dog类、Cat类和Frog类,分别继承自Animal类,实现与Animal类不同的功能;编写main方法,分别实例化以上三个类的三个对象,测试类方法实现的正确性;要求学员自己动手编码,在编码的过程中解答学员提出的问题,蛙勾悟现快浅码无签了蔫孜骋般蔓蚤廉务刁零咸沤锑嘉餐读矛笼涉捶咬慈动物特性的面向对象描述动物特性的面向对象描述,8,阶段检查,针对第一阶段抽查学员的编码结果教员给出点评,眉宝窥诲诗当返龄为济覆宛灸辕龋逻重映阁街拴虱活课浙憾辞鸭瞥恕爆窜动物
7、特性的面向对象描述动物特性的面向对象描述,9,第一阶段标准代码演示,第一阶段编码的结果:,abstract class Animal protected boolean mammal=true;protected boolean carnivorous=true;public boolean isMammal()return(mammal);public boolean isCarnivorous()return(carnivorous);abstract public String sayHello();,abstract,abstract,protected,protected,class
8、 Dog extends Animal public String sayHello()return(摇摇尾巴);class Cat extends Animal public String sayHello()return(喵喵叫);class Frog extends Animal public Frog()mammal=false;carnivorous=false;public String sayHello()return(呱呱呱);,extends,extends,extends,public String sayHello()return(摇摇尾巴);,public String
9、 sayHello()return(喵喵叫);,public String sayHello()return(呱呱呱);,public Frog()mammal=false;carnivorous=false;,public class HelloWorld public static void main(String args)Dog animal1=new Dog();Cat animal2=new Cat();Frog animal3=new Frog();if(animal1.isMammal()System.out.println(狗是哺乳动物);else System.out.pr
10、intln(狗不是哺乳动物);if(animal1.isCarnivorous()System.out.println(狗是肉食动物);else System.out.println(狗不是肉食动物);System.out.println(狗通常的情况下,和人打招呼的方式为:+animal1.sayHello();,Dog animal1=new Dog();Cat animal2=new Cat();Frog animal3=new Frog();,animal1.isMammal(),animal1.isCarnivorous(),animal1.sayHello(),团闷娃跑亨愿问能梦藩
11、恿屹相盾律砂汕伞说熏音开日律播辐怜星捧颧明奉动物特性的面向对象描述动物特性的面向对象描述,10,第二阶段,第二阶段(40分钟):考虑情绪影响动物打招 呼的方式扩充Animal类、Dog类、Cat类和Frog类,增加 Animal类的mood属性,并实现SayHello方法的多态性;扩充main方法;要求学员自己动手编码,在编码的过程中解答 学员提出的问题,商纲椒敏午谁内朴浊滚畏旁拓桑房胖祝蔑乳滇该旅弯晰莎摆映仪脏溢翘耸动物特性的面向对象描述动物特性的面向对象描述,11,阶段检查,针对第二阶段抽查学员的编码结果教员给出点评,釜迪翠斩挥似媳肖锈浚槛穗定狰云崇盛钝苹痒戈铰耐慑翌挣尺到谅饯晓剪动物特性
12、的面向对象描述动物特性的面向对象描述,12,第二阶段标准代码演示,第二阶段的编码结果:,abstract class Animal public static final int SCARED=1;/情绪不好,烦躁 public static final int COMFORTED=2;/情绪好 protected boolean mammal=false;protected boolean carnivorous=false;protected int mood=COMFORTED;/情绪属性 public boolean isMammal()return(mammal);public bo
13、olean isCarnivorous()return(carnivorous);abstract public String sayHello();abstract public String sayHello(int moodval);public void setMood(int newValue)mood=newValue;public int getMood()return(mood);,public static final int SCARED=1;/情绪好public static final int COMFORTED=2;/情绪不好,烦躁,protected int moo
14、d=COMFORTED;/情绪属性,public void setMood(int newValue)mood=newValue;public int getMood()return(mood);,abstract public String sayHello();abstract public String sayHello(int moodval);,class Dog extends Animal public String sayHello()return(摇摇尾巴);public String sayHello(int moodval)this.setMood(moodval);sw
15、itch(mood)case SCARED:return(呜呜叫);case COMFORTED:return(旺旺旺叫);return(摇摇尾巴);class Cat extends Animal public String sayHello(int moodval)class Frog extends Animal public String sayHello(int moodval),public String sayHello(int moodval)this.setMood(moodval);switch(mood)case SCARED:return(呜呜叫);case COMFO
16、RTED:return(旺旺旺叫);return(摇摇尾巴);,public class HelloWorld public static void main(String args)Dog animal1=new Dog();Cat animal2=new Cat();Frog animal3=new Frog();System.out.println(狗通常的情况下,和人打招呼的方式为:+animal1.sayHello();System.out.println(狗被抚摸情绪好的时候,打招呼的方式是:+animal1.sayHello(Animal.COMFORTED);System.ou
17、t.println(狗烦躁的时候,会:+animal1.sayHello(Animal.SCARED);,System.out.println(狗通常的情况下,和人打招呼的方式为:+animal1.sayHello();System.out.println(狗被抚摸情绪好的时候,打招呼的方式是:+animal1.sayHello(Animal.COMFORTED);System.out.println(狗烦躁的时候,会:+animal1.sayHello(Animal.SCARED);,辫嚷醒展失埂骤椎稿破光滔嵌蚂辱声陶瘪知日带号造凌阅议娟锹鲍呜杯述动物特性的面向对象描述动物特性的面向对象描述
18、,13,第三阶段,第三阶段(60分钟):考虑陆生动物和水生动物定义LandAnimal接口和WaterAnimal接口;扩充Dog类、Cat类和Frog类,使其实现相应的接口;扩充main方法;要求学员自己动手编码,在编码的过程中解答学员提出的问题,六丸俺掠姨杏蔷会鲁畅鲁省玉反针刀率哉万踢酒壁邑太草秦缘粮轰野追迁动物特性的面向对象描述动物特性的面向对象描述,14,阶段检查,针对第二阶段抽查学员的编码结果 抽查学员编写的完整代码,要求学员上台讲解,并演示运行结果 教员给出点评,甲伯厘兆们挺鼎到胆导刚几斑唬坝湿喧换胖汤獭承妹炒钦宾唇议豁存流弃动物特性的面向对象描述动物特性的面向对象描述,15,第三
19、阶段标准代码演示,第三阶段的编码结果:,interface LandAnimal/陆生动物接口 public int getNumberOfLegs();/返回有多少只脚interface WaterAnimal/水生动物接口 public boolean getGillFlag();/返回是否有腮 public boolean getLaysEggs();/返回是否产卵,interface,interface,class Dog extends Animal implements LandAnimal private int numberOfLegs=4;public int getNumb
20、erOfLegs()return(numberOfLegs);/实现 LandAnimal接口class Frog extends Animal implements LandAnimal,WaterAnimal private boolean gillFlag=true;private boolean laysEggs=true;private int numberOfLegs=4;private boolean tailFlag=true;/实现 WaterAnimal接口 public boolean getGillFlag()return(gillFlag);public boolea
21、n getLaysEggs()return(laysEggs);/实现 LandAnimal接口 public int getNumberOfLegs()return(numberOfLegs);,implements LandAnimal,implements LandAnimal,WaterAnimal,private boolean gillFlag=true;private boolean laysEggs=true;private int numberOfLegs=4;private boolean tailFlag=true;,/实现 WaterAnimal接口public boo
22、lean getGillFlag()return(gillFlag);public boolean getLaysEggs()return(laysEggs);,/实现 LandAnimal接口 public int getNumberOfLegs()return(numberOfLegs);,public class HelloWorld public static void main(String args)Dog animal1=new Dog();Cat animal2=new Cat();Frog animal3=new Frog();System.out.println(狗有+an
23、imal1.getNumberOfLegs()+条腿);System.out.println(猫有+animal2.getNumberOfLegs()+条腿);if(animal3.getLaysEggs()System.out.println(青蛙产卵);else System.out.println(青蛙不产卵);if(animal3.getGillFlag()System.out.println(青蛙有鳃);System.out.println(青蛙有+animal3.getNumberOfLegs()+条腿);,animal1.getNumberOfLegs(),animal2.get
24、NumberOfLegs(),animal3.getNumberOfLegs(),animal3.getLaysEggs(),animal3.getGillFlag(),在环境中演示标准程序并展示输出结果,良黄汰滑逮痪览请毋佣则区邹叙饯凝幻折磨标村拭霉珍劈锌谷爸搪立忌惜动物特性的面向对象描述动物特性的面向对象描述,16,总结,通过本次项目案例练习了面向对象的Java实现,基本囊括了面向对象的三大特征:封装、继承、多态巩固的知识点Java基本的程序结构;类和对象;类的封装,包括修饰符的使用(private/public/protected);抽象类、抽象方法(abstract关键字);final关键字;类的继承(extends关键字);接口的定义和实现(interface/implements关键字);多态;,棚邓链仆缆儡赌眶孙腥扣绥婶申轨绵构翱寄麓挞鳖婆噪缕屎溅滚的杏崎官动物特性的面向对象描述动物特性的面向对象描述,