资源描述
动物特性的面向对象描述,2007 iSoftStone Holdings Ltd. All Rights Reserved.,2,问题描述,动物特性描述 狗生活在陆地上(是一种陆生动物),既是哺乳类的也是肉食性的。狗通常的时候和人打招呼会通过“摇摇尾巴”,在被抚摸感到舒服的时候,会“旺旺叫”,而在受到惊吓情绪烦躁时,会发出“呜呜”声; 猫也生活在陆地上(是一种陆生动物),既是哺乳类的也是肉食性的。猫通常的时候和人打招呼会发出“喵”的声音,在被抚摸情绪很好时,会发出“咕噜咕噜”声,而在受到惊吓时,会发出“嘶嘶”声; 青蛙是一种两栖动物(既是水生动物也是陆生动物),既不是哺乳类的也不是肉食性的,属于卵生。当青蛙情绪好的时候,会在岸边“呱呱呱”的唱歌,而在受到惊吓时,会“扑通一声跳入水中”;,2007 iSoftStone Holdings Ltd. All Rights Reserved.,3,问题分析,首先需要抽取问题描述中对象 分析每个对象所具有的特征 分析每个对象所发出的动作 从这些对象的特征中,抽取类的属性和方法 分析类之间的关系,画出类结构图,2007 iSoftStone Holdings Ltd. All Rights Reserved.,4,难点分析-1,抽象类和对象的基本方法: 抽取对象的基本的方法:找出句子中所使用的名词 例如:在句子“小猫喵喵叫”中,我们能够确定一个对象:猫; 确定对象发出的行为动作的基本的方法:找出句子中的动词 例如:“旺旺叫”、“喵喵叫”都属于对象发出的动作; 确定对象的属性或者特征的基本的方法:找出句子中的形容词 例如:“哺乳性的”“肉食性的”“卵生的”等等; “是”的关系一般抽象为继承 例如:狗是一种动物,意味着:“狗”类 继承自“动物”类; “有”的关系一般抽象为类的属性 例如:动物都有情绪,意味着:“情绪”是“动物”类的一个属性;,2007 iSoftStone Holdings Ltd. All Rights Reserved.,5,难点分析-2,Dog: int numberOfLegs Dog( ) sayHello( ) sayHello(int newValue) getNumberOfLegs( ),Cat: int numberOfLegs Cat( ) sayHello( ) sayHello(int newValue) getNumberOfLegs( ),Frog: int numberOfLegs Frog( ) sayHello( ) sayHello(int newValue) getNumberOfLegs( ) hasGills( ) laysEggs( ),WaterAnimal: hasGills( ) laysEggs( ),LandAnimal: getNumberOfLegs( ),Animal: boolean mammal boolean carnivorous int mood isMammal( ) isCarnivorous( ) setMood(int newValue) getMood( ) sayHello( ) sayHello(int moodval),2007 iSoftStone Holdings Ltd. All Rights Reserved.,6,第一阶段,第一阶段:不考虑情绪影响动物打招呼的方式 编写Animal类,没有mood属性,只有一种SayHello方法; 编写Dog类、Cat类和Frog类,分别继承自Animal类,实现与Animal类不同的功能; 编写main方法,分别实例化以上三个类的三个对象,测试各个类的方法;,2007 iSoftStone Holdings Ltd. All Rights Reserved.,7,第二阶段,第二阶段:考虑情绪影响动物打招 呼的方式 扩充Animal类、Dog类、Cat类和Frog类,增加 Animal类的mood属性,并实现SayHello方法的多态性; 扩充main方法;,2007 iSoftStone Holdings Ltd. All Rights Reserved.,8,第三阶段,第三阶段:考虑陆生动物和水生动物 定义LandAnimal接口和WaterAnimal接口; 扩充Dog类、Cat类和Frog类,使其实现相应的接口; 扩充main方法;,2007 iSoftStone Holdings Ltd. All Rights Reserved.,9,总结,通过本次项目案例练习了面向对象的Java实现,基本囊括了面向对象的三大特征:封装、继承、多态 巩固的知识点 Java基本的程序结构; 类和对象; 类的封装,包括修饰符的使用(private/public/protected); 抽象类、抽象方法(abstract关键字); final关键字; 类的继承(extends关键字); 接口的定义和实现(interface/implements关键字); 多态;,
展开阅读全文