Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 航空公司预订系统UML问题-这些方法属于哪里?_Java_Uml_Class Diagram_Object Oriented Analysis_Ooad - Fatal编程技术网

Java 航空公司预订系统UML问题-这些方法属于哪里?

Java 航空公司预订系统UML问题-这些方法属于哪里?,java,uml,class-diagram,object-oriented-analysis,ooad,Java,Uml,Class Diagram,Object Oriented Analysis,Ooad,我正在为软件工程面试做准备,我发现在面试中了解面向对象的设计很有好处。在我所看到的所有UML图示例中,我很难确定这些方法属于何处。例如,以下是航空公司预订系统面向对象设计课程中的UML图之一 这个图表的主要问题是: 包含addFlightSchedule()方法的航班类 包含getFlights()方法等的Airport类 在这方面做了一些工作之后,我总是有一个服务类(比如FlightScheduler类),它有addFlightSchedule()方法,Flight对象只是包含适用于航班的属

我正在为软件工程面试做准备,我发现在面试中了解面向对象的设计很有好处。在我所看到的所有UML图示例中,我很难确定这些方法属于何处。例如,以下是航空公司预订系统面向对象设计课程中的UML图之一

这个图表的主要问题是:

  • 包含addFlightSchedule()方法的航班类
  • 包含getFlights()方法等的Airport类

  • 在这方面做了一些工作之后,我总是有一个服务类(比如FlightScheduler类),它有addFlightSchedule()方法,Flight对象只是包含适用于航班的属性/方法的对象。那么,在面试中这样设计课程对吗?所有在线UML图都有服务(操作)方法作为类本身的一部分,这有什么原因吗?

    这是一个域模型,它告诉了一些关于域逻辑的信息。它不是系统工作方式的实现模型:

    1.航班 在这个模型中,战斗代表两个机场之间的航线。飞行公司喜欢火车公司喜欢规律性。因此,同一航线(航班)可以定期运行(此处为一周中的一天或几天)。或者,它可以是仅在特定日期运行的包机,因此该航班可以没有、一个或多个自定义日期

    因此,在这样的模型中,在战斗中找到
    addSchedule()
    是合乎逻辑的,因为这允许对飞行进行更详细的描述。因此,它是预期飞行行为的一部分。如果有任何其他类会这样做,您将创建一个依赖项并与特定实现进行耦合

    这里唯一令人惊讶的是,
    CustomeSchedule
    WeekSchedule
    并不是
    FlightSchedule
    的专门化

    2.机场 机场的一个明显作用是知道什么飞机应该到达和离开机场以及什么时候。在每个机场,我都可以查阅预计到达和离开的名单,以及一些关于航班的信息

    这就是
    getFilghts()
    是关于:由机场向其他只知道机场的班级提供这些信息。如果这种模式不提供这种机场方法,每个乘客都必须了解世界上所有的飞机,并找到离开机场的飞机。这将打破封装,因为飞机乘客我们必须知道太多关于这个世界的细节

    也就是说,在现实世界中,您可能希望这种方法将特定的数据作为参数:同样,筛选航班并找到适合给定日期的航班也不重要

    最少知识原则 该模型旨在充分封装对象,以便每个对象不必知道如何关联所有其他对象

    它需要遵守,所以每一个班级都必须知道尽可能少的班级。特别是,乘客知道机场和飞机。他们原则上不必知道时间表是如何工作的


    这个模型显然是一个简化的模型,也不完善。例如,不清楚航班实例是如何创建的。但也许你的书在专门的一章中解决了这个问题和不同的备选方案;-)

    这是一个域模型,讲述了一些域逻辑。它不是系统工作方式的实现模型:

    1.航班 在这个模型中,战斗代表两个机场之间的航线。飞行公司喜欢火车公司喜欢规律性。因此,同一航线(航班)可以定期运行(此处为一周中的一天或几天)。或者,它可以是仅在特定日期运行的包机,因此该航班可以没有、一个或多个自定义日期

    因此,在这样的模型中,在战斗中找到
    addSchedule()
    是合乎逻辑的,因为这允许对飞行进行更详细的描述。因此,它是预期飞行行为的一部分。如果有任何其他类会这样做,您将创建一个依赖项并与特定实现进行耦合

    这里唯一令人惊讶的是,
    CustomeSchedule
    WeekSchedule
    并不是
    FlightSchedule
    的专门化

    2.机场 机场的一个明显作用是知道什么飞机应该到达和离开机场以及什么时候。在每个机场,我都可以查阅预计到达和离开的名单,以及一些关于航班的信息

    这就是
    getFilghts()
    是关于:由机场向其他只知道机场的班级提供这些信息。如果这种模式不提供这种机场方法,每个乘客都必须了解世界上所有的飞机,并找到离开机场的飞机。这将打破封装,因为飞机乘客我们必须知道太多关于这个世界的细节

    也就是说,在现实世界中,您可能希望这种方法将特定的数据作为参数:同样,筛选航班并找到适合给定日期的航班也不重要

    最少知识原则 该模型旨在充分封装对象,以便每个对象不必知道如何关联所有其他对象

    它需要遵守,所以每一个班级都必须知道尽可能少的班级。特别是,乘客知道机场和飞机。他们原则上不必知道时间表是如何工作的

    这种模型显然是一种简化,也是不完善的