首页 > 其他分享 >软件设计模式与体系结构之运算器的设计

软件设计模式与体系结构之运算器的设计

时间:2024-01-04 12:05:55浏览次数:34  
标签:num1 num2 软件设计 double getResult result public 运算器 体系结构

实验目的与要求 深刻理解面向对象编程思想与设计原则,熟悉Java语言中类的声明、属性的声明、方法的定义、对象的创建与使用等语法知识,能够根据具体问题完成对象的抽象、类的定义及程序的编写,并在程序中使用适当的设计原则,初步体验面向对象编程的优点。 实验内容 使用Java语言编写一个能实现“加、减、乘、除”四则运算的计算器程序。 要求: (1)在程序中要体现面向对象编程语言的三大特征:封装、继承和多态。 (2)该程序要易于扩展和复用。以后可以方便地增加新的运算;程序的业务逻辑与界面部分要实现分离,便于业务逻辑的复用。 (3)使用UML类图描述程序的结构。 (4)指出你所设计的程序符合哪些设计原则。

UML类图 image.png 实现代码

Calculator类(计算器类):
public class Calculator {
    public double num1;
    public double num2;
    public Calculator(double num1, double num2) {
        this.num1=num1;
        this.num2=num2;
    }
    public double getResult() {
        return 0;
    }
}
Add类(加法类):
public class Add extends Calculator{
    public Add(double num1,double num2) {
        super(num1,num2);
    }
    public double getResult() {
        return num1+num2;
    }
}
Sub类(减法类):
public class Sub  extends Calculator{
    public Sub(double num1,double num2) {
        super(num1,num2);
    }
    public double getResult() {
        return num1-num2;
    }
}
Mul类(乘法类):
public class Mul extends Calculator{
    public Mul(double num1,double num2) {
        super(num1,num2);
    }
    public double getResult() {
        return num1*num2;
    }
}
Div类(除法类):
public class Div extends Calculator{
    public Div(double num1,double num2) {
        super(num1,num2);
    }
    public double getResult() {
        return num1/num2;
    }
}
Oper类(操作类):
public class Oper {
    public static void main(String[] args) {
        Calculator calculator=new Add(1,2);
        double result = calculator.getResult();
        System.out.println(result);
        calculator=new Sub(1,2);
        result = calculator.getResult();
        System.out.println(result);
        calculator=new Mul(1,2);
        result = calculator.getResult();
        System.out.println(result);
        calculator=new Div(1,2);
        result = calculator.getResult();
        System.out.println(result);
    }
}

问题思考:你所设计的程序符合哪些设计原则? 开闭原则、里氏替换原则、单一职责

标签:num1,num2,软件设计,double,getResult,result,public,运算器,体系结构
From: https://blog.51cto.com/histry/9098294

相关文章

  • 软件设计模式与体系结构之简单工厂模式和工厂方法模式
    一、实验目的掌握简单工厂模式和工厂方法模式的概念,能够灵活使用简单工厂模式和工厂方法模式解决相关问题。二、实验内容场景描述一:在某OA系统中,系统根据对比用户在登录时输入的账号和密码以及在数据库中存储的账号和密码是否一致来进行身份验证,如果验证通过,则取出存储在数据......
  • 软件设计模式与体系结构之抽象工厂模式与建造者模式
    实验三:抽象工厂模式与建造者模式一、实验目的掌握抽象工厂模式和建造者模式的概念,能够灵活使用抽象工厂模式和建造者模式解决相关问题。二、实验内容场景描述一:某手机游戏软件公司欲推出一款新的游戏软件,该软件能够支持Symbian和Android等多个主流的手机操作系统平台,针对不同......
  • 系统架构设计师-第1章计算机组成与体系结构
    第1章计算机组成与体系结构1.计算机系统组成计算机系统是一个硬件和软件的综合体,可以把它看成按功能划分的多级层次结构。系统软件支持应用软件的运行,为用户开发应用软件提供平台,用户可以使用它,但不能随意修改它。常用的系统软件有操作系统、语言处理程序、连接程序、诊断程序......
  • 软件设计19
    [实验任务一]:虚拟聊天室在“虚拟聊天室”实例中增加一个新的具体聊天室类和一个新的具体会员类,要求如下:1.新的具体聊天室中发送的图片大小不得超过20M。2.新的具体聊天室中发送的文字长度不得超过100个字符。3.新的具体会员类可以发送图片信息和文本信息。4.新的具体会员......
  • 《简约之美 软件设计之道》读后感二
    第四章未来软件设计师面对的主要问题是:在设计软件时,应该做怎样的决定?面对的众多可能,哪一个才是最好的。不要绝对好坏,而是哪些更好,是个排序问题,我们要做的是从所有可能中选出最好的决定。比如,眼前功能100项,但我们的人力只能够完成2项。应该选哪2项呢?软件设计的方程式:上面的问题,......
  • 02-Mysql体系结构
    一、MySQL服务器连接模型2、应用程序如何连接到mysql2.1tcp/ip的方式mysql-uroot-poldboy123-h10.0.0.2002.2套接字的方式mysql-uroot-poldboy123-S/tmp/mysql.sock二、MySQL服务器构成——实例连接层sql层处理流程解析器(执行计划)--优化器(选择比......
  • 软件设计16
    [实验任务一]:多次撤销和重复的命令模式某系统需要提供一个命令集合(注:可以使用链表,栈等集合对象实现),用于存储一系列命令对象,并通过该命令集合实现多次undo()和redo()操作,可以使用加法运算来模拟实现。实验要求:1. 提交类图;  2. 提交源代码;JAVApackagetext01;importj......
  • 软件设计15
    [实验任务一]:财务审批某物资管理系统中物资采购需要分级审批,主任可以审批1万元及以下的采购单,部门经理可以审批5万元及以下的采购单,副总经理可以审批10万元及以下的采购单,总经理可以审批20万元及以下的采购单,20万元以上的采购单需要开职工大会确定。现用职责链模式设计该系统。......
  • 《简约之美 软件设计之道》读后感(一)
    前三章程序究竟是什么?1)给计算机的一系列指令2)计算机依据指令进行的操作第一种定义是程序员写程序时所用的第二种是使用程序的普通用户所用的程序员面对的是字母和符号,用户看到的是最终结果--计算机执行的操作。所以,计算机程序其实是这两者的混合体:程序员的指令,计算机执行的操作。......
  • 费控系统的设计和实现涉及到许多方面,包括需求分析、软件设计、开发等。在Python中,我们
    费控系统的设计和实现涉及到许多方面,包括需求分析、软件设计、开发等。在Python中,我们可以使用各种库和框架来帮助我们实现这样的系统。以下是一个基本的费控系统设计思路¹:classFeeControlSystem:def__init__(self):self.expenses=[]defadd_expense(self......