首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >航空预订系统UML问题-这些方法属于哪里?

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

Stack Overflow用户
提问于 2021-01-28 01:44:51
回答 1查看 3K关注 0票数 0

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

我在这个图表中的主要问题是:

  1. 包含addFlightSchedule()方法的Flight类
  2. 包含getFlights()方法等的机场类。

在这方面做了一些工作之后,我总是有一个服务类(像FlightScheduler类),它有addFlightSchedule()方法,而for对象只是包含适用于飞行的属性/方法的类。那么,在面试中用这种方式设计课程是正确的吗?为什么所有在线UML图都将服务(操作)方法作为类本身的一部分?

EN

回答 1

Stack Overflow用户

发布于 2021-01-28 08:15:05

这是一个域模型,它说明了一些关于域逻辑的内容。这不是系统应该如何工作的实现模型:

1.飞行

在这种模式下,战斗代表了两个机场之间的航线。而飞行公司喜欢火车公司喜欢规律。因此,同一条航线(航班)可以定期安排(一周中的一天或几天)。或者,它可以是只在特定日期运行的包机,因此该航班可以没有、一个或多个自定义日期。

因此,在这样的模型中,在战斗中找到addSchedule()是合乎逻辑的,因为这样可以更详细地描述飞行。因此,这无疑是预期飞行行为的一部分。如果任何其他类都会这样做,您将创建一个依赖项和一个特定实现的耦合。

这里唯一令人惊讶的是,CustomeScheduleWeekSchedule不是FlightSchedule的专门化。

2. THe机场

一个机场的明确作用是知道哪些飞机应该抵达,什么时候从机场起飞。在每个机场,我都可以查阅预计到达和离开的名单,并提供一些有关航班的信息。

这就是getFilghts()的意义所在:这取决于援助港将这些信息传递给其他只知道机场的阶层。如果这个模型不能提供这种机场方法,每个乘客都必须了解世界上所有的飞机,并找到离开机场的飞机。这将打破封装,因为apassenger必须知道太多关于世界的细节。

THis说,在现实世界中,您会期望这种方法将特定的数据作为参数:同样,不需要过滤航班并找到适合某一特定日期的数据。

知识最少原则

该模型的目的是充分封装对象,使每个对象不必知道如何关联所有其他对象。

它很难遵守知识最少原则,所以每个类都必须知道尽可能少的类。在日常生活中,乘客了解机场和飞机。THey原则上不需要知道时间表是如何工作的。

这种模式显然是一种简化,也是不完善的。例如,还不清楚飞行实例是如何创建的。但是也许你的书在一个专门的章节中讨论了这个问题和不同的选择;-)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65929874

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档