Uml 类图java应用程序

Uml 类图java应用程序,uml,Uml,编程语言:java。类图的问题 给定一个名为Bridge的类,以下表示是否正确 我关心的是如何处理声明,例如: 专用信号量 这是属性/方法声明: public class Bridge { private Semaphore semaphore; private Lock lock: private Condition waitingCond; private int nNorthCars; ....... public void getIn(int di

编程语言:java。类图的问题

给定一个名为Bridge的类,以下表示是否正确

我关心的是如何处理声明,例如: 专用信号量

这是属性/方法声明:

public class Bridge {
    private Semaphore semaphore;
    private Lock lock:
    private Condition waitingCond;
    private int nNorthCars; .......
    public void getIn(int direction) throws InterruptedException{
    .....
The same goes for getOut()....
}
UML表示:

 ---------------------
    Bridge
    ---------------------
    - semaphore: Semaphore
    - lock: Lock
    - waitingCond: Condition
    - nNorthCars: int
    - nSouthCars: int
    ---------------------
    + getIn(): void
    + getOut(): void
    ---------------------
此外,考虑到主函数中的变量应该是局部变量,我认为它们应该被视为私有变量,这对吗? 例如:

public static void main(String[] args) {
...........
int nThreads = Integer.parseInt(args[0]);
long time = 0; 
...}
以下是UML实现:

---------------------
Main
---------------------
- nThreads: int
- time: long
---------------------
+ main()
---------------------
符号:-(私人),+(公共)

我们将非常感谢您的帮助


谢谢

一般来说,UML是实现/语言不可知的-当阅读UML图时,你不应该知道或关心它是用什么语言实现的。此外,类图是用来表示(或建模)领域问题的类型/类/概念及其关系的。因此,您不应该担心方法中的局部变量,因为这既是一个实现细节,也与其他类或概念的关系无关

似乎您正试图使用UML对Java程序进行建模(或逆向工程),并且希望将程序中的每个变量都作为类图的一部分包含在内。这不是你应该采取的方法

SemaPhore
lock
waitingCondition
都是实现细节,并不传递任何有关
Bridge
的行为或
Bridge
与其他类的关系的有用信息
nNorthCars
nOuthCars
是私有的-在您的模型中,将它们公开为公共属性有意义吗?模型中的其他类/概念需要了解这些吗?如果对这些问题没有回答,那么您也可以从类图中删除这些问题。如果您要在活动图中对某种桥接方法进行建模,可能需要保留它们。Bridge可能希望在UML中看起来像这样:

    ---------------------
    Bridge
    ---------------------

    ---------------------
    + getIn(): void
    + getOut(): void
    ---------------------
如果Bridge与其他东西(可能是一组汽车)有关系,那么您可以对其进行建模,因为这种关系对外在您的模型中的其他概念可见

Main
看起来像是您的程序入口点,同样,可能不需要对其进行建模。如果
Main
聚合了所有其他(或大多数其他)类/概念,则继续进行建模,否则它将成为一个实现细节

最后,UML实际上是用来对概念进行建模,然后在代码中实现这些概念。看起来你正在做与此相反的事情。在某种程度上,反向工程和往返是可以的,但要小心,否则您最终会侵入UML并从中生成代码。UML的思想是在剪切代码之前对您的领域建模并验证此模型

希望这有助于