有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java面向对象数据库之谜?

我目前正在学习OOP课程,这里是我的问题:

假设自行车租赁数据库:类别“bike”=>;“借用自行车”和“归还自行车”的子类。借来的自行车具有附加字段“到期日期”,而归还的自行车具有字段“位置”

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

那么,我如何添加每个项目(自行车、旱冰鞋等)的功能“借用”或“返回”是否与相关的附加字段一起使用,而不对每种类型的项目都有单独的子类

(我建议我的老师,每个‘项目’的状态要么是‘借用’要么是‘返回’,但我被告知这还不够面向对象)

感谢您的帮助


共 (6) 个答案

  1. # 1 楼答案

    而不是把borrowed bikereturned bike作为自行车子类 你可以按照一种方法来上课 item带有变量nameOfItemtype它可以是自行车、滚柱或任何其他。 它将维持一个实例

    Name            status
    bike            returned
    roller stakes   borrowed
    
  2. # 2 楼答案

    为借来的和归还的创建两个接口

    public interface returnedItem(){
       public String getLocation();
       public void setLocation(String s);
    }
    
    public interface borrowedItem(){
       public Date getDue();
       public void setDue(Date date);
    }
    
  3. # 3 楼答案

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

  4. # 4 楼答案

    使用interface

    interface Item{
        boolean isBorrowed();
    }
    

    然后通过实现interface,为所有不同的项创建abstract

    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;
        }
    }
    
  5. # 5 楼答案

    给所有对象(自行车、旱冰鞋等)一个借来或归还的简单方法是创建一个超级类

    例:

    public class Borrowable {
        private boolean borrowed = false;
    
        public borrow() {
            borrowed = true;
        }
    
        public return() {
            borrowed = false;
        } 
    
        public isBorrowed() {
            return borrowed;
        }
    
    }
    

    如果使用bike扩展这个类,那么就可以调用可借用的方法,而无需重新编写代码

  6. # 6 楼答案

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

    class Bike
    ...
    class Skates
    ...
    class Roller
    
    class Item<T>
    ...
    class BorrowedItem<T> extends Item<T>
    ...
    class ReturnedItem<T> extends Item<T>