面向对象的数据库难题?

时间:2014-11-03 16:34:06

标签: java database oop

我目前正在参加OOP课程,这是我的问题:

假设自行车租赁数据库:class' bike' =>子类'借来的自行车'和'返回自行车'。借来的自行车有额外的领域&到期日'并返回自行车的位置'

任务是扩展此数据库以处理您可以从租赁中借出的各种事物。但是,实现需要尽可能面向对象。我一直在浏览我的Java书,但我还没有找到一个聪明的解决方案。

那么,我怎样才能添加每个项目(自行车,旱冰鞋......等)被借用的功能'或者'返回'与相关的附加字段没有为每种类型的项目分别的子类?

(我建议我的老师说每个项目的状态都是“借来的”或“退回”但是我被告知这不是对象 - 足够导向)

感谢所有帮助!

6 个答案:

答案 0 :(得分:0)

使用getStatus()方法创建一个接口,并使所有项类实现它。

答案 1 :(得分:0)

为借用的和返回的接口创建2个接口。

public interface returnedItem(){
   public String getLocation();
   public void setLocation(String s);
}

public interface borrowedItem(){
   public Date getDue();
   public void setDue(Date date);
}

答案 2 :(得分:0)

借用或归还所有物体(自行车,旱冰鞋等)的一种简单方法是制作超级课程。

例如:

public class Borrowable {
    private boolean borrowed = false;

    public borrow() {
        borrowed = true;
    }

    public return() {
        borrowed = false;
    } 

    public isBorrowed() {
        return borrowed;
    }

}

如果您使用自行车扩展此类,则可以调用可借用的方法,而无需再次编写代码。

答案 3 :(得分:0)

使用interface

interface Item{
    boolean isBorrowed();
}

然后通过实施abstract

为所有不同的项目制作interface个课程
abstract class Bike implements Item{
    //code
}

abstract class RollerSkates implements Item{
    //code
}

//etc.

现在extend这些abstract类:

public class BorrowedBike extends Bike{
    //code
    //add additional field 'due date'
    boolean isBorrowed(){
        return true;
    }
}

public class ReturnedBike extends Bike{
    //code
   //add additional field 'location'
    boolean isBorrowed(){
        return false;
    }
}

答案 4 :(得分:0)

你可以做的是为每个项目创建一个类类型, 创建Item类,它是一个泛型类,并从中继承2个子类借用项并返回一个

class Bike
...
class Skates
...
class Roller

class Item<T>
...
class BorrowedItem<T> extends Item<T>
...
class ReturnedItem<T> extends Item<T>

答案 5 :(得分:0)

而不是为自行车子类制作borrowed bikereturned bike 你可以按照一种方法来上课 变量itemnameOfItem的{​​{1}}可以是自行车,滚轴赌注或任何其他。 它将保留一个实例

type