《13-接口2电子课件 Java应用程序设计——从模型到代码.ppt》由会员分享,可在线阅读,更多相关《13-接口2电子课件 Java应用程序设计——从模型到代码.ppt(38页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、java面向对象程序设计第13次课-面向对象的Java实现-接口上机相关回顾在Java中定义接口使用什么关键字,接口中的方法有什么特点?一个类是否可以实现多个接口?在Java中定义一个常量使用哪些关键字?上机目标使用Eclipse编写接口和实现类,要求如下:定义数据访问接口用户数据访问接口:UserDao版块数据访问接口:BoardDao主题数据访问接口:TopicDao回复数据访问接口:ReplyDao编写UserDao接口的实现类:UserDaoImpl使用多态的方式调用UserDao接口的方法教员讲解上机目标教员讲解上机目标训练技能点会编写接口会实现接口会使用接口训练要点:训练要点:定义
2、接口定义接口需求说明:需求说明:定义接口:用户定义接口:用户Dao接口、主题接口、主题Dao接口接口阶段阶段1接口接口UserDaoTopicDao方法方法查找用户查找用户增加用户增加用户修改用户修改用户查找主题查找主题增加主题增加主题修改主题修改主题删除主题删除主题实现思路及关键代码:实现思路及关键代码:1、定义接口:、定义接口:UserDao2、声明、声明UserDao接口的方法接口的方法查找用户:查找用户:public User findUser(String uName);增加用户:增加用户:public int addUser(User user);修改用户:修改用户:public
3、int updateUser(User user);阶段阶段1代码示例代码示例实现思路及关键代码:实现思路及关键代码:1、定义接口:、定义接口:TopicDao2、声明、声明UserDao接口的方法接口的方法查找主题:查找主题:public Topic findTopic(int topicId);增加主题:增加主题:public int addTopic(Topic topic);删除主题:删除主题:public int deleteTopic(int topicId);修改主题:修改主题:public int updateTopic(Topic topic);阶段阶段1代码示例代码示例讲解
4、实现思路和关键代码讲解实现思路和关键代码完成时间:完成时间:15分钟分钟需求说明:需求说明:定义接口:版块定义接口:版块Dao接口、回复接口、回复Dao接口接口阶段阶段2接口接口BoardDaoReplyDao方法方法增加论坛版块增加论坛版块增加回复信息增加回复信息删除回复信息删除回复信息修改回复信息修改回复信息代码示例代码示例代码示例代码示例完成时间:完成时间:15分钟分钟阶段阶段2n常见调试问题及解决办法常见调试问题及解决办法n代码规范问题代码规范问题共性问题集中讲解共性问题集中讲解训练要点:训练要点:实现接口,使用多态实现接口,使用多态需求说明:需求说明:实现实现UserDao接口,使用
5、接口和实现类实现多态接口,使用接口和实现类实现多态阶段阶段3实现思路及关键代码:实现思路及关键代码:1、定义、定义UserDao接口的实现类:接口的实现类:UserDaoImpl2、实现、实现UserDao接口所有的方法接口所有的方法3、在测试类中使用、在测试类中使用UserDao接口和其实现类实现多态接口和其实现类实现多态阶段阶段3测试类代码示例测试类代码示例实现类代码示例实现类代码示例讲解实现思路和关键代码讲解实现思路和关键代码完成时间:完成时间:25分钟分钟需求说明:需求说明:1、为为User类类添添加加表表示示性性别别的的属属性性:int gender,及及对对应应的的setter/g
6、etter方方法法,修修改改getUserInfo()方方法法,增增加加性性别别的的输出输出2、在、在UserDao接口中添加性别常量接口中添加性别常量3、在测试类中使用该常量、在测试类中使用该常量阶段阶段4User类代码示例类代码示例UserDao代码示例代码示例测试类代码示例测试类代码示例完成时间:完成时间:15分钟分钟阶段阶段4n常见调试问题及解决办法常见调试问题及解决办法n代码规范问题代码规范问题共性问题集中讲解共性问题集中讲解总结总结总结并布置作业总结并布置作业阶段一阶段二阶段三阶段四学做项目动物特性的面向对象描述 问题描述动物特性描述狗生活在陆地上(是一种陆生动物),既是哺乳类的也
7、是肉食性的。狗通常的时候和人打招呼会通过“摇摇尾巴”,在被抚摸感到舒服的时候,会“旺旺叫”,而在受到惊吓情绪烦躁时,会发出“呜呜”声;猫也生活在陆地上(是一种陆生动物),既是哺乳类的也是肉食性的。猫通常的时候和人打招呼会发出“喵”的声音,在被抚摸情绪很好时,会发出“咕噜咕噜”声,而在受到惊吓时,会发出“嘶嘶”声;青蛙是一种两栖动物(既是水生动物也是陆生动物),既不是哺乳类的也不是肉食性的,属于卵生。当青蛙情绪好的时候,会在岸边“呱呱呱”的唱歌,而在受到惊吓时,会“扑通一声跳入水中”;问题分析首先需要抽取问题描述中对象分析每个对象所具有的特征分析每个对象所发出的动作从这些对象的特征中,抽取类的属
8、性和方法分析类之间的关系,画出类结构图难点分析-1抽象类和对象的基本方法:抽取对象的基本的方法:找出句子中所使用的名词 例如:在句子“小猫喵喵叫”中,我们能够确定一个对象:猫;确定对象发出的行为动作的基本的方法:找出句子中的动词 例如:“旺旺叫”、“喵喵叫”都属于对象发出的动作;确定对象的属性或者特征的基本的方法:找出句子中的形容词 例如:“哺乳性的”“肉食性的”“卵生的”等等;“是”的关系一般抽象为继承 例如:狗是一种动物,意味着:“狗”类 继承自“动物”类;“有”的关系一般抽象为类的属性 例如:动物都有情绪,意味着:“情绪”是“动物”类的一个属性;难点分析-2 Dog:int number
9、OfLegsDog()sayHello()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:boo
10、lean mammalboolean carnivorousint moodisMammal()isCarnivorous()setMood(int newValue)getMood()sayHello()sayHello(int moodval)阶段划分第一阶段(60分钟):不考虑情绪影响动物打招呼的方式第二阶段(40分钟):考虑情绪影响动物打招呼的方式第三阶段(60分钟):考虑陆生动物和水生动物第一阶段第一阶段(60分钟):不考虑情绪影响动物打招呼的方式编写Animal类,没有mood属性,只有一种SayHello方法;编写Dog类、Cat类和Frog类,分别继承自Animal类,实现与A
11、nimal类不同的功能;编写main方法,分别实例化以上三个类的三个对象,测试类方法实现的正确性;要求学员自己动手编码,在编码的过程中解答学员提出的问题阶段检查针对第一阶段抽查学员的编码结果教员给出点评第一阶段标准代码演示第一阶段编码的结果:abstract class Animal protected boolean mammal=true;protected boolean carnivorous=true;public boolean isMammal()return(mammal);public boolean isCarnivorous()return(carnivorous);ab
12、stract public String sayHello();abstractabstractprotectedprotectedclass 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(呱呱呱
13、呱呱呱);extendsextendsextendspublic String sayHello()return(摇摇尾巴);public String 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
14、Frog();if(animal1.isMammal()System.out.println(狗是哺乳动物狗是哺乳动物);else System.out.println(狗不是哺乳动物狗不是哺乳动物);if(animal1.isCarnivorous()System.out.println(狗是肉食动物狗是肉食动物);else System.out.println(狗不是肉食动物狗不是肉食动物);System.out.println(狗通常的情况下,和人打招呼的方式为:狗通常的情况下,和人打招呼的方式为:+animal1.sayHello();Dog animal1=new Dog();Cat
15、 animal2=new Cat();Frog animal3=new Frog();animal1.isMammal()animal1.isCarnivorous()animal1.sayHello()第二阶段 第二阶段(40分钟):考虑情绪影响动物打招 呼的方式扩充Animal类、Dog类、Cat类和Frog类,增加 Animal类的mood属性,并实现SayHello方法的多态性;扩充main方法;要求学员自己动手编码,在编码的过程中解答 学员提出的问题阶段检查针对第二阶段抽查学员的编码结果教员给出点评第二阶段的编码结果:abstract class Animal public stat
16、ic 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 boolean isCarnivorous()return(carnivorous);abstract public String sayHello();ab
17、stract 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 mood=COMFORTED;/情绪属性public void setMood(int newValue)mood=newValue;public int getM
18、ood()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);switch(mood)case SCARED:return(呜呜叫);case COMFORTED:return(旺旺旺叫);return(摇摇尾巴);class C
19、at 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 COMFORTED:return(旺旺旺叫);return(摇摇尾巴);public class HelloWorld public static void main(Stri
20、ng 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.out.println(狗烦躁的时候,会:+animal1.sayHello(Animal.SCARED);System.out.println(狗通常的情况下,和人打招呼
21、的方式为:+animal1.sayHello();System.out.println(狗被抚摸情绪好的时候,打招呼的方式是:+animal1.sayHello(Animal.COMFORTED);System.out.println(狗烦躁的时候,会:+animal1.sayHello(Animal.SCARED);第三阶段第三阶段(60分钟):考虑陆生动物和水生动物定义LandAnimal接口和WaterAnimal接口;扩充Dog类、Cat类和Frog类,使其实现相应的接口;扩充main方法;要求学员自己动手编码,在编码的过程中解答学员提出的问题阶段检查 针对第二阶段抽查学员的编码结果
22、抽查学员编写的完整代码,要求学员上台讲解,并演示运行结果 教员给出点评第三阶段的编码结果:interface LandAnimal/陆生动物接口 public int getNumberOfLegs();/返回有多少只脚interface WaterAnimal/水生动物接口 public boolean getGillFlag();/返回是否有腮 public boolean getLaysEggs();/返回是否产卵interfaceinterfaceclass Dog extends Animal implements LandAnimal private int numberOfLeg
23、s=4;public int getNumberOfLegs()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(g
24、illFlag);public boolean getLaysEggs()return(laysEggs);/实现 LandAnimal接口 public int getNumberOfLegs()return(numberOfLegs);implements LandAnimalimplements LandAnimal,WaterAnimalprivate boolean gillFlag=true;private boolean laysEggs=true;private int numberOfLegs=4;private boolean tailFlag=true;/实现 Water
25、Animal接口public boolean 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.o
26、ut.println(狗有狗有+animal1.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()+条腿
27、条腿);animal1.getNumberOfLegs()animal2.getNumberOfLegs()animal3.getNumberOfLegs()animal3.getLaysEggs()animal3.getGillFlag()在环境中演示标准程序并展示输出结果总结通过本次项目案例练习了面向对象的Java实现,基本囊括了面向对象的三大特征:封装、继承、多态巩固的知识点Java基本的程序结构;类和对象;类的封装,包括修饰符的使用(private/public/protected);抽象类、抽象方法(abstract关键字);final关键字;类的继承(extends关键字);接口的定义和实现(interface/implements关键字);多态;第一阶段第一阶段:动物共同的属性和方法(不考虑情绪)属性:是否哺乳,是否食肉方法:sayHello第二阶段第二阶段:考虑情绪属性:mood方法:重载sayHello,体现动物的多态性第三阶段第三阶段:考虑陆生和水生动物定义接口:LandAnimal、WaterAnimal第三阶段第三阶段:考虑陆生和水生动物定义接口:LandAnimal、WaterAnimal