java第五次作业

《Java技术》第五次作业

(一)学习总结

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

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

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接口,Dog类必须实现接口的抽象所有方法
接口的抽象方法默认为public权限,实现接口的类中覆写的抽象方法必须写public
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 final class String implements java.io.Serializable, Comparable<String>, CharSequence {
private final int offset;
private final int count;
public String() {
    this.offset = 0;
    this.count = 0;
    this.value = new char[0];
}
public String(String original) {
    int size = original.count;
    char[] originalValue = original.value;
    char[] v;
    if (originalValue.length > size) {
        int off = original.offset;
        v = Arrays.copyOfRange(originalValue, off, off+size);
    } else {
        v = originalValue;
    }
    this.offset = 0;
    this.count = size;
    this.value = v;
}

定义一个新的String对象时(写String类的有参构造时),定义一个新的String对象original,声明新数组originalValue,排序时,如果originalValue长度大于original对象的count(当字符串大于新的字符串original)时,对originalValue排序,排序后数组给新数组v;如果不大于,代表两个代表字符串的数组相同

(二)实验总结

1.音乐盒
程序设计思路:
设计一个MusicBox接口,Pianobox类、ViolinBox类继承MusicBox接口;
设计一个MusicBoxFactory类,作为过渡端,在过渡端中创建音乐盒对象,将创建对象的具体过程屏蔽隔离起来。
2.职工信息
问题1.Date类的使用
将工作日期和出生日期设为Date类,输入日期时,输入“yyyy-MM-dd”格式的字符串,再将字符串转换为Date类储存
问题2.输出日期时,将Date类转换为字符串输出

public String getBirthday(){
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); //指定格式化日期模板“yyyy-MM-dd”
        String str=sdf.format(birthday);                //将Date对象转换成字符串
        return str;                                    //输出字符串
    } 

问题3.Comparator、Comparatable接口的使用
3.宠物商店
程序设计思路:
设计一个Pet接口、Dog类和Cat类,Dog、Cat类继承Pet接口;
设计一个PetShop类,内含宠物商店的操作方法,add(): 添加宠物方法,seach(): 查找宠物方法,kind(): 统计用户购买宠物方法;
设计一个test类,实现用户购买过程

(三)代码托管

  • 码云commit历史截图
posted @ 2017-04-25 11:27  一块二  阅读(814)  评论(1编辑  收藏  举报