zl程序教程

您现在的位置是:首页 >  工具

当前栏目

1、使用简单工厂模式设计能够实现包含加法(+)、减法(-)、乘法(*)、除法(/)四种运算的计算机程序,要求输入两个数和运算符,得到运算结果。要求使用相关的工具绘制UML类图并严格按照类图的设计编写程

工具输入模式 实现 简单 设计 相关 编写
2023-09-27 14:26:42 时间

1、使用简单工厂模式设计能够实现包含加法(+)、减法(-)、乘法(*)、除法(/)四种运算的计算机程序,要求输入两个数和运算符,得到运算结果。要求使用相关的工具绘制UML类图并严格按照类图的设计编写程序实现。

UML类图
简单工厂uml类图
源码:

抽象产品接口

package bao_1;

public interface Act {
	public double yunsuan(double a,double b);

}

具体产品:

package bao_1;

public class Chen implements Act {


	@Override
	public double yunsuan(double a, double b) {
		// TODO 自动生成的方法存根	
		return a*b;
	}

}

package bao_1;

public class Chu implements Act {
	double c = 0;

	@Override
	public double yunsuan(double a, double b) {
		// TODO 自动生成的方法存根

		if(b==0) {
			System.out.println("分母不能为零");
			return 0;
		}
		return a/b;
	}

}
package bao_1;

public class Jia implements Act {


	@Override
	public double yunsuan(double a, double b) {
		// TODO 自动生成的方法存根
		return a+b;
	}
	

}

package bao_1;

public class Jian implements Act {

	
	@Override
	public double yunsuan(double a, double b) {
		// TODO 自动生成的方法存根
		
		return a-b;
	}

}

工厂生产产品:

package bao_1;

public class ActFactory {
	public static Act getAct(String type) {
		Act act = null;
		if (type.equalsIgnoreCase("+")) {
			act = new Jia();// 调用加法运算,创建对象
		} else if (type.equalsIgnoreCase("-")) {
			act = new Jian();// 创建减法对象
		} else if (type.equalsIgnoreCase("*")) {
			act = new Chen();// 创建乘法对象
		} else if (type.equalsIgnoreCase("/")) {
			act = new Chu();// 创建除法对象

		} else {
			System.out.println("您输入的运算符不合法,请输入正确的运算符");
		}
		return act;
	}

}

测试

package bao_1;

import java.util.Scanner;

public class Client {

	public static void main(String[] args) {

		while (true) {
			Scanner scan = new Scanner(System.in);
			System.out.println("请输入运算符:");
			String type = scan.next();
			System.out.println("请输入第一个数字");

			if (scan.hasNext("\\d+(\\.\\d+)?")) { // 正则验证
				String bir1 = scan.next("\\d+(\\.\\d+)?"); // 接收数据
				double num1 = Double.parseDouble(bir1); // 类型转换
				System.out.println("请输入第二个数字");
				if (scan.hasNext("\\d+(\\.\\d+)?")) { // 正则验证
					String bir2 = scan.next("\\d+(\\.\\d+)?"); // 接收数据
					double num2 = Double.parseDouble(bir2); // 类型转换
					Act action = ActFactory.getAct(type);// 创建运算符的实例对象
					System.out.println(action.yunsuan(num1, num2));

				} else {
					System.out.println("输入的字符包含非数字,请输入正确的字符");
				}

			} else {
				System.out.println("输入的字符包含非数字,请输入正确的字符");
			}

			System.out.println("结束请按-1");
			double x = scan.nextInt();
			if (x == -1)
				break;
		}

	}
}

简单工厂:抽象产品接口,把具体产品的一些特征抽象出来,具体产品继承这个接口,实现具体的方法。工厂生产产品,不是很符合开闭原则。