java第五次实验

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

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

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();
    }
}

不能通过
因为 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();
        dog.run();
    }
}

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]);
        }
    }
}


源代码:


public final class String
implements java.io.Serializable, Comparable<String>, CharSequence{
private final char value[];
private int hash;
private static final ObjectStreamField[] serialPersistentFields =new ObjectStreamField[0];
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;
}

修改

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 = fruits.length-1;i>=0;i--)
            {
                System.out.println(fruits[i]);
            }
        }
    }

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

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

设计思路:
先定义一个play 方法,然后按要求书写violinbox类和pianobox类
在将这两个类接口music类,

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

问题:
对date类使用不好,输出 不能按书中的书写,

解决:
将原来的 在员工类中输出去掉了 生日的输出,改为在text中输出

设计思路:现将原来text中的生日等日期 删除,另外用个数组书写 这些日期,在类中 将日期的改为 date birth 等,在text 中将这些日期的数组代入到员工中,用db[]表示。
两个排序中,Comparator 另外书写一个类,来完成排序,连一个 这在员工类里直接进行运用
3.在案例宠物商店的基础上,实现以下功能:
(1)展示所有宠物
(2)购买宠物
(3)显示购买清单

(三)代码托管
https://git.oschina.net/hebau_cs15/Java-CS01QH.git

原文地址:https://www.cnblogs.com/JoeH/p/6764063.html