代码改变世界

java第五次作业

2017-04-24 22:45  空白格DE  阅读(246)  评论(1)    收藏  举报

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

不能运行,降低了Animal的可视性,Dog 中缺少run()方法,没有完全实现Animal中的方法。

修改:在Dog中添加run()方法

  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() {
        
        }
    }
    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 类的源码,说明是如何实现的?如果现在希望对输出的结果进行降序排序,该如何处理?修改上述代码,实现按照字母顺序逆序排序。

运行结果:
apple
banana
orange
peach

其他的Object类型排序需要对象实现CompareTo接口,使用Arrays的排序方法,继承Comparable接口。

修改后倒序输出:

import java.util.Arrays;
import java.util.Comparator;
public class Test {
    public static void main(String[] args) {
        String[] fruits = { "peach", "banana", "orange", "apple" };
        Arrays.sort(fruits, new Comparator<String>(){
            public int compare(String o1, String o2){
                char a = o1.charAt(0);
                char b = o2.charAt(0);
                if(o1.equals(o2)){
                    return 0;
                }else if(a>b){
                    return -1;
                }else{
                    return 1;
                }
            }
        });
        for (int i = 0; i < fruits.length; i++) {
            System.out.println(fruits[i]);
        }
    }
}

5.其他需要总结的内容。
这次的实验三自己感觉有点麻烦,是通过查询资料和询问同学写的,写的还是不够完善。写第一题的时候,画这个类图,自己翻书,还有查帮助文档,基本掌握了一些方法。

(二)实验总结

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

设计思路:设计两个音乐盒类还有工厂类

class PianoBox implements MusicBox{
	public void play(){
		System.out.println("钢琴");
	}
};

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

public interface ZhigongComparator<T> {
	public int compare(T o1,T o2);
	boolean equals(Object obj);
	

}

用comparable实现:

public interface ZhigongComparable <T> {
		public int compareTo(T o);
	}

3.在案例宠物商店的基础上,实现以下功能:
(1)展示所有宠物
(2)购买宠物
(3)显示购买清单
设计一个宠物商店,实现宠物的增加,再在测试类中显示商店中的所有宠物

class PetShop{
		// TODO Auto-generated method stub
		Pet[] pets ;	// 保存一组宠物
		int foot ;
		public PetShop (int len){
			if(len>0){
				this.pets = new Pet[len] ;	// 开辟数组大小
			}else{
				this.pets = new Pet[1] ;	// 至少开辟一个空间
			}
			
		}
		public boolean add(Pet pet){	// 增加的是一个宠物
			if(this.foot<this.pets.length){
				this.pets[this.foot] = pet ;	// 增加宠物
				this.foot ++ ;
				return true ;
			}else{
				return false ;
			}
		}
		public Pet[] buy(String keyword){
			Pet[] p=null;
			int count=0;
			for(int i=0;i<this.pets.length;i++){
				if(this.pets[i].getNo().indexOf(keyword)!=-1){
					count++;
				}
			}
		 p=new Pet[count];
		 int f=0;
		 for(int i=0;i<this.pets.length;i++){
			 if(this.pets[i].getNo().indexOf(keyword)!=-1){
				p[f]=this.pets[i];
				f++;
			 }
		 }
		return p;
	}
}

代码托管:https://git.oschina.net/jin1/go.git