zoukankan      html  css  js  c++  java
  • Java第五次作业--面向对象高级特性(抽象类与接口)

    (一)学习总结

    1.在上周完成的思维导图基础上,补充本周的学习内容,对Java面向对象编程的知识点做一个全面的总结。

    2.汽车租赁公司,出租汽车种类有客车、货车和皮卡三种,每辆汽车除了具有编号、名称、租金三个基本属性之外,客车有载客量,货车有载货量,皮卡则同时具有载客量和载货量。用面向对象编程思想分析上述问题,将其表示成合适的类、抽象类或接口,说明设计思路并画出类图。

    • 设计思路
      定义父类Car ,设置属性:编号No、名称Name、租金Price
      定义两个接口载客量zaike和载货量zaihuo
      定义子类客车KeCar、货车HuoCar、皮卡PiCar,继承父类属性;
      设计接口,客车-载客量,货车-载货量,皮卡-载客量,载货量;
    • 类图

    3.阅读下面程序,分析代码是否能编译通过,如果不能,说明原因,并进行改正。如果能,列出运行结果

    interface Animal{    
            void breathe();
            void run();
            void eat();
        }
        class Dog implements Animal{
            public void breathe(){
                System.out.println("I'm breathing");
            }
            void eat(){
                System.out.println("I'm eating");
            }
        }
        public class Test{
            public static void main(String[] args){
                Dog dog = new Dog();
                dog.breathe();
                dog.eat();
            }
        }
    

    不能通过编译,Dog继承父类Animal,应继承Animal中所有方法,Dog类中void eat之前应加public,修改后的程序为:

    interface Animal{    
            void breathe();
            void run();
            void eat();
        }
        class Dog implements Animal{
            public void breathe(){
                System.out.println("I'm breathing");
            }
            public void eat(){
                System.out.println("I'm eating");
            }
            public void run(){
                System.out.println("I'm running");
            }
        }
        public class Test{
            public static void main(String[] args){
                Dog dog = new Dog();
                dog.breathe();
                dog.eat();
            }
        }
    

    运行结果为:

    I'm breathing
    I'm eating
    

    4.运行下面的程序

     import java.util.Arrays;
        public class Test{
            public static void main(String[] args){
                String[] fruits = {"peach","banana","orange","apple"};
                Arrays.sort(fruits);
                for(int i = 0;i < fruits.length;i++)
                {
                    System.out.println(fruits[i]);
                }
            }
        }
    

    程序输出的结果是升序排序的。查看String类的源码,说明是如何实现的?如果现在希望对输出的结果进行降序排序,该如何处理?修改上述代码,实现按照字母顺序逆序排序。

    • 源代码为:
      public int compareTo(String anotherString) {
        int len1 = count;
        int len2 = anotherString.count;
        int n = Math.min(len1, len2);
        char v1[] = value;
        char v2[] = anotherString.value;
        int i = offset;
        int j = anotherString.offset;
        if (i == j) {
            int k = i;
            int lim = n + i;
            while (k < lim) {
            char c1 = v1[k];
            char c2 = v2[k];
            if (c1 != c2) {
                return c1 - c2;
            }
            k++;
            }
        } else {
            while (n-- != 0) {
            char c1 = v1[i++];
            char c2 = v2[j++];
            if (c1 != c2) {
                return c1 - c2;
            }
            }
        }
        return len1 - len2;
        }
    

    5.其他需要总结的内容。

    • 抽象类和接口掌握比较熟练;
    • 对于日期操作类的使用还不太会,在编写程序时十分费力;
    • 对象的比较方法和比较器的使用需要课下多多看书!

    (二)实验总结

    实验内容:
    1.某工厂生产各种音乐盒,客户无需知道音乐盒的制作过程,只需知道如何播放音乐盒即可。用简单工厂设计模式实现该过程:接口MusicBox具有方法play(),两个音乐盒类PianoBox,ViolinBox,MusicBoxFactory 产生MusicBox的实例。

    • 程序设计思路
      定义接口MusicBox和具有的方法play()
      定义两个音乐盒PianoBoxViolinBox
      设计接口,PianoBox——play()ViolinBox——play()
      定义工厂类MusicFactory产生MusicBox

    2.修改第三次作业的第一题,使用java.util.Date类表示职工的生日和参加工作时间,并将职工信息按照生日大小排序后输出。(分别用comparable和comparator实现)

    • 程序设计思路
      定义两个类BumenWorker,分别设置其属性;
      使用java.util.Date类表示职工的生日和参加工作时间;
      comparator比较器比较职工出生日期并进行排序;
      定义Test对其进行测试
    • 问题
      在进行比较时,get birthday()显示错误
    • 解决方案
      get birthday()之后再加上get time()
    • 修改后的程序为
      if(w1.getBirthday().getTime()>w2.getBirthday().getTime()){
    	    		return -1;
    	    	}else if(w1.getBirthday().getTime()<w2.getBirthday().getTime()){
    	    		return 1;
    	    	}
    	    	else{
    	    		return 0;
    	    	}
    

    3.在案例宠物商店的基础上,实现以下功能:
    (1)展示所有宠物
    (2)购买宠物
    (3)显示购买清单

    (三)代码托管(务必链接到你的项目)

    https://git.oschina.net/hebau_cs15/java-cs02hfj2.git

  • 相关阅读:
    day7 面向对象 静态方法 类方法 属性方法 类的特殊成员方法 元类 反射 异常处理
    day6 面向对象 封装 继承 多态 类与实例在内存中的关系 经典类和新式类
    day5 time datetime random os sys shutil json pickle shelve xml configparser hashlib subprocess logging re正则 python计算器
    kafka常用操作命令
    linux基础
    django学习1——初识web应用程序
    mysql数据库(三)——pymysql模块
    mysql数据库(二)——表的查询
    mysql数据库(一)
    Python常用模块——re模块
  • 原文地址:https://www.cnblogs.com/hfja/p/6761964.html
Copyright © 2011-2022 走看看