Luckyxyz
首页
归档
关于
友链
切换模式
返回顶部
首页
技术实践
书斋絮语
说点儿什么
Luckyxyz
首页
技术实践
书斋絮语
说点儿什么
首页
归档
关于
友链
【软考】面向对象设计原则、面向对象分析、面向对象设计、面向对象测试、面向对象程序设计
技术实践
·
今天
Luckyxyz
# 面向对象设计原则 ## 单一责任原则:SRP,Single Responsibility Principle **就一个类而言,应该仅有一个引起它变化的原因。** 即,当需要修改某个类的时候,原因只有一个,让一个类制作一种类型责任。 ## 开放 - 封闭原则:Open & Close Principle,OCP 软件实体(类、模块、函数等)应该是可以扩展的,即是 开放的;但是不可修改的,即是 封闭的 **对 扩展开放,对 修改关闭** ##里氏替换原则,LSP,Liskov Substitution Principle 子类型必须能够替换掉他们的 基类型(父类)。 在任何父类可以出现的地方,都可以用子类的实例来复制给父类型的引用。 (父类可以出现的地方,子类一定可以出现) 当一个子类的实例应该能够替换任何其超类的实例时,它们之间才具有是一个(is-a)关系 **基类出现的地方,子类一定可以出现。** ## 依赖倒置原则,DIP,Dependence Inversion Principle 抽象 不应该依赖于 细节 细节 应该依赖于 抽象 即,高层模块不应该依赖于低层模块,二者都应该依赖于抽象 **依赖于抽象,而不依赖于细节(实现)** ## 接口分离原则,ISP,Interface Segregation Principle 不应该强迫客户依赖于它们不用的方法。 接口属于客户,不属于它所在的类层次结构。 即,**依赖于抽象,不依赖于具体**,同时在抽象级别不应该有对于细节的依赖。 ## 共同重用原则,CRP,Common Reuse Principle 一个包中的所有类应该是共同重用的 如果**重用了包中的一个类,那么就要重用包中的所有类** ## 共同封闭原则,CCP,Common Closure Principle 包中的所有类对于同一类性质的变化应该还是共同封闭的。 **一个变化如果对一个包产生影响,则将对该包中的所有类产生影响,而对于其他的包不造成任何影响。** --- # 面向对象分析 OOA 面向对象分析的目的,是为了获得对 应用问题 的理解 理解 的目的 是确定 系统的功能、性能要求 面向对象分析包含 5 个活动: - 认定对象 - 组织对象 - 描述对象间的相互作用 - 确定对象的操作 - 定义对象的内部信息 # #认定对象 在应用领域中,按自然存在的实体确立对象 在定义域(定义问题域)中,首先将自然存在的 **“名词”** 作为一个对象 比较困难的是:寻找(选择)系统关心的实质性对象。  分析软件(系统)要做什么操作,功能是什么 ## 组织对象  ## 对象间的相互作用  ## 基于对象的操作  --- # 面向对象设计 OOD 将 OOA(面向对象分析)所创建的分析模型转化为设计模型 目标:定义系统构造蓝图 面向对象设计:应该理解解决方案、实现系统细节 OOD 在复用 OOA 模型的基础上,包含与 OOA 对应如下五个活动: - 识别类及对象 - 定义属性 - 定义服务:行为 / 操作 - 识别关系 - 识别包 --- # 面向对象测试  - 算法层 - 类层 - 模版层 - 系统层 --- # 面向对象程序设计 程序设计范型:人们在程序设计时所采用的基本方式模型,决定了程序设计时采用的思维方式、使用的工具。同时又有一定的应用范畴。 面向对象程序设计:OOP 面相对象程序设计的实质,是选用一种面向对象程序设计语言(OOPL),采用对象、类、相关概念所进行的程序设计 类 class  类属类    类:继承 接口:实现 如果一个类去实现接口,那么就要把接口里的所有方法都重写 虚线的箭头:实现 实现的箭头:继承 接口是一种特殊的抽象机制,其中的操作不实现,需要由实现类来加以实现  Thing3 和 Thing2 作为类去实现 Thing1 的接口,所以必须要实现这个接口中的方法 Thing3 是一个具体的类,也就是必须要由 3 实现 但是 Thing2 有子类,所以可以理解成 抽象类,抽象类可以把方法继续抽象,就可能由他的子类来实现
软考
取消回复
提交评论
Luckyxyz
我们谈论生活,讨论技术,借由文字,抵达心灵。
热门文章
Obsidian 迁移全记录(又名:纯小白的闭坑指南)
【Kubernetes】第一个实例 - Java Web 应用
新年新气象,关于年终总结,关于未来展望
使用宝塔面板对网站、数据库等进行定时备份到腾讯云 COS 对象存储
2025 年
在细雨中呼喊,在困顿中挣扎
Ubuntu 22.04 server 安装教程
最新评论
山佳Ellen: 有独到的见地,有个性的思想,精彩!
t: 2026 扬帆起航, 喜迎新年,万象更新, 时间旅行,人间探索,...
tls: 赞一个
lovingchina: 我也准备从Joplin迁移到Obsidian,刚好参考你这一篇哈...
tl.s: 很棒的一本书,可以解答很多人们关于人工智能的疑惑。或许未来怎样谁...
tl.s: 很实用 🦆🦆
tl.s: 绘图很清晰,图示质量很高
热门标签
软考
Kubernetes
读书笔记
Linux
Ubuntu
生活随笔
生活
2025
Python3
Debian
Ansible
空间智能
openFuyao
技术实践
在细雨中呼喊
粤ICP备2024349207号