核心概念
概念 | 含义说明 |
---|---|
对象(Object) | 现实世界事物的抽象表示,包含属性(状态)和方法(行为) |
类(Class) | 一类对象的抽象模板 |
继承(Inheritance) | 子类继承父类的属性和行为,实现代码复用 |
封装(Encapsulation) | 将数据与操作封装在一起,隐藏实现细节,提供接口 |
多态(Polymorphism) | 同一接口,不同实现,提高扩展性与灵活性 |
抽象(Abstraction) | 抽取共性,屏蔽复杂实现,关注接口而非实现 |
本系统采用面向对象设计思想(OOD) ,通过对业务实体的抽象建模,提高系统的可复用性、可扩展性和可维护性。主要体现在以下方面:
- 对象建模 :将系统中的关键业务元素抽象为类(如用户、订单、支付等),每个类包含其属性和操作,体现高内聚;
- 封装性设计:对外提供公共接口,内部数据通过 getter/setter 控制访问,保护类内部状态;
- 继承结构优化:通过父类抽取共性方法,子类继承并重写,减少冗余代码;
- 多态使用 :接口 + 实现类组合,便于后续增加新行为而无需修改原有代码,实现开闭原则;
- 使用设计模式:如采用工厂模式实现对象创建,策略模式实现算法切换,增强灵活性。
主要原则(五大原则 SOLID)
原则 | 含义与目的 | 典型应用 |
---|---|---|
S - 单一职责原则 | 每个类只负责一项功能 | 控制类拆分、低耦合 |
O - 开闭原则 | 对扩展开放,对修改关闭 | 使用接口、多态 |
L - 里氏替换原则 | 子类可以替换父类,功能不受影响 | 避免违反继承契约 |
I - 接口隔离原则 | 不应强迫类依赖它不使用的方法 | 拆分接口 |
D - 依赖倒置原则 | 面向抽象编程,依赖接口而非具体实现 | 依赖注入、工厂模式 |
面向对象设计模式(可用于写作题举例)
类别 | 模式名称 | 典型用途 |
---|---|---|
创建型 | 工厂方法、单例、建造者 | 控制对象创建过程 |
结构型 | 适配器、桥接、装饰、代理 | 简化结构,解耦对象 |
行为型 | 策略、观察者、状态、模板 | 控制行为变化、通信 |
类图(UML)常用符号速记
- 类图表示:
+ public
,- private
,# protected
- 继承:实线空心三角箭头
- 实现:虚线空心三角箭头
- 组合:实线菱形 → 强拥有
- 聚合:空心菱形 → 弱拥有
- 关联:实线 → 双方持有引用
- 依赖:虚线 → 使用而非持有
类的类型
类的分类方式概述
在面向对象设计中,根据类的职责、作用和结构功能,常将类划分为以下几种典型类型:
类别 | 定义/说明 | 示例 |
---|---|---|
实体类(Entity) | 用于封装系统中与业务对象相关的数据和行为 | 订单类、学生类、账户类 |
控制类(Control) | 负责处理业务逻辑,协调实体类与界面类的交互 | 订单管理类、支付处理类 |
边界类(Boundary) | 负责与系统外部交互,如用户界面、外部系统接口 | 用户界面类、API 网关类 |
抽象类(Abstract) | 不可实例化,仅用于继承和统一接口 | 抽象图形类(Shape)、接口类 |
工具类(Utility) | 提供通用静态方法,无状态、无对象行为 | StringUtil、DateHelper |
数据访问类(DAO) | 专门用于访问数据库,负责 CRUD 操作 | UserDAO、OrderDAO |
配置类 | 封装系统配置、参数信息 | Config、Settings |
核心三类(UML中常见分类)
在 UML 和面向对象分析设计(如 OOA/OOD)中,最常见的是"实体类、边界类、控制类"三类角色划分,如下:
实体类(Entity Class)
- 职责:负责封装业务对象的属性和行为;
- 特点:通常与数据库表结构一一对应;
- 示例 :
Customer
、Invoice
、Product
等; - 在类图中:通常较为核心,具有属性与方法。
边界类(Boundary Class)
- 职责:用于处理系统与外部(如用户、设备、系统)之间的交互;
- 表现形式:GUI 界面类、API 接口类;
- 示例 :
LoginPage
、PaymentAPI
; - 在用例图中:常与参与者关联。
控制类(Control Class)
- 职责:负责处理用例的执行逻辑,协调边界类和实体类;
- 特性:业务流程的调度者;
- 示例 :
OrderProcessor
、PaymentController
; - 设计建议:一个控制类对应一个或一组用例。
示例
请说明系统中"客户登录"用例可涉及哪些类类型,并说明其职责。
解答:
边界类 :LoginUI
- 用于接收用户输入的用户名和密码,与用户交互;
- 显示登录结果信息。
控制类 :LoginController
- 接收来自 UI 的请求,负责协调验证流程;
- 调用实体类与数据库进行认证处理。
实体类 :User
- 表示用户对象,封装用户名、密码、权限等信息;
- 提供密码校验等方法。
数据访问类 :UserDAO
- 负责从数据库中查询用户信息,进行登录校验。