从内部类调用类

时间:2014-08-26 14:14:55

标签: java

我是Java的新手,我正在努力解决这个特殊的问题,并且只是解决了这个问题。

问题陈述如下:

一家着名的酒店在迈阿密有三家分店。即x,y和z(实际上它们给出了名称)。每个客户都有两种类型。常客和退休人员。此外,每个分支都有自己的评级x给予3星评级,而y有5星评级,z有4星评级。

每家酒店都有特定的周末和工作日价格。 x平日为普通客户收费100美元,周末收费120美元。平日收费90美元,周末收费60美元。同样地,y在平日为普通客户收费130美元,在周末收费150美元。平日收款100美元,周末收费95美元。虽然z在工作日为普通客户收费195美元,在周末收费150美元。平日收款120美元,周末收费90美元。现在,当客户要求特定细节时,您需要找到哪个酒店会产生客户利润。如果酒店之间存在联系,请比较评级并提供结果。

输入格式:

常规:16Mar2010(太阳),19M2010(星期三),21Mar2010(星期五)

class Hotel {
    private int ratings;

    public int getRating() {
        return ratings;
    }

    public void setRating(int rating) {
        ratings = rating;
    }
}

class Customer extends Hotel {
    private String regular;
    private String rewardee;

    public String getRewardee() {
        return rewardee;
    }

    public void setRewardee(String rewardee) {
        this.rewardee = rewardee;
    }

    public String getRegular() {
        return regular;
    }

    public void setRegular(String regular) {
        this.regular = regular;
    }
}

class Pricing extends Customer {
    private double weekends;
    private double weekdays;

    public double getWeekends() {
        return weekends;
    }

    public void setWeekends(double weekends) {
        this.weekends = weekends;
    }

    public double getWeekdays() {
        return weekdays;
    }

    public void setWeekdays(double weekdays) {
        this.weekdays = weekdays;
    }
}


public class Main {
    public static void main(String[] args) {
        Pricing x = new Pricing();
        x.setRating(3);
        x.setWeekdays(100);
        x.setWeekends(120);
        Hotel y = new Hotel();
        y.setRating(5);
        Hotel z = new Hotel();
        z.setRating(4);
    }
}

我真的很难从这里挺身而出,我正朝着正确的方向前进吗?如何进一步解决问题。请帮助,如果可能的话,你可以参考任何好书来建立我的技能。

此外,我正在考虑调用其他类中的类来将不同的类连接在一起。这种方法是否合适。

由于

P.S不是家庭作业。

4 个答案:

答案 0 :(得分:2)

酒店"有一个"评级和两种定价模式 - 一种针对普通客户,一种针对获奖者:

class Hotel {
    int rating;
    PricingSchema forRegulars, forRewardees;
}

定价模式有两种价格:周末和正常:

class PricingSchema {
    double weekendPrice, weekdayPrice;
}

客户是或不是获奖者:

class Customer {
    boolean isRewardee;
}

挑战:针对特定客户计算给定酒店的特定日期的价格:

hotel.price(customer, dayOfWeek);

现在看看这会带你去哪里。

答案 1 :(得分:1)

您目前正在使用关系。您声明定价客户,而客户酒店。您应该考虑的是具有关系。您应该在" Hotel"中声明客户的实例。 private Customer regularprivate Customer rewardee同样适用于您的定价。

答案 2 :(得分:0)

  

我真的很想从这里挺身而出,我是朝着正确的方向前进的吗?

不,你不是。我非常确定Customer HotelPricing也不应该是Customer。你滥用继承,而对象应该只是相互关联。

答案 3 :(得分:0)

我自己也不是专家,但建议你重新考虑设计。定价并非属于客户的真实状态,属于酒店。我的第一个想法是拥有酒店级别的持有评级和各种价格(常规/奖励的周末/工作日)。这些将属于每个酒店对象。

单独的客户类(不相关)可以保存常规/奖励的布尔值,您可以将其输入到酒店类的getPricing方法中。可能名称,地址等也可能在那里及时生活。

然后,您可以比较主要的酒店对象。根据您目前正在尝试做的事情,我认为您还不需要在任何地方扩展任何课程。如果定价结构开始蔓延,您可能会考虑将其保留在另一个类中,但我认为这样做了。