我正在创建一个使用Ruby on Rails作为应用程序服务器并将Java客户端作为前端的库存系统。
项目的一部分要求我们创建一个集成的类图(包含所有类并显示关系的类图)。设计类的方式以及我们之前教过的内容是使用边界 - 实体 - 控制器(BCE)模式来创建适当的类,但是,因为我们使用的是Rails,它使用的是一个MVC架构,它们直接冲突,因为两个模式之间没有1:1的相关性,特别是考虑到我们案例中的“视图”只是XML,因此视图中没有类图和 Boundary 类共享控制器的输入和视图的输出。
到目前为止,我们的类图仅包含与Rails相关的类(因为客户端类主要只是UI)。这是我们到目前为止所做的结果(忽略了我们有一百万个getter和setter的事实 - 这是我们实际上不会以这种方式实现的项目的要求;我们将使用{{ 1}}):
那么,我们是否走在正确的轨道上?有什么要添加/编辑/移动的吗?我们究竟如何正确建模我们将要使用的内置ActiveRecord验证器方法(例如attr_accessor
)?
非常感谢任何帮助!感谢。
答案 0 :(得分:0)
看起来你有几个限制。如果我理解正确,您在分析中使用BCE,在体系结构中使用MVC。在RUP中,有两种用于这些目的的模型 - 分析模型和设计模型 - 都通过类图表示。因此,如果您想在一个怪异的图表中显示您使用BCE方法以及MVC架构,您可以从分析中绘制边界,控件和实体,并根据设计的RoR绘制解决方案类,并使用依赖关系将它们连接到{ {1}}刻板印象。
我不完全确定在RoR中如何实现验证方法,我的猜测是,当你在模型类定义中调用validates ...方法时,通过使用新的私有方法进行元编程来增强特定的模型类,作为验证阶段的回调。我真的不确定这一点,但如果它是真的并且涉及元编程,那么你就有问题了。 AFAIK,你可以绘制图表,它会在添加方法之后显示类(类似于类级别的对象图......),或者你可以通过包合并对元模式进行建模,这也不容易。
答案 1 :(得分:0)
您已经正确分析了conflict between BCE and MVC。因此,让我们尝试映射您的类:
Employee
,Store
,Product
,Location
显然是«entity»
EmployeeController
,StoreController
,ProductController
,LocationController
显然是«control»
,对应于各个实体的simpla管理。ActiveRecord
并不是真正的实体。这表明您不再处于分析模型中,而已处于更加完善的设计模型中。但是,您仍然可以使用《实体》,因为此类仅有助于实现它们。Manager
和Receiver
对于我正确分类来说有些模棱两可。但是,如果应该假设Employee
扮演特殊角色,则最好使用组合而不是继承,因为Employee
可能以Employee
开始,然后一天是{ {1}},之后为receiver
。通用化/专业化关系不允许这种灵活性:如果创建了员工,则一生都是经理或接管人。还不清楚的是,您的manager
是否真的与用例相对应,并且确实在贡献类之间进行了协调:
XxxController
代替Maintain employee records
。对于参与者(用户或远程系统)和用例之间的每个链接,原则上都应该期望EmployeeController
。仅仅创建XML是不够的:您需要将XML发送到另一个系统,或者在屏幕上显示XML,并在需要时进行一些滚动。也许您可能不得不对请求做出反应或让用户有机会查询另一条记录:
«boundary»
实际上更接近用例(即«control»)而不是MVC控制器。