要创建哪些类方法?

时间:2013-04-24 12:51:37

标签: java class methods

我正在寻找一个可以检查航空公司提供的各种航班信息的测试应用程序 我正在努力学习类和方法的概念以及要创建的概念。 我目前的思考过程如下: 数据是从网站下载的,由于数据的大小,我只想下载一次数据。 我目前的想法是:

BritishAirwaysFlightData()

构造

BritishAirwaysFlightData // Used to download the BA Flight database and store in the object (Assumging his is only small i.e. 500kb)

方法

getStartDate(String source_airport, String dest_airport) // Takes source and destination airport and return date when flights start
getEndDate(String source_airport, String dest_airport)   // Takes source and destination airport and return date when flights finish
getDestAirports(String source_airport)                   // Takes source airport name and returns a list of destinations
getSourceAirports(String dest_airport)                   // Takes source airport name and returns a list of sources
getNumofDestinations()                                   // Returns total number of destinations

希望您对我正在尝试实施的内容有一个大概的了解,但我不确定它是否正确。我基本上是从类创建一个对象,然后构造函数会自动下载数据并存储在某种合适的对象数组中。

将创建一个主程序,以允许用户查询航班信息等。

它将从主程序中有效地查询此对象,以查找有关航班,日期等的特定信息。

这是否是实现此类功能的最佳方式,请记住我不想直接访问数据而且我的带宽有限,因此需要实现某种本地缓存版本?

我更关注类/构造函数/方法的实际构成,而不是每个方法和调用参数的实际功能。

希望这是有道理的,任何指针都会受到高度赞赏,而且任何参考网站都有很多像这样的现实世界的例子,可以改善我对问题的初步分析,

谢谢,

3 个答案:

答案 0 :(得分:3)

您概述的方法似乎更适合使用服务

这个想法是这样的:你想分开你的顾虑

一个问题是对数据建模。这意味着为数据创建容器,使用有意义的方法来操作数据。如果有意义的话,你可以创建一个基类FlightData和一个子类BritishAirwaysFlightData(如果数据没有从航空公司改为航空公司,那么你只需要一个通用对象)。查看您的方法,为AirportFlight创建一个类可能是有意义的。

另一个问题是获取数据。所以你可能想要一个除了与数据源交互之外什么都不做的类。这些类通常称为数据访问对象(DAO)。

该服务是另一个将使用数据访问类和数据模型类共同执行一个工作单元的类。

所以想想方法getSourceAirports,我将假设这意味着“获取航班起飞的所有机场”。如果您有一个名为Flight的数据模型,则可以设想此类将包含departureAirportarrivalAirport字段(以及其他字段)。要获取源机场,您将在数据源中查询Flight表中找到的所有唯一的departureAirport(对应于Flight类)。

答案 1 :(得分:2)

你建议的方式会起作用,但我不推荐它,它的扩展性很差。我同意一次下载数据的概念,但这并不意味着您无法实现丰富的域模型并拥有适当的分层架构。

首先,我建议您使用FlightData的通用类:

public class FlightData {
    private FlightOperator operator;
    ...
}

其中包含特定运营商的航班信息(示例中为BA)。然后,您可以创建服务和DAO层以分离应用程序的问题:

public interface FlightDataService {
    public FlightData find(FlightOperator operartor);
    public List<FlightData> find(List<FlightOperator> operartors);
    ...
}

这是另一个详细阐述分层架构的问题:

DAO and Service layer design

答案 2 :(得分:1)

挣扎于类的概念是学习面向对象范式的自然部分。如果你真的处于入门级别,那么我不会担心ORM或Hibernate或实体/服务类。

为了帮助制定您想要创建的类的路线图,请仔细考虑您的项目。列举您的设计中涉及的各种事物,例如。航班,航班运营,航班时间。开发一系列内容确实是类设计中最好,最重要的第一步,因为获得准确而全面的列表将使您能够编写最有用且可扩展的类。

一旦列出了所有内容,请仔细考虑事情的组织方式。哪些事情是独立的,哪些是依赖的,例如。航班时间取决于航班。依赖的东西,例如。飞行时间,通常是属性或类的字段。独立的事情,例如。航班,往往是班级。在项目设计中,发展项目之间的关系确实是一个非常重要的步骤。正确使你的事情变得更加容易。

正如您所见,项目(事物)中的名词是类和类字段或属性。然后想象一下你希望你的项目做什么。动词,例如。 createScheduleList是你的方法,它们被写入它们操作的类中(或者如果它们不依赖于特定事物(或对象)的字段或属性,则被写为静态方法)。

这是非常无趣的建议,但我不能强烈强调从良好的课堂设计基础开始是多么重要。良好,组织良好的课程使得整个项目的实施变得更加直接。