gpt4 book ai didi

user-interface - 将接口(interface)与逻辑分离 - Java

转载 作者:行者123 更新时间:2023-12-04 04:50:37 25 4
gpt4 key购买 nike

我对编程很陌生,我想就这个概念获得帮助/指导 - “将用户界面与逻辑分开”。我被分配了一个设计货币转换器的简单任务(它几乎是一个非常基本的代码,因为它要求转换率 - 但这是给定的规范),下面是我使用的代码:

public class CurrencyConverter 

{
public static void main(String[] args) 
{

System.out.println("Welcome to Currency converter!" + "\n");
System.out.println("Please select an option below: ");
System.out.println("1 >> Pound to Euro " +
"\n2 >> Euro to Pound");


Scanner s = new Scanner(System.in);
String selection = s.next();

switch (selection)
{
case "1":
System.out.println("Enter the conversion rate from Pound to Euro");
break;
case "2":
System.out.println("Enter the conversion rate from Euro to Pound");
break;
}
Scanner rate = new Scanner(System.in);
double conversionRate = rate.nextDouble();

System.out.println("Now enter the amount to be converted: ");

Scanner input = new Scanner(System.in);
double amount = input.nextDouble();

double totalValue = conversionRate * amount;
System.out.println(totalValue);
}

有一个特定的指令不要这样做(即只有一个类)并且不要使用 GUI。将使用两个类,一个用于用户界面,另一个用于转换(逻辑)。我尝试将下面的代码放在第二类“转换”中,但它不起作用。
double totalValue = conversionRate * amount;

任何提示/帮助将不胜感激!顺便说一句,如果你知道如何使用 GUI 来做这件事,那也会很有帮助。但当然,我的主要问题是上述问题。

谢谢。

最佳答案

将 ui 与逻辑分离可以提高代码的可伸缩性和可读性。在您的情况下,一个类应该提供支持与用户交互的方法,以提供必要的数据和其他将处理转换过程的方法。两个类不应该相互了解。

例如 ui 可以如下实现:

public class ConverterUI {



public Double askForConversionRate() {

System.out.println("Welcome to Currency converter!" + "\n");
System.out.println("Please select an option below: ");
System.out.println("1 >> Pound to Euro "
+ "\n2 >> Euro to Pound");

Scanner s = new Scanner(System.in);
String selection = s.next();

switch (selection) {
case "1":
System.out.println("Enter the conversion rate from Pound to Euro");
break;
case "2":
System.out.println("Enter the conversion rate from Euro to Pound");
break;
}
Scanner rate = new Scanner(System.in);
return rate.nextDouble();
}

public Double askForAmountToConvert() {
System.out.println("Now enter the amount to be converted: ");
Scanner input = new Scanner(System.in);
return input.nextDouble();
}

public void showResult(Double result) {
System.out.println("Convertion result is: " + result);
}

}

它具有三种简单的方法,您可以使用它们从用户那里获取数据,但没有关于如何处理它的信息。转换器类负责这部分:

public class Converter {



private Double conversionRate;
private Double amount;

public Double convert() {
return conversionRate * amount;
}

public void setConversionRate(Double conversionRate) {
this.conversionRate = conversionRate;
}

public void setAmount(Double amount) {
this.amount = amount;
}

}

它允许您设置转换率和金额值,并使用 convert() 方法进行一些计算。它不需要知道数据的来源是什么——你应该支持有效的参数,它会提供响应。

在这种情况下,主类可能如下所示:
public class Main {

public static void main(String[] args) {
ConverterUI ui = new ConverterUI();
Converter converter = new Converter();

Double convertionRate = ui.askForConversionRate();
converter.setConversionRate(convertionRate);

Double amount = ui.askForAmountToConvert();
converter.setAmount(amount);

Double result = converter.convert();
ui.showResult(result);
}

}

我们创建了两个对象——ui 和转换器。调用 ui 方法提供设置给转换器的数据,并将转换结果传回 ui 以通知用户。

这种方法允许您添加新的 UI(定义一个接口(interface)将是一个好主意)和转换器实现,而无需编辑现有的。

关于user-interface - 将接口(interface)与逻辑分离 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17515784/

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