UML图到Java代码

UML图到Java代码,java,uml,Java,Uml,我是Java新手,正在尝试解决一些问题,其中我必须将UML图转换为Java代码:我有一个UML文档的图像- 我将向您展示我目前拥有的: Q1:编写类Entry的Java版本,假设它具有以下构造函数:public Entry(字符串名称),并且方法getSize是抽象的。 A: Q2:编写类文件的Java版本,假设它具有以下构造函数: 公共文件(字符串名称,长大小) A: 问题3:目录包含文件和目录的集合。编写类目录的Java版本,假设它具有以下构造函数: publicdirectory(str

我是Java新手,正在尝试解决一些问题,其中我必须将UML图转换为Java代码:我有一个UML文档的图像-

我将向您展示我目前拥有的:

Q1:编写类Entry的Java版本,假设它具有以下构造函数:public Entry(字符串名称),并且方法getSize是抽象的。 A:

Q2:编写类文件的Java版本,假设它具有以下构造函数: 公共文件(字符串名称,长大小) A:

问题3:目录包含文件和目录的集合。编写类目录的Java版本,假设它具有以下构造函数: publicdirectory(stringname)和getSize方法返回目录中所有文件的总大小及其所有属性 子目录(在此模型中,忽略目录本身的大小)

答:这就是我陷入困境的地方,我不知道如何处理getSize方法。有人能告诉我到目前为止我所做的是否正确吗?也为我指明了第三季度的正确方向

编辑:好的,我已经尝试了一个答案,但我真的不知道我在做什么

import java.util.ArrayList;

public class Directory extends Entry {

    ArrayList <Entry> entries = new ArrayList<Entry>();

    public Directory(String name)
    {
        super(name);
    }

    public long getSize(){
        long size;
        for(int i=0;i<entries.size();i++)
        {
        size +=  //don't know what to put here?
        }
        return size;
    }
}
import java.util.ArrayList;
公共类目录扩展了条目{
ArrayList条目=新的ArrayList();
公用目录(字符串名称)
{
超级(姓名);
}
公共长getSize(){
长尺寸;

对于(int i=0;i,您对Q1和Q2的答案看起来不错

关于第三季度:

// A Directory is an Entry and can contain an arbitrary number of other Entry objects
public class Directory extends Entry {

    // you need a collection of Entry objects, like ArrayList<Entry>
    // ArrayList<Entry> entries = ...

    function getSize() {
        long size;
        // now we calculate the sum of all sizes
        // we do not care if the entries are directories or files
        // the respective getSize() methods will automatically do the "right thing"
        // therefore: you iterate through each entry and call the getSize() method
        // all sizes are summed up
        return size;
    }

}
//目录是一个条目,可以包含任意数量的其他条目对象
公共类目录扩展了条目{
//您需要一组条目对象,如ArrayList
//ArrayList条目=。。。
函数getSize(){
长尺寸;
//现在我们计算所有尺寸的总和
//我们不关心条目是目录还是文件
//各自的getSize()方法将自动执行“正确的操作”
//因此:遍历每个条目并调用getSize()方法
//所有尺寸都已汇总
返回大小;
}
}

您可以尝试以下30天评估构建:


只需解压缩,它就可以工作。您可以编写java代码,同时激活UML类图。易于使用且非常高效。

前面指出的前两项是正确的

下面是我将如何实现您的目录类

import java.util.ArrayList;

public class Directory extends Entry{


ArrayList <Entry> entries = new ArrayList<Entry>();

public Directory(String name)
{
    super(name);
}

public long getSize(){
    long size = 0;
    for(int i=0;i<entries.size();i++)
    {
    //Probably something like this
    size += entries.get(i).getSize();
    }
    return size;
}
}

您走对了。对于Q3,您需要将一个目录与0个或多个条目类型对象关联起来。在Java中,这些关联是通过集合实现的,比如存储关联对象的ArrayList。我猜您的目录类将包含一个集合(可能是ArrayList)getSize方法将循环遍历这些条目(目录和文件)对象,并合计大小(使用文件的getSize方法)和返回总数。您可能应该有一个方法将文件和目录添加到目录类中的文件集合中。您几乎得到了它。当您使用集合时,可以使用Java的foreach表示法:
for(Entry:entries){…}
括号内的“entry”是当前迭代的entry对象,您可以正常调用其方法:
String name=entry.getName();
// A Directory is an Entry and can contain an arbitrary number of other Entry objects
public class Directory extends Entry {

    // you need a collection of Entry objects, like ArrayList<Entry>
    // ArrayList<Entry> entries = ...

    function getSize() {
        long size;
        // now we calculate the sum of all sizes
        // we do not care if the entries are directories or files
        // the respective getSize() methods will automatically do the "right thing"
        // therefore: you iterate through each entry and call the getSize() method
        // all sizes are summed up
        return size;
    }

}
import java.util.ArrayList;

public class Directory extends Entry{


ArrayList <Entry> entries = new ArrayList<Entry>();

public Directory(String name)
{
    super(name);
}

public long getSize(){
    long size = 0;
    for(int i=0;i<entries.size();i++)
    {
    //Probably something like this
    size += entries.get(i).getSize();
    }
    return size;
}
}
public long getSize(){
    long size = 0;
    for( Entry e : entries)
    {
    //Probably something like this
    size += e.getSize();
    }
    return size;
}