10.8

一. 单选题(共2题,28.5分)

1. (单选题)软件工程的一个独特性是()的变迁。

  • A. 需求到设计、从设计到实现
  • B. 编码到测试、从测试到用户
  • C. 分析到设计、从设计到程序
  • D. 编码到测试、从测试到上线
我的答案: A:需求到设计、从设计到实现;
 

2. (单选题)抽象的目的是

  • A. 确定属性和行为的关系
  • B. 获取全部实体属性
  • C. 完成类的设计
  • D. 通过把相关的属性和其他不相关的属性分开
我的答案: D:通过把相关的属性和其他不相关的属性分开;
 

二. 多选题(共4题,57.2分)

3. (多选题)Java中的数据类型包括

  • A. 结构类型
  • B. 内置类型
  • C. 原子类型
  • D. 外部类型
我的答案: AB:结构类型; 内置类型;
 

4. (多选题)Java中的访问权限包括:

  • A. 私有
  • B. 保护
  • C. 公有
  • D. 包
我的答案: ABCD:私有; 保护; 公有; 包;
 

5. (多选题)面向对象常用技术包括:

  • A. 继承
  • B. 封装
  • C. 多态
  • D. 抽象
我的答案: ABCD:继承; 封装; 多态; 抽象;
 

6. (多选题)面向对象中常见的类关系包括:

  • A. 共享
  • B. 继承
  • C. 聚合
  • D. 关联
我的答案: BC:继承; 聚合;
 

三. 简答题(共1题,14.3分)

7. (简答题)请根据面向对象的设计思想,对加减法混合软件进行类的设计。请提交类的设计思路,包括:都需要哪些类,每个的属性和方法都包括哪些,给出类的源代码。

我的答案:
 

类设计思路 Operation(操作类):这是一个抽象类,用于定义加法和减法操作的共同接口。 

 属性:无 方法:execute(): 抽象方法,用于执行具体的操作(加法或减法)。 

Addition(加法类):继承自Operation类,实现加法操作。 

 属性:无 

 方法:execute(int a, int b): 执行加法操作,返回结果。 

Subtraction(减法类):继承自Operation类,实现减法操作。 

 属性:无 

 方法:execute(int a, int b): 执行减法操作,返回结果。 

Calculator(计算器类):这个类用于管理操作,并允许用户执行加法和减法。 

 属性:List<Operation> operations: 存储操作对象的列表。 

 方法:addOperation(Operation op): 添加一个操作到列表中。 

calculate(): 遍历操作列表,执行每个操作,并返回总结果。

 reset(): 清空操作列表。 

 

 

类的源代码 

// Operation.java

 abstract class Operation { 

 // 抽象方法,用于执行具体的操作 

   public abstract int execute(int a, int b); 

 } 

 // Addition.java

 class Addition extends Operation {

    @Override  

    public int execute(int a, int b) {

       return a + b; 

    } 

    } 

 // Subtraction.java

 class Subtraction extends Operation { 

   @Override

   public int execute(int a, int b) { 

     return a - b; 

    } 

 } 

 // Calculator.java

 import java.util.ArrayList;

 import java.util.List; 

 class Calculator {

  private List<Operation> operations = new ArrayList<>(); 

    private int total = 0; 

 // 添加一个操作到列表中 

   public void addOperation(Operation op) {

   operations.add(op); 

 } 

 // 遍历操作列表,执行每个操作,并返回总结果

 // 注意:这里假设每次只传入两个操作数,并且连续执行 

 // 在实际应用中,可能需要更复杂的状态管理 

   public int calculate(int a, int b) {

   total = 0; 

// 重置总结果 

   for (Operation op : operations) { 

   total = op.execute(total, (operations.indexOf(op) % 2 == 0 ? a : b)); 

 // 这里简单模拟了交替使用a和b作为操作数 

 // 实际应用中需要根据具体需求调整逻辑 

   } 

 // 注意:这个简单的实现逻辑可能不符合所有加减法混合运算的场景 

 // 它只是为了演示类的设计和使用          return total; 

 } 

 // 清空操作列表

   public void reset() {

   operations.clear(); 

   total = 0; 

   }

 }

 // 测试代码(可以在main方法中测试) 

 public class Main { 

   public static void main(String[] args) { 

    Calculator calculator = new Calculator(); 

 // 添加加法操作 

    calculator.addOperation(new Addition()); 

 // 添加减法操作

    calculator.addOperation(new Subtraction());

 // 执行计算(这里假设初始值为5和3,并且按照添加操作的顺序执行) 

 // 注意:这个简单的例子可能无法正确处理复杂的加减法混合运算 

 // 它只是为了演示类的基本使用 

    int result = calculator.calculate(5, 3); 

 // 输出结果 

    System.out.println("Result: " + result); 

// 输出可能不符合预期,因为逻辑简单 

 // 重置计算器 

     calculator.reset(); 

   } 

 }

posted @ 2024-10-16 17:44  七安。  阅读(22)  评论(0)    收藏  举报