




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
动物特性的面向对象描述第一页,共十六页,2022年,8月28日问题描述动物特性描述狗生活在陆地上(是一种陆生动物),既是哺乳类的也是肉食性的。狗通常的时候和人打招呼会通过“摇摇尾巴”,在被抚摸感到舒服的时候,会“旺旺叫”,而在受到惊吓情绪烦躁时,会发出“呜呜”声;猫也生活在陆地上(是一种陆生动物),既是哺乳类的也是肉食性的。猫通常的时候和人打招呼会发出“喵~”的声音,在被抚摸情绪很好时,会发出“咕噜咕噜”声,而在受到惊吓时,会发出“嘶嘶”声;青蛙是一种两栖动物(既是水生动物也是陆生动物),既不是哺乳类的也不是肉食性的,属于卵生。当青蛙情绪好的时候,会在岸边“呱呱呱”的唱歌,而在受到惊吓时,会“扑通一声跳入水中”;2第二页,共十六页,2022年,8月28日问题分析首先需要抽取问题描述中对象分析每个对象所具有的特征分析每个对象所发出的动作从这些对象的特征中,抽取类的属性和方法分析类之间的关系,画出类结构图3第三页,共十六页,2022年,8月28日难点分析-1抽象类和对象的基本方法:抽取对象的基本的方法:找出句子中所使用的名词
例如:在句子“小猫喵喵叫”中,我们能够确定一个对象:猫;确定对象发出的行为动作的基本的方法:找出句子中的动词
例如:“旺旺叫”、“喵喵叫”都属于对象发出的动作;确定对象的属性或者特征的基本的方法:找出句子中的形容词
例如:“哺乳性的”“肉食性的”“卵生的”等等;“是”的关系一般抽象为继承
例如:狗是一种动物,意味着:“狗”类继承自“动物”类;“有”的关系一般抽象为类的属性
例如:动物都有情绪,意味着:“情绪”是“动物”类的一个属性;4第四页,共十六页,2022年,8月28日难点分析-2Dog:intnumberOfLegsDog()sayHello()sayHello(intnewValue)getNumberOfLegs()Cat:intnumberOfLegsCat()sayHello()sayHello(intnewValue)getNumberOfLegs()Frog:intnumberOfLegsFrog()sayHello()sayHello(intnewValue)getNumberOfLegs()hasGills()laysEggs()WaterAnimal:hasGills()laysEggs()LandAnimal:getNumberOfLegs()Animal:booleanmammalbooleancarnivorousintmoodisMammal()isCarnivorous()setMood(intnewValue)getMood()sayHello()sayHello(intmoodval)5第五页,共十六页,2022年,8月28日阶段划分第一阶段(60分钟):不考虑情绪影响动物打招呼的方式第二阶段(40分钟):考虑情绪影响动物打招呼的方式第三阶段(60分钟):考虑陆生动物和水生动物6第六页,共十六页,2022年,8月28日第一阶段第一阶段(60分钟):不考虑情绪影响动物打招呼的方式编写Animal类,没有mood属性,只有一种SayHello方法;编写Dog类、Cat类和Frog类,分别继承自Animal类,实现与Animal类不同的功能;编写main方法,分别实例化以上三个类的三个对象,测试类方法实现的正确性;要求学员自己动手编码,在编码的过程中解答学员提出的问题7第七页,共十六页,2022年,8月28日阶段检查针对第一阶段抽查学员的编码结果教员给出点评8第八页,共十六页,2022年,8月28日 第一阶段标准代码演示第一阶段编码的结果:abstractclassAnimal{protectedbooleanmammal=true;protectedbooleancarnivorous=true;
publicbooleanisMammal(){return(mammal);}publicbooleanisCarnivorous(){return(carnivorous);}abstractpublicStringsayHello();}abstractabstractprotectedprotectedclassDogextendsAnimal{publicStringsayHello(){return("摇摇尾巴");}}classCatextendsAnimal{publicStringsayHello(){return("喵喵叫");}}classFrogextendsAnimal{
publicFrog(){mammal=false;carnivorous=false;}publicStringsayHello(){return("呱呱呱");}}extendsextendsextendspublicStringsayHello(){return("摇摇尾巴");}publicStringsayHello(){return("喵喵叫");}publicStringsayHello(){return("呱呱呱");}publicFrog(){mammal=false;carnivorous=false;}publicclassHelloWorld{publicstaticvoidmain(String[]args){Doganimal1=newDog();Catanimal2=newCat();Froganimal3=newFrog();if(animal1.isMammal())System.out.println("狗是哺乳动物");elseSystem.out.println("狗不是哺乳动物");if(animal1.isCarnivorous())System.out.println("狗是肉食动物");elseSystem.out.println("狗不是肉食动物");System.out.println("狗通常的情况下,和人打招呼的方式为:"+animal1.sayHello());……}}Doganimal1=newDog();Catanimal2=newCat();Froganimal3=newFrog();animal1.isMammal()animal1.isCarnivorous()animal1.sayHello()9第九页,共十六页,2022年,8月28日第二阶段第二阶段(40分钟):考虑情绪影响动物打招呼的方式扩充Animal类、Dog类、Cat类和Frog类,增加Animal类的mood属性,并实现SayHello方法的多态性;扩充main方法;要求学员自己动手编码,在编码的过程中解答学员提出的问题10第十页,共十六页,2022年,8月28日阶段检查针对第二阶段抽查学员的编码结果教员给出点评11第十一页,共十六页,2022年,8月28日第二阶段标准代码演示第二阶段的编码结果:abstractclassAnimal{publicstaticfinalintSCARED=1;//情绪不好,烦躁
publicstaticfinalintCOMFORTED=2;//情绪好
protectedbooleanmammal=false;protectedbooleancarnivorous=false;protectedintmood=COMFORTED;//情绪属性
publicbooleanisMammal(){return(mammal);}publicbooleanisCarnivorous(){return(carnivorous);}
abstractpublicStringsayHello();abstractpublicStringsayHello(intmoodval);publicvoidsetMood(intnewValue){mood=newValue;}publicintgetMood(){return(mood);}}publicstaticfinalintSCARED=1;//情绪好publicstaticfinalintCOMFORTED=2;//情绪不好,烦躁protectedintmood=COMFORTED;//情绪属性publicvoidsetMood(intnewValue){mood=newValue;}publicintgetMood(){return(mood);}abstractpublicStringsayHello();abstractpublicStringsayHello(intmoodval);classDogextendsAnimal{publicStringsayHello(){return("摇摇尾巴");}publicStringsayHello(intmoodval){this.setMood(moodval);switch(mood){caseSCARED:return("呜呜叫");caseCOMFORTED:return("旺旺旺叫");}return("摇摇尾巴");}}classCatextendsAnimal{…publicStringsayHello(intmoodval){}…}classFrogextendsAnimal{…publicStringsayHello(intmoodval){}…}publicStringsayHello(intmoodval){this.setMood(moodval);switch(mood){caseSCARED:return("呜呜叫");caseCOMFORTED:return("旺旺旺叫");}return("摇摇尾巴");}}publicclassHelloWorld{publicstaticvoidmain(String[]args){Doganimal1=newDog();Catanimal2=newCat();Froganimal3=newFrog();……System.out.println("狗通常的情况下,和人打招呼的方式为:"+animal1.sayHello());System.out.println("狗被抚摸情绪好的时候,打招呼的方式是:"+animal1.sayHello(Animal.COMFORTED));System.out.println("狗烦躁的时候,会:"+animal1.sayHello(Animal.SCARED));……}}System.out.println("狗通常的情况下,和人打招呼的方式为:"+animal1.sayHello());System.out.println("狗被抚摸情绪好的时候,打招呼的方式是:"+animal1.sayHello(Animal.COMFORTED));System.out.println("狗烦躁的时候,会:"+animal1.sayHello(Animal.SCARED));12第十二页,共十六页,2022年,8月28日第三阶段第三阶段(60分钟):考虑陆生动物和水生动物定义LandAnimal接口和WaterAnimal接口;扩充Dog类、Cat类和Frog类,使其实现相应的接口;扩充main方法;要求学员自己动手编码,在编码的过程中解答学员提出的问题13第十三页,共十六页,2022年,8月28日阶段检查针对第二阶段抽查学员的编码结果抽查学员编写的完整代码,要求学员上台讲解,并演示运行结果教员给出点评14第十四页,共十六页,2022年,8月28日第三阶段标准代码演示第三阶段的编码结果:interfaceLandAnimal//陆生动物接口{publicintgetNumberOfLegs();//返回有多少只脚}interfaceWaterAnimal//水生动物接口{publicbooleangetGillFlag();//返回是否有腮
publicbooleangetLaysEggs();//返回是否产卵}interfaceinterfaceclassDogextendsAnimalimplementsLandAnimal{privateintnumberOfLegs=4;……publicintgetNumberOfLegs(){return(numberOfLegs);}//实现LandAnimal接口}classFrogextendsAnimalimplementsLandAnimal,WaterAnimal{privatebooleangillFlag=true;privatebooleanlaysEggs=true;privateintnumberOfLegs=4;privatebooleantailFlag=true;
……//实现WaterAnimal接口
publicbooleangetGillFlag(){return(gillFlag);}publicbooleangetLaysEggs(){return(laysEggs);}//实现LandAnimal接口
publicintgetNumberOfLegs(){return(numberOfLegs);}}implementsLandAnimalimplementsLandAnimal,WaterAnimalprivatebooleangillFlag=true;privatebooleanlaysEggs=true;privateintnumberOfLegs=4;privatebooleantailFlag=true;//实现WaterAnimal接口publicbooleangetGillFlag(){return(gillFlag);}publicbooleangetLaysEggs(){return(laysEggs);}
//实现LandAnimal接口
publicintgetNumberOfLegs(){return(numberOfLegs);}publicclassHelloWorld{publicstaticvoidmain(String[]args){Doganimal1=newDog();Catanimal2=newCat();Froganimal3=newFrog();
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 推动人工智能赋能消费升级方案
- 交通物流降本增效方案推动高质量发展
- 劳动法服务合同范例
- 代理委托租车合同范例
- 产品供销合作合同范例
- 新能源汽车行业的风险管理技术及其应用研究试题及答案
- 我国数字人产业研究报告
- 产品质押合同样本
- 单位聘请美术老师合同标准文本
- 临时简易入股合同范例
- 2025年昆明市高三语文三诊一模考试卷附答案解析
- 诊疗规范考核试题及答案
- 临沂市罗庄区兴罗资本投资有限公司招聘笔试题库2025
- 船舶动力系统可靠性提升-全面剖析
- 彩超试题及答案三基
- 期中试题2024-2025学年人教PEP版英语六年级下册(含答案)
- 静脉用药混合调配操作
- 人工智能设计伦理知到智慧树章节测试课后答案2024年秋浙江大学
- 《陆上风电场工程概算定额》NBT 31010-2019
- 新中考考试平台-考生端V2.0使用手册
- 王泽鉴教授:请求权基础、法学方法与民法发展(修改版20141028)
评论
0/150
提交评论