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

浙公网安备 33010602011771号