java作业5

(一)学习总结

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类中没有覆写接口类中的全部方法,在子类中如果想调用接口中的方法,必须用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 am running");
            }
        }
public class practice {
	public static void main(String[] args) {
	
	    Dog dog = new Dog();
        dog.breathe();
        dog.eat();

	}

}

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

运行结果:


通过查看源代码



按照逆序输出
for(int i =fruits.length-1 ;i >=0;i--)
{
System.out.println(fruits[i]);
}
改变之后即可按逆序输出。

(二)实验总结

(1)音乐盒
程序设计思路:创建一个接口,有一个抽象方法,然后创建两个类去继承他,运用java语言多态性向上转型的规则,为了防止代码繁多,设置一个工厂类,这样做的好处是,每当有一个新来的类增加时,不用去改变测试类,直接改变工厂类即可
(2)部门员工类
程序设计思路与之前写的那个程序基本相同。
问题1:对于date类的使用不是很好。
解决问题方案:首先输入一个字符串,然后运用parse方法,将这个字符串转化成正规格式,然后在运用format方法转化成字符串,再输出。
问题2:运用Comparator接口进行排序。
解决方案:

(3)宠物商店
程序设计思路:创建一个宠物商店类,然后对各种动物进行实例化,然后让用户通过输入编号来选择要购买的猫或狗,最后显示一个清单,输出用户选择了的猫或狗,并显示出用户一共消费了多少钱。
问题1:如何计算消费的总金额
程序解决方案:
在类中设置一个全局变量,每当用户选择一个宠物时,把这只宠物的金额加入到全局变量当中,全局变量的调用方法:类名.变量名 。
问题2:如何在宠物商店这个类中添加宠物?
程序解决方案:

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

问题3:如何通过一个关键字来查询宠物?
程序结局方案:

public Pet search(String keyword){
		Pet p=null;
		for(int i=0;i<this.pets.length;i++){
			if(this.pets[i] !=null){
				if(this.pets[i].getCno().indexOf(keyword)!=-1){
					p=this.pets[i];
				}
			}
		}
		return p;
	}

(三)代码托管


链接:
https://git.oschina.net/hebau_cs15/hebau-cs02wzt/tree/master/java作业5?dir=1&filepath=java作业5&oid=4232f694f741c5bf97bbccb9e4cc4769d5123704&sha=50cf0bf7f8235a81742f7ea4174f5c096fdd5cbe

posted on 2017-04-21 20:37  子腾  阅读(370)  评论(2)    收藏  举报

导航