gpt4 book ai didi

java - 需要制作一个java程序将UML图转换为netbeans上的java类

转载 作者:太空宇宙 更新时间:2023-11-04 14:03:18 25 4
gpt4 key购买 nike

我只是想快速制作一个java文件(使用Netbeans IDE 8.0)将两个UML图转换为我已经编写的java文件。

注意:该类实际上不必与所有 UML 图通用,但它只需要与这两个图一起使用。

UML图是:CarUML.txt

Car
===================
- cost : int
- color : String
- make : String
+ count : int
===================
+ Car ( int cost )
===================

和PetUML.txt

Pet
===================
- species : String
+ isChipped : boolean
- name : String
- age : int
===================
+ Pet ( String name )
===================

我只想要一个能够输出以下内容的文件:

Pet.java

package UMLconv;

public class Pet {
private String species;
private String name;
private int age;

public Pet (String name) {
this.name = name;
}

}

和Car.java

package UMLconv;

public class Car {
private int cost;
private String color;
private String make;
public int count;

public Car (int cost) {
this.cost = cost;
}

}

这就是我现在所拥有的:

import java.util.Scanner;

public class CodeFromPseudo {



public static void main(String[] args) {



Scanner scan = new Scanner(
CodeFromPseudo.class.getResourceAsStream("CarUML.txt"));

//Scanner scan = new Scanner(CodeFromPseudo.class.getResourceAsStream("PetUML.txt"));

String line;

String [] words;

while(scan.hasNextLine()){

line = scan.next();

System.out.printf("public class %s {\n",line);

scan.nextLine();
scan.nextLine();


for (int i = 0; i < 4; i++) {

words = scan.nextLine().split("\\s+");

System.out.print((words[0].contains("-")) ? "private" : "public");

System.out.printf(" %s %s;\n\n", words[3],words[1]);

}

scan.nextLine();



words = scan.nextLine().split("\\s+");

System.out.print((words[0].contains("-")) ? "private " : "public ");

System.out.printf("%s (%s %s) {\n",words[1],words[3],words[4]);

System.out.printf("this.%s = %s;\n",words[4],words[4]);

System.out.println("}\n}");




scan.nextLine();

}

}


}

不确定我现在缺少什么?谢谢

最佳答案

本质上,您正在尝试编写一个代码生成器。我是 BITPlan 的首席架构师,该公司提供创建发电机的工具,请参阅 http://www.smartgenerator.org

有一些工具可用于此任务,但您也可以从头开始。你的开始没问题。您正在读取输入并尝试直接输出您得到的内容。您可能希望将代码拆分为多个部分,而不是执行这一一步方法:

  1. 扫描输入并将相关部分类和属性名称读取到相应的 java 类结构 jclass/jattributes/joperations
  2. 进行任何必要的修改(在您的情况下,此步骤可能是不必要的,因为您的所有类和属性名称似乎都是有效的)
  3. 从结构中创建 java 代码

鉴于您的输入有限,您可能不会使用这种方法走得太远 - 您当前只有属性的可见性名称和类型,但例如没有文档。作为练习可能没问题。

这里有一些粗略的代码,可以提示您如何继续:

/**
* i represent a Java class with its attribute
*/
public class JClass {
public String name;
public String documentation;
// class JAttribute needs to be defined with
// visibility, name, type and documentation fields
public List<JAttribute> attributes();
// do the same approache with operations
public List<JOperation> operations();

public String asJavaCode {
String code="";
code+="/**
code+=" * "+documentation;
code+=" */";
code+="public class "+name+" {\n";
code+="//members";
for (JAttribute attribute:attributes) {
code+="// "+atttribute.documentation;
code+=attribute.visibility+" "+attribute.type+" "+attribute.name+";"
// add generation of getters and setters here as you see fit
}
// add operation handling here
code+="}";
}
// add code for adding attributes
}

关于java - 需要制作一个java程序将UML图转换为netbeans上的java类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29105888/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com