题目
(1) 请比较结构化设计方法和面向对象设计方法。(2) 请简述面向对象设计的启发规则。(3) 请简述面向对象的设计[1]原则(4) 请简述系统设计和对象设计。(5) 什么是软件设计模式[2]?常用的软件设计模式有哪些?
(1) 请比较结构化设计方法和面向对象设计方法。
(2) 请简述面向对象设计的启发规则。
(3) 请简述面向对象的设计[1]原则
(4) 请简述系统设计和对象设计。
(5) 什么是软件设计模式[2]?常用的软件设计模式有哪些?
题目解答
答案
结构化设计以数据流和功能模块为核心,强调自顶向下[3]分解;面向对象设计以对象和类为核心,强调数据与行为的封装及交互。面向对象设计的启发规则包括:单一职责、开闭原则、依赖倒置等;设计原则[4]如SOLID原则;系统设计关注整体架构,对象设计关注类与对象的细节;软件设计模式是可复用的解决方案,如单例、工厂、观察者等。
答案: 结构化设计以数据流和功能模块为核心,强调自顶向下分解;面向对象设计以对象和类为核心,强调数据与行为的封装及交互。面向对象设计的启发规则包括:单一职责、开闭原则、依赖倒置等;设计原则如SOLID原则;系统设计关注整体架构,对象设计关注类与对象的细节;软件设计模式是可复用的解决方案,如单例、工厂、观察者等。
解析
本题主要考查软件工程中结构化设计方法、面向对象设计方法、设计原则、系统设计与对象设计以及软件设计模式等相关知识。解题思路是依据软件工程的基本概念和理论,对每个问题进行针对性的阐述。
- 比较结构化设计方法和面向对象设计方法:
- 结构化设计方法:它以数据流和功能模块为核心,采用自顶向下的方式进行系统设计。自顶向下是指从系统的整体功能出发,逐步将其分解为更小的、更易于管理的子功能模块。例如,在设计一个图书管理系统时,首先将整个系统的功能划分为图书借阅、图书归还、图书管理等几个大的模块,然后再对每个大模块进一步细分。
- 面向对象设计方法:以对象和类为核心,强调将数据和对数据的操作(行为)封装在一起,形成对象。对象之间通过消息传递进行交互。比如在图书管理系统中,将图书、读者、管理员等抽象为对象,每个对象有自己的属性(如图书的书名、作者,读者的姓名、学号等)和方法(如图书的借阅方法、读者的注册方法等)。
- 简述面向对象设计的启发规则:
- 单一职责原则:一个类应该只有一个引起它变化的原因。也就是说,一个类只负责一项职责。例如,一个类只负责处理用户的登录功能,而不应该同时处理用户的注册和登录功能。
- 开闭原则:软件实体(类、模块、函数等)应该对扩展开放,对修改关闭。当需要增加新功能时,应该通过扩展现有代码来实现,而不是修改已有的代码。比如,在一个图形绘制系统中,当需要增加一种新的图形(如圆形)时,只需要创建一个新的圆形类,而不需要修改已有的图形绘制类。
- 依赖倒置原则:高层模块不应该依赖低层模块,二者都应该依赖抽象。抽象不应该依赖细节,细节应该依赖抽象。例如,在一个电商系统中,订单处理模块不应该直接依赖具体的支付方式(如支付宝支付、微信支付),而是依赖一个支付接口,具体的支付方式实现这个接口。
- 简述面向对象的设计原则:
- SOLID原则是面向对象设计中非常重要的一组原则,它包含了单一职责原则(Single Responsibility Principle)、开闭原则(Open - Closed Principle)、里氏替换原则(Liskov Substitution Principle)、接口隔离原则(Interface Segregation Principle)和依赖倒置原则(Dependency Inversion Principle)。里氏替换原则要求子类可以替换父类并且出现在父类能够出现的任何地方,而不影响系统的正确性;接口隔离原则强调客户端不应该依赖它不需要的接口;依赖倒置原则前面已经介绍过。
- 简述系统设计和对象设计:
- 系统设计:关注系统的整体架构,包括系统的模块划分、模块之间的关系、系统的数据流和控制流等。它从宏观的角度对系统进行规划,确定系统的总体结构和功能。例如,在设计一个企业信息管理系统时,系统设计要确定系统分为哪些子系统(如人力资源管理子系统、财务管理子系统等),以及这些子系统之间如何进行数据交互和协同工作。
- 对象设计:关注类与对象的细节,包括类的属性、方法、类之间的关系(如继承、组合、关联等)。它是在系统设计的基础上,对系统中的各个对象进行具体的设计和实现。比如,在企业信息管理系统中,对象设计要确定员工类的属性(如姓名、年龄、职位等)和方法(如考勤方法、绩效评估方法等),以及员工类与部门类之间的关联关系。
- 什么是软件设计模式?常用的软件设计模式有哪些?
- 软件设计模式是在软件开发过程中,针对特定问题的可复用的解决方案。它是对软件设计经验的总结,提供了一种通用的设计思路和模板,使得开发者可以在不同的项目中快速、有效地解决类似的问题。
- 常用的软件设计模式有:
- 单例模式:确保一个类只有一个实例,并提供一个全局访问点来获取这个实例。例如,在一个应用程序中,只需要一个配置管理器实例,就可以使用单例模式来实现。
- 工厂模式:定义一个创建对象的接口,让子类决定实例化哪个类。它将对象的创建和使用分离,提高了代码的可维护性和可扩展性。比如,在一个图形绘制系统中,使用工厂模式可以根据不同的图形类型创建相应的图形对象。
- 观察者模式:定义了一种一对多的依赖关系,当一个对象的状态发生变化时,所有依赖它的对象都会得到通知并自动更新。例如,在一个新闻推送系统中,新闻发布者是被观察者,订阅者是观察者,当有新的新闻发布时,所有订阅者都会收到通知。