Java UML:如何对其他程序员可以使用但不能修改的类进行建模?

Java UML:如何对其他程序员可以使用但不能修改的类进行建模?,java,oop,Java,Oop,我的作业中有一个问题,要求对系统进行UML设计 我的任务要求我允许程序员使用这个系统,但不修改它的组件(涉及的类),并列出我使用的相关关键字 如何设置类以满足此要求?Java中的概念性答案是使用final关键字来表示那些要防止在子类中被重写的元素(类或类中的方法) 但这是在“非正式”层面上。你的课程(最终)是分布式的;因此,您将失去所有权。如果有人愿意,他可以获取您的源代码,删除final关键字并重新编译。即使只分发已编译的类文件,也可以反编译它们、删除final并重新编译 但对于做作业的学生来

我的作业中有一个问题,要求对系统进行UML设计

我的任务要求我允许程序员使用这个系统,但不修改它的组件(涉及的类),并列出我使用的相关关键字


如何设置类以满足此要求?

Java中的概念性答案是使用final关键字来表示那些要防止在子类中被重写的元素(类或类中的方法)

但这是在“非正式”层面上。你的课程(最终)是分布式的;因此,您将失去所有权。如果有人愿意,他可以获取您的源代码,删除final关键字并重新编译。即使只分发已编译的类文件,也可以反编译它们、删除final并重新编译


但对于做作业的学生来说,期末是必由之路。当然,这样做的最大缺点是:final类会给模拟框架带来麻烦,因此单元测试会变得更加棘手。因此,您需要确保您拥有良好的接口,如果有必要,人们可以自己实现这些接口;只让你的“impl”课程成为最终课程

归根结底,绝对没有办法阻止人们修改您的源代码(至少从Java)。在UML中也没有真正的建模方法。(如果这确实是作业要求的,我对他们的意图有点困惑;你是否可能误读了作业?)

一些版本控制系统可能允许您限制谁可以编辑某些文件,但我从未尝试过这样做,所以我无法告诉您太多)

另一件您肯定可以做的事情是在文件处于版本控制状态时监视它,以跟踪谁在修改它-有关如何在TFS中执行此操作的示例,请参阅。如果您在Java中工作,我想您使用的是TFS以外的东西,但是那里也应该有同等的功能。在我以前的一家公司中,我们使用此方法来确保子组件架构师知道他们“拥有”的代码的任何更改-理论上,人们应该让子组件架构师代码检查影响其子组件的所有更改,但有时人们会忘记,因此这有助于我们执行该规则。您可能希望做类似的事情(有一条规则,您必须对“自己的”代码的所有更改进行代码审查)

即使您完全可以阻止其他人修改您的类,我也不建议这样做,因为在整个产品生命周期中根本不需要修改类的可能性实际上相对较低

正如其他答案/评论中所指出的,在Java中最接近这一点的方法是使用
final
框架,这将阻止类进一步子类化

您还可以使类的数据不可变(即,公开可用的数据永远不会更改),但我认为这也不是您想要做的


简短回答:您不能从代码中执行此操作,您可能也不想这样做。

将该类作为最终类使用……您到底想阻止其他人修改什么?属于它们的类和方法非常感谢!我想这正是我需要的不客气。但要记录在案的是:首先,试着自己解决这些问题。学习意味着自己做研究。在这里问是作弊;-)