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


浙公网安备 33010602011771号