前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【愚公系列】软考中级-软件设计师 047-面向对象技术(考点简介)

【愚公系列】软考中级-软件设计师 047-面向对象技术(考点简介)

原创
作者头像
愚公搬代码
发布于 2024-04-30 14:58:01
发布于 2024-04-30 14:58:01
1670
举报

🏆 作者简介,愚公搬代码 🏆《头衔》:华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,51CTO博客专家等。 🏆《近期荣誉》:2022年度博客之星TOP2,2023年度博客之星TOP2,2022年华为云十佳博主,2023年华为云十佳博主等。

🏆《博客内容》:.NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、联网、络安全、数据、工智能、U3D游戏、小程序等相关领域知识。

🏆🎉欢迎 👍点赞✍评论⭐收藏

🚀前言

面向对象技术(Object-oriented technology)是一种软件开发方法论,也是一种编程范式,它通过将系统中的实体抽象为对象,并将对象之间的关系和行为通过封装、继承和多态等机制进行描述和实现。

面向对象技术的特点包括:

概念

描述

封装

数据和方法封装在一个对象中,通过限制对对象内部的访问来隐藏实现细节,提高了程序的模块化和安全性。

继承

一个类可以从另一个类派生而来,并继承父类的属性和方法。继承可以提高代码的重用性和扩展性。

多态

同一类型的对象在不同的上下文环境下可以表现出不同的行为。多态性使得程序可以根据对象的实际类型来选择对应的方法。

抽象

通过抽象可以从众多的实体中抽取出共同的特征和行为,形成抽象类或接口,便于设计和维护系统。

消息传递

面向对象的通信方式是通过对象之间的消息传递来实现的,对象之间通过发送和接收消息来进行沟通和协作。

面向对象技术广泛应用于软件开发领域,如面向对象分析与设计(OOAD)、面向对象编程语言(如Java、C++)等。它提供了一种更加模块化、可扩展、易维护的软件开发方法,能够提升开发效率和软件质量。

在这里插入图片描述
在这里插入图片描述

🚀一、面向对象技术

🔎1.面向对象基础

  • 面向对象的基本概念
  • 面向对象分析
  • 面向对象设计
  • 面向对象程序设计
  • 面向对象测试

🔎2.UML

  • 事物
  • 关系
  • UML中的图

🔎3.设计模式

  • 设计模式的要素
  • 模式名称
  • 问题
  • 解决方案
  • 效果
  • 设计模式的原则
  • 开闭原则
  • 里氏替换原则
  • 依赖倒转原则
  • 接口隔离原则
  • 最少知道原则(迪米特法则)
  • 合成复用原则
  • 创建型设计模式

与对象的创建有关

  • 工厂模式(Factory Pattern)

定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。

  • 子类决定实例化
  • 抽象工厂模式(Abstract Factory Pattern)

提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。

  • 抽象接口
  • 单例模式(Singleton Pattern)

保证一个类仅有一个实例,并提供一个访问它的全局访问点。

  • 唯一实例
  • 构造器模式(Builder Pattern)

将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。

  • 类和构造分离
  • 原型模式(Prototype Pattern)

用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。

  • 原型实例,拷贝
  • 结构型设计模式

处理类或对象的组合

  • 适配器模式(Adapter Pattern)

将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

  • 转换,兼容接口
  • 桥接模式(Bridge Pattern)

将抽象部分与实现部分分离,使它们都可以独立的变化。

  • 抽象和实现分离
  • 组合模式(Composite Pattern)

将对象组合成树形结构以表示"部分-整体"的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。

  • 整体-部分,树形结构
  • 装饰器模式(Decorator Pattern)

动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比生成子类更为灵活。

  • 附加职责
  • 外观模式(Facade Pattern)

外观模式定义了一个高层接口,为子系统中的一组接口提供一个一致的界面,使得这一子系统更加容易使用。

  • 对外统一接口
  • 享元模式(Flyweight Pattern)

提供支持大量细粒度对象共享的有效方法。

  • 细粒度,共享
  • 代理模式(Proxy Pattern)

为其他对象提供一种代理以控制对这个对象的访问。

  • 代理控制
  • 过滤器模式/标准模式(Filter、Criteria Pattern)

这种类型的设计模式属于结构型模式

  • 行为设计模式

对类或对象怎么交互和怎样分配职责描述

  • 责任链模式(Chain of Responsibility Pattern)

通过给多个对象处理请求的机会,减少请求的发送者与接收者之间的耦合。将接收对象链接起来,在链中传递请求,直到有一种处理这个请求。

  • 传递请求、职责、链接
  • 命令模式(Command Pattern)

将一个请求封装为一个对象,从而可用不同的请求对客户进行参数化,将请求排队或记录请求日志,支持可撤销的操作。

  • 参数化、日志记录
  • 解释器模式(Interpreter Pattern)

给定一种语言,定义他的文法表示,并定义一个解释器,该解释器用来根据文法表示来解释语言中的句子。

  • 文法、解释
  • 迭代器模式(Iterator Pattern)

提供一种方法来顺序访问一个聚合对象中的各个元素而不需要暴露该对象的内部表示。

  • 顺序访问
  • 中介者模式(Mediator Pattern)

用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。

  • 不直接引用
  • 备忘录模式(Memento Pattern)

在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,从而可以在以后将这个对象恢复到原先保存的状态。

  • 保存,恢复
  • 观察者模式(Observer Pattern)

定义对象间的一个一对多的依赖关系,当一个对象的状态发生改变时,所有依赖它的对象都得到通知并自动更新。

  • 通知、自动更新
  • 状态模式(State Pattern)

允许一个对象在其内部状态改变时,改变它的行为。

  • 状态变成类
  • 策略模式(Strategy Pattern)

定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换,从而让算法可以独立于使用它的用户而变化。

  • 算法替换
  • 模板模式(Template Pattern)

定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

  • 访问者模式(Visitor Pattern)

表示一个作用于某个对象结构的各元素的操作,使得在不改变各元素的类的前提下定义作用于这些元素的新操作。

  • 新操作
  • 空对象模式(Null Object Pattern)
  • J2EE模式

这些设计模式特别关注表示层。这些模式是由 Sun Java Center 鉴定的。

  • MVC 模式(MVC Pattern)
  • 业务代表模式(Business Delegate Pattern)
  • 组合实体模式(Composite Entity Pattern)
  • 数据访问对象模式(Data Access Object Pattern)
  • 前端控制器模式(Front Controller Pattern)
  • 拦截过滤器模式(Intercepting Filter Pattern)
  • 服务定位器模式(Service Locator Pattern)
  • 传输对象模式(Transfer Object Pattern)🚀二、面向对象技术(30分)(重点)🔎1.面向对象基础

面向对象(Object-Oriented)是一种软件设计的思想和方法论,它将程序中的数据和操作数据的行为组织为一个个对象,并通过对象之间的交互来完成任务。

术语

解释

类(Class)

类是对象的抽象,描述具有相同属性和行为的一组对象,并提供对象的接口。

对象(Object)

对象是类的实例,具有自己的状态(属性)和行为(方法),通过访问方法来操作状态。

封装(Encapsulation)

封装将数据和对数据的操作封装在对象内部,隐藏实现细节,只暴露必要的接口给外部使用。

继承(Inheritance)

继承通过创建新类来继承现有类的属性和方法。子类可以扩展或修改父类的行为。

多态(Polymorphism)

多态性使得同一个方法可以在不同对象上具有不同的行为。调用共同的方法实现不同的行为。

抽象(Abstraction)

抽象是将对象的共同特征和行为抽象出来,形成类的抽象描述。抽象类和接口是实现抽象的常用方式。

面向对象设计可以提高软件的可维护性、可扩展性和可重用性,使程序更加模块化和灵活。通过合理地使用类、对象、封装、继承、多态等基础概念和原则,可以设计出符合面向对象思想的软件系统。

🔎2.UML

UML(统一建模语言)是一种用于软件系统的设计、建模和文档化的标准化语言。作为软件设计师,使用UML可以帮助我们更好地理解和描述软件系统的结构和行为。

在软件设计过程中,UML为设计师提供了一系列的图形符号和规范,用于表示系统中的各种元素,如类、对象、关系、行为和状态。这些图形符号包括类图、对象图、活动图、时序图、状态图等。

使用UML可以帮助设计师进行需求分析、系统设计和系统架构等工作。通过绘制UML图,设计师可以清晰地展示系统的结构和行为,从而帮助开发人员更好地理解需求和实现软件系统。

UML还提供了一些常用的设计模式,用于解决常见的软件设计问题。设计师可以根据系统的需求选择适合的设计模式,并使用UML进行建模和描述。

🔎3.设计模式

在软件设计中,设计模式是一种被广泛接受并被证明可行的解决方案,用于解决常见的软件设计问题。设计模式可以提供一种可重用的解决方案,使软件设计人员能够更好地组织和管理代码,同时提高软件的可维护性和可扩展性。

一些常见的设计模式在软件设计中的应用:

设计模式

解释

单例模式

确保一个类只有一个实例,并提供全局访问点。

工厂方法模式

定义一个创建对象的接口,由子类决定实例化哪个类。

抽象工厂模式

提供一个创建一系列相关或相互依赖对象的接口,而无需指定具体类。

建造者模式

将一个复杂对象的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。

原型模式

通过复制现有对象的方式来创建新的对象。

适配器模式

将一个类的接口转换成客户端所期望的另一个接口。

桥接模式

将抽象与其实现分离,使它们可以独立地变化。

组合模式

将对象组合成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。

装饰器模式

动态地将责任附加到对象上,以扩展对象的功能。

外观模式

为子系统中的一组接口提供一个统一的接口,以简化客户端的使用。

享元模式

通过共享尽可能多的细粒度对象来有效地支持大量细粒度对象的复用。

代理模式

为其他对象提供一种代理,以控制对这个对象的访问。

模板方法模式

定义一个操作中的算法的骨架,将一些步骤延迟到子类中。

策略模式

定义了一系列的算法,将它们封装起来,并使它们可以相互替换。

命令模式

将请求封装为一个对象,从而使你可以使用不同的请求对客户进行参数化。

职责链模式

为某个请求创建一个接收者对象的链,并将请求沿着链传递,直到有一个对象处理它为止。

状态模式

允许对象在其内部状态改变时改变它的行为。

观察者模式

定义对象间的一种一对多的依赖关系,以便当一个对象的状态改变时,所有依赖于它的对象都会被自动通知并更新。

中介者模式

用一个中介对象来封装一系列对象之间的交互。中介者使各个对象之间不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。

迭代器模式

提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露其内部的表示。

访问者模式

表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。

备忘录模式

在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。

解释器模式

给定一个语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子。

在实际的软件设计中还有许多其他的设计模式可供选择和应用,具体选择哪种设计模式取决于具体的需求和问题。


我正在参与2024腾讯技术创作特训营最新征文,快来和我瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【愚公系列】软考中级-软件设计师 052-面向对象技术(设计模式-行为型)
设计模式是在软件设计领域中,为解决常见问题而被反复使用、被广泛认可的一种设计思想。它是一种经过实践验证的,被认为是最佳解决方案的经验总结,可以帮助开发人员快速高效地解决软件设计中的一些固有问题。
愚公搬代码
2024/05/03
1250
软考中级(软件设计师)——面向对象技术(上午12分)(下午30分)(超重点)
事物[Things] (4种):UML模型中最基本的构成元素,是具有代表性的成分的抽象
红目香薰
2022/11/30
7340
软考中级(软件设计师)——面向对象技术(上午12分)(下午30分)(超重点)
【愚公系列】软考中级-软件设计师 049-面向对象技术(UML)
UML(Unified Modeling Language)是一种用于软件系统设计的建模语言,它在面向对象技术中起着重要的作用。
愚公搬代码
2024/05/01
4560
【愚公系列】软考中级-软件设计师 051-面向对象技术(设计模式-结构型)
设计模式是在软件设计领域中,为解决常见问题而被反复使用、被广泛认可的一种设计思想。它是一种经过实践验证的,被认为是最佳解决方案的经验总结,可以帮助开发人员快速高效地解决软件设计中的一些固有问题。
愚公搬代码
2024/05/02
1090
【愚公系列】软考中级-软件设计师 048-面向对象技术(面向对象相关概念)
面向对象的编程范式在上世纪六十年代末和七十年代初逐渐形成,并在八十年代得到了广泛应用。它的背景可以追溯到软件开发领域的一些问题和挑战。
愚公搬代码
2024/04/30
1790
设计模式(0)—— 概述
设计模式(Design Pattern),是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。
阳光岛主
2019/02/19
4350
专栏最后一期——在王者荣耀角度下分析面向对象程序设计B中23种设计模式之总结篇
历时两个月,《23种设计模式在王者荣耀中的应用》专栏已经全部更新结束了。 在这个专栏创立的2个月的时间里,文章总共发表了25篇,总点击量达到了3w+;我也通过这个专栏结交到了许多志同道合的朋友。想当初我只想的是在学习《面向对象程序设计B》过程中对书上的代码与当下最火的手游——王者荣耀结合并做一些改进,发表到CSDN中作为学习笔记便于日后复习,真是没有想到一发表居然会收获如此巨大,实在是承蒙各位关照了。 这个专栏的编写,使我收获满满,每一篇的文章都是对书上的知识点、老师讲的重点、网上提供的创新点以及自己在改进代码过程中体会点的梳理总结。 在发表文章的这段时间里,恰巧赶上CSDN的“原力计划——第二季”鼓励原创作者的官方活动热潮,使我的文章能被更多的人看到:有的读者通过我的文章更加深刻地掌握了相关知识,也有的读者对文章的内容结构做了一些批评指正。非常感谢大家的关注支持,感谢CSDN每一期都给“小火箭”,同时也再一次感谢CSDN提供的这一平台。 本文是《23种设计模式在王者荣耀中的应用》专栏的最后一期。 主要内容一个是对过去做一总结,另一个是对前几期相关知识中未涉及的内容在本文做一补充。
荣仔_最靓的仔
2021/02/02
5440
专栏最后一期——在王者荣耀角度下分析面向对象程序设计B中23种设计模式之总结篇
《设计模式:可复用面向对象软件的基础》学习并理解 23 种设计模式
设计模式 Design Pattern 是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结,使用设计模式是为了可重用代码、让代码更容易被他人理解并且保证代码可靠性。。
网罗开发
2021/01/29
4.1K0
《设计模式:可复用面向对象软件的基础》学习并理解 23 种设计模式
和 lvgo 一起学设计模式(零)序
Java 设计模式专题,共 23 种设计模式。摒弃应用并非本末倒置,知其然而知其所以然,
星尘的一个朋友
2020/11/25
4000
和 lvgo 一起学设计模式(零)序
设计模式的功能和分类
设计模式(Design Pattern)是前辈们对代码开发经验的总结,是解决特定问题的一系列套路。它不是语法规定,而是一套用来提高代码可复用性、可维护性、可读性、稳健性以及安全性的解决方案。
Java技术债务
2022/08/09
3330
我对软件设计模式的理解
软件设计模式是对软件设计经验的总结,是对软件设计中反复出现的设计问题的成功解决方案的描述。为了记录这些成功的设计经验并方便以后使用,软件设计模式通常包含 4 个基本要素:模式名称、问题、解决方案以及效果。
不可言诉的深渊
2019/07/27
1.1K0
设计模式前篇之:一起过一下面向对象的概念
面向对象编程,好像从来都是最熟悉的陌生人,相信大家都看过难记难懂的概念。面向对象的设计模式存在大量的类结构,体现面向对象的四个特征和遵循面向对象的六个原则,认识它们才能更好理解设计模式。今天就写一写它们,也相对于给自己做笔记。
Twcat_tree
2022/11/29
2160
【复习】软件设计师之论:面向对象思想
封装:是对象的一个重要原则。 它有两层含义: 第一:对象是其全部属性和全部服务紧密结合而形成的一个不可分割的整体; 第二:对象是一个不透明的黑盒子,表示对象状态的数据和实现操作的仪码都封装在黑盒子里面。
全栈程序员站长
2022/06/29
3360
深入浅出分析设计模式的优点与缺点
设计模式是一组有用的解决方案,用于解决特定类型的软件设计问题。它们通常提供了一种抽象出来的方式,来表达应用程序中常见问题的解决方案,从而帮助开发者更有效地解决问题。设计模式的用途是帮助开发者解决软件设计问题,提高开发效率,降低开发成本,提高代码质量和可维护性,以及更好地管理和理解复杂的系统。设计模式的优点是可以提高代码可维护性,减少代码重复,提高开发效率,降低开发成本,提高代码质量和可维护性,以及更好地管理和理解复杂的系统。设计模式的缺点是可能会使代码变得复杂,也可能会过度设计。设计模式的出处是由GoF(Gang of Four)在1995年发表的著作“设计模式:可复用面向对象软件的基础”中提出。
jack.yang
2025/04/05
1190
设计模式概述
成为一名优秀的软件开发工程师,设计模式的重要性不言而喻,本章节是对设计模式的前置知识概述,涉及概念性较大,读者可在设计模式学习过程中参阅本文档。
程序员田同学
2022/07/15
2960
设计模式概述
五万字详解“GoF”的23种设计模式
1995 年,GoF(Gang of Four,四人组,由 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 四人组成)合作出版了 **《Design Patterns: Elements of Reusable Object-Oriented Software》 **一书,共收录了 23 种设计模式,从此树立了软件设计模式领域的里程碑,人称【GoF设计模式】。
栗筝i
2022/12/09
3.6K2
五万字详解“GoF”的23种设计模式
设计模式 — 终章.
tips:Struts 的拦截器,Servlet 的过滤器,Netty 的 ChannelPipeline 都是责任链模式~
JMCui
2019/03/06
3780
【信管1.9】软件工程(三)软件设计与过程管理
需求相关的内容我们用了两个篇幅去阐述,可见需求在软件工程中是有多么重要的地位。不过这也和这个考试的情况有关,毕竟还有很多不是做开发的同学也会来参加这个考试,所以在软件工程这一大章节中,真正涉及软件设计方面的内容反而并不多,大家总算可以稍微放松一下了。那么,话不多说,我们马上进入今天的学习吧。
硬核项目经理
2023/03/02
3860
【信管1.9】软件工程(三)软件设计与过程管理
都2023了你竟然还不知道设计模式?
只要是已经从事Java开发的同学,相信对“设计模式”这个关键词都不陌生,不管是平常开发还是面试中都是高频热点词汇,从今天开始咱们就开始唠唠设计模式。
架构狂人
2023/10/04
2180
都2023了你竟然还不知道设计模式?
23种常用设计模式快速入门教程
设计模式是一组有用的解决方案,用于解决特定类型的软件设计问题。它们通常提供了一种抽象出来的方式,来表达应用程序中常见问题的解决方案,从而帮助开发者更有效地解决问题。设计模式的用途是帮助开发者解决软件设计问题,提高开发效率,降低开发成本,提高代码质量和可维护性,以及更好地管理和理解复杂的系统。设计模式的优点是可以提高代码可维护性,减少代码重复,提高开发效率,降低开发成本,提高代码质量和可维护性,以及更好地管理和理解复杂的系统。设计模式的缺点是可能会使代码变得复杂,也可能会过度设计。设计模式的出处是由GoF(Gang of Four)在1995年发表的著作“设计模式:可复用面向对象软件的基础”中提出。
jack.yang
2025/04/05
1700
推荐阅读
相关推荐
【愚公系列】软考中级-软件设计师 052-面向对象技术(设计模式-行为型)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档