gpt4 book ai didi

java - 简单的 UML 图...这个布局正确吗?

转载 作者:搜寻专家 更新时间:2023-11-01 03:24:47 25 4
gpt4 key购买 nike

我第一次为 Java 入门类(class)创建 UML 图。我无法弄清楚我的类(class)是否正确地指向彼此。

Guitar 类应该指向测试类吗?另外,吉他课应该在测试课的左边吗?非常感谢任何指点,谢谢。

enter image description here My UML diagram hosted on ImageShack(我没有足够的引用点来插入图像)

代码如下

package guitartest;

import java.util.Scanner;

public class Guitar {

// Declare variables
private int numberOfStrings;
private String stringName;
private boolean isTuned;
private boolean isPlaying;
private boolean isPlucking;


// Construct a guitar and set boolean fields to "false"
public Guitar(){
this.isTuned = false;
this.isPlaying = false;
this.isPlucking = false;
} // end constructor


// Prompt user to enter number of strings
public int getNumberOfStrings() {
Scanner sc = new Scanner(System.in);

// Loop continues until a positive integer is entered
do {
System.out.println("Enter number of strings in integer format");
while (!sc.hasNextInt()) {
System.out.println("Error! That's not a number!");
sc.next();
} // end while
numberOfStrings = sc.nextInt();
} // end do-while loop
while (numberOfStrings <= 0);
return numberOfStrings;
} // end method getNumberOfStrings

// Prompt user to enter string names
public String getStringName() {
Scanner sc = new Scanner(System.in);

// Loop continues until all strings are named
for (int i = 0; i < numberOfStrings; i++){
System.out.println("Enter string name");
// Error if input is not a character
while (!sc.hasNext("[A-Za-z]")) {
System.out.println("Error! That's not a character!");
sc.next();
}
stringName = sc.next();
} // end for loop
return stringName;
} // end method getStringName

// Verifies tuning status
public boolean tuneInstrument(){
return isTuned;
} // end method tuneInstrument

// Tune guitar
public void setTuned(boolean isTuned) {
this.isTuned = isTuned;
} // end method setTuned

// Verifies instrument is playing
public boolean playInstrument(){
return isPlaying;
} // end method playInstrument

//
public void startPlayingInstrument(){
isPlaying = true;
} // end method startPlayingInstrument

public boolean pluckInstrument(){
return isPlucking;
} // end method pluckInstrument

public void startPlucking(){
isPlucking = true;
} // end method startPlucking

// Stop instrument
public void stopInstrument(){
isPlaying = false;
} // end method stopInstrument

} // end class Guitar

测试类如下:

package guitartest;

import java.util.Scanner;
// Scanner is in the java.util package

public class GuitarTest {

public static void main(String[] args) {

// Create 10 guitar objects
Guitar[] guitar = new Guitar[10];

for (int i = 0; i < guitar.length; i++){
guitar[i] = new Guitar();


// Call methods in Guitar class
guitar[i].getNumberOfStrings();
guitar[i].getStringName();

System.out.println("Is the guitar tuned? " + guitar[i].tuneInstrument());
System.out.println("Guitar is being tuned. Please wait...");
guitar[i].setTuned(true);
System.out.println("Is the guitar tuned? " + guitar[i].tuneInstrument());

System.out.println("Is the guitar playing? " + guitar[i].playInstrument());
System.out.println("Please wait for guitar to play...");
guitar[i].startPlayingInstrument();
System.out.println("Is the guitar playing? " + guitar[i].playInstrument());

System.out.println("Is the guitar being plucked? " + guitar[i].pluckInstrument());
System.out.println("Please wait for guitar to be plucked...");
guitar[i].startPlucking();
System.out.println("The guitar is playing and being plucked. " + guitar[i].pluckInstrument());

System.out.println("Stopping guitar from playing...");
guitar[i].stopInstrument();
System.out.println("Is the guitar playing? " + guitar[i].playInstrument());
} // end for loop

} // end method main


} // end class GuitarTest

最佳答案

GuitarTest 和 Guitar 类不应该有关联关系。

如果您有一个“GuitarCase”类(和一个“Cover”类)定义如下:

public class GuitarCase{
public Guitar g;
public Cover c = new Cover();
}

那么应该有一个从 GuitarCase 到 Guitar 的关联,关联端(在 Guitar 端)有角色“g”;从GuitarCase到Cover应该有一个Composition,关联端(在cover端)有角色“c”;

我什至不想在图表上显示 GuitarTest,因为您可以将主要功能放在 Guitar 本身中。

关于java - 简单的 UML 图...这个布局正确吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17517001/

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