Closed. This question is off-topic。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
                        
                        6年前关闭。
                                                                                            
                
        
我是UML类图的新手。有人可以向我解释如何从此Java代码中提取一个吗?我一直在阅读有关UML类图的信息,但是由于所使用的示例,我无法理解它。所以我想知道有人能告诉我如何用自己的代码制作UML类图。

package UserName;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Calendar;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;


public class UserName extends JFrame implements ActionListener {

    JTextField fname = new JTextField();
    JTextField lname = new JTextField();
    JTextField uname = new JTextField();
    JTextField email = new JTextField();
    JTextArea dataArea = new JTextArea(20, 50);
    JButton save = new JButton("Save");


    Student student[] = new Student[20];
    int count = 0;


    public UserName() {
        this.setLayout(new BorderLayout());
        JPanel fieldPanel = new JPanel();
        fieldPanel.setLayout(new GridLayout(2, 4));
        fieldPanel.add(new JLabel("Firstname"));
        fieldPanel.add(fname);
        fieldPanel.add(new JLabel("Username"));
        fieldPanel.add(uname);
        fieldPanel.add(new JLabel("Lastname"));
        fieldPanel.add(lname);
        fieldPanel.add(new JLabel("Email"));
        fieldPanel.add(email);
        email.setEnabled(false);
        uname.setEnabled(false);
        email.setDisabledTextColor(Color.BLACK);

        uname.setDisabledTextColor(Color.BLACK);

        this.add(fieldPanel, BorderLayout.NORTH);
        this.add(new JScrollPane(dataArea), BorderLayout.CENTER);
        this.add(save, BorderLayout.SOUTH);
        save.addActionListener(this);
    }

    public static void main(String[] args) {
        UserName namn = new UserName();
        namn.pack();
        namn.setVisible(true);
        namn.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }


    @Override
    public void actionPerformed(ActionEvent ae) {
        if (count == 20) {
            JOptionPane.showMessageDialog(null, "There are 20 students!");
            return;
        }
        Student s = new Student();
        s.fName = fname.getText();
        s.eName = lname.getText();
        Calendar cal = Calendar.getInstance();
        int iYear = cal.get(Calendar.YEAR);
        String year = (iYear + "").substring(2);
        s.Uname = "a" + year + s.fName.substring(0, 3).toLowerCase() + s.eName.substring(0, 3).toLowerCase();
        s.eMail = s.Uname + "@ltu.com";
        student[count] = s;
        count++;
        dataArea.setText("");
        for (int i = 0; i < count; i++) {
            dataArea.append(student[i].toString() + "\n");
        }

        uname.setText(s.Uname);
        email.setText(s.eMail);
    }
}

class Student {

    String fName;
    String eName;
    String Uname;
    String eMail;


    @Override
    public String toString() {
        return "Firstname: " + fName + " Lastname: " + eName + " Username: " + Uname + ", Email: " + eMail;
    }

}


我也想知道我应该使用什么软件来创建UML图。提前致谢。

最佳答案

我可以使用的一大免费软件是ArgoUML(http://argouml.tigris.org/)。这将允许您输入所有类,变量和方法以及这些类之间的关系,以生成UML类图。

在尝试使用ArgoUML之前,您必须首先了解UML类图的工作以及UML的外观。但是,使用ArgoUML应该可以帮助您理解在代码和图表之间进行的转换。

在您的情况下,这将是一个非常简单的包含两个类的UML类图。只需在ArgoUML中创建类,开始添加变量和方法,它将很快变得有意义(我希望!)。

07-24 09:18