04 | 理论一:当谈论面向对象的时候,我们到底在谈论什么?
王争
该思维导图由 AI 生成,仅供参考
考虑到各个水平层次的同学,并且保证专栏内容的系统性、全面性,我会循序渐进地讲解跟设计模式相关的所有内容。所以,专栏正文的第一个模块,我会讲一些设计原则、设计思想,比如,面向对象设计思想、经典设计原则以及重构相关的知识,为之后学习设计模式做铺垫。
在第一个模块中,我们又首先会讲到面向对象相关的理论知识。提到面向对象,我相信很多人都不陌生,随口都可以说出面向对象的四大特性:封装、抽象、继承、多态。实际上,面向对象这个概念包含的内容还不止这些。所以,今天我打算花一节课的时间,先大概跟你聊一下,当我们谈论面向对象的时候,经常会谈到的一些概念和知识点,为学习后面的几节更加细化的内容做一个铺垫。
特别说明一下,对于今天讲到的概念和知识点,大部分我都是点到为止,并没有展开详细讲解。如果你看了之后,对某个概念和知识点还不是很清楚,那也没有关系。在后面的几节课中,我会花更多的篇幅,对今天讲到的每个概念和知识点,结合具体的例子,一一做详细的讲解。
什么是面向对象编程和面向对象编程语言?
面向对象编程的英文缩写是 OOP,全称是 Object Oriented Programming。对应地,面向对象编程语言的英文缩写是 OOPL,全称是 Object Oriented Programming Language。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文深入探讨了面向对象编程的概念及其相关内容,包括面向对象编程的历史发展、定义、特性以及面向对象分析和设计。作者强调了面向对象编程的基本特性:封装、抽象、继承、多态,并讨论了面向对象编程语言的判定标准。此外,文章还提到了UML(统一建模语言)的复杂性及其在实际项目中的使用情况。总体而言,本文全面深入地探讨了面向对象编程的相关概念,适合对该主题感兴趣的读者阅读。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《设计模式之美》,新⼈⾸单¥98
《设计模式之美》,新⼈⾸单¥98
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(357)
- 最新
- 精选
- 王争置顶UML中定义了类之间的关系:泛化、实现、关联、聚合、组合、依赖,试问下小伙伴们,你们都能搞清楚这几个的区别吗?能否准确的用不同的箭头、图线来画出来吗?即便你能画出来,团队里的小伙伴都能看懂吗? 不过,关于类之间的关系,我后面会在实战篇中讲到的,但是,我会简化成四种关系,更好理解。2019-11-1135145
- 王争置顶在这篇文章中,“面向对象编程”一词多义,不同的场景、语境下,解释不同。文章中没有点到这一点,我这里稍微补充说明一下: 1. 文章前半部分,面向对象编程指的是一种编程风格或者范式。 2. 文章后半部分,在讲到面向对象分析、设计、编程的时候,面向对象编程是一种行为。2019-11-117217
- daniel李当看到老师说uml意义不大的时候我就懵了,还好原来是指不需要按严格标准死磕uml。 我平时在功能开发初期和后期都是用uml把我的想法可视化然后让师兄审核,减少pr被reject机率。而且也容易让别的工程师接手做功能拓展。 不过确实互联网公司如果不是大厂,确实很少人能看懂uml。
作者回复: 实际上,大厂也未必都在用。比如类图中几种类关系,同学们有几个能准确的用不同的图线画出来呢?
2019-11-11820 - BK🎩确实很多公司使用 UML 的频率比较低,大厂也是这样。另外我自己对 Google 的了解是对代码要求很高,那么代码交付还有文档的要求想必也很高,不知道 Google 公司在文档上面会不会大量使用 UML,如果不用的话,有没有更好的方式或语言来维护高质量的文档
作者回复: 好像没有多少人画uml,文档主要还是聚焦于业务和更上层的架构设计、技术难点说明,实现直接看代码。
2019-11-129 - 编程界的小学生1.我觉得首先uml这东西很牛逼,很有必要去画,但是也需要分场景,比如crud还强行画一个出来那就是浪费时间,比如超级复杂的东西要画,那我觉得就可以简化,多配上文字注释。比如需求一般,不是很复杂也不是很简单的那种也可以好好画一下,必要的地方配上文案描述。uml能帮助我们瞬间理解这个东西到底要做什么,流程是怎样的,画出来不光是现在看还是以后复习看,他都很香! 2.我觉得缺少了一个“组合”,首先要以类和对象作为代码的基石,还要能灵活的支持组合特性才算不严谨的面向对象语言。组合算封装特性的一部分吗?还是说只要以类和对象为基石的开发语言都支持组合?
作者回复: 组合跟封装应该没啥关系呢。
2019-11-115 - 潇潇雨歇1,关于UML,大学的时候学过,但是没有好好学,大概能看得懂,非常复杂的话不必弄的太规范;可以在自己画的时候做个讲解,关于规范UML的讲解,以免学生误解。简化不等于乱画,大体思想核心是在的。我觉得这样挺好的。可以使用类UML的形式,《Head FIrst 设计模式》也是用的这种,大家更能看懂。因为学习UML是有成本的,老师可以在课程中讲解一些UML的基本用法,不需要详细介绍。 2,面向对象的话还有接口,组合等概念。我学的是JavaScript,其实js严格来说并不是面向对象编程语言,像类本身都是没有的,可以说是基于对象编程语言。Java这种就是严格上的面向对象编程语言。其实我也想学学Java,老师有什么好的学习资料推荐吗?比如书籍,文档,博客什么。感谢🙏
作者回复: 周末会上一篇加餐,你可以简单看下专栏中用到的所有的java语法。至于书籍推荐,你可以随便找本比较薄的java书籍看看就可以,先入个门。
2019-11-1124 - Kang请教下 mysql源码里面是否实现面向对象的思想呢,怎么理顺一部分,比如源码里的优化器
作者回复: 我没读过mysql源码呢,不大清楚你说的那个问题。
2019-11-121 - return老师, 面向对象主要用来解决扩展复杂性, 写出来的代码确实要比面向过程更舒服 更易扩展。 但是 我思考其 为什么会有这种效果时, 又说不上具体原因, 有人说是 面向对象 把 实体和行为节藕,实体是稳定的, 而面向过程只有行为 ,行为是不稳定的。 好想有点道理 但是又有点抽象。 老师能否指点指点🙂
作者回复: 看下一篇文章,看能否解决你的疑惑呢
2019-11-121 - Running古老的C语言是不是可以认为面向对象的编程语言呢?结构体可以认为是类吗?
作者回复: c是面向过程的编程语言 后面会讲到 别急
2019-11-1121 - 初心有一点很有体会:使用面向对象编程语言开发出来的功能未必符合面向对象的思想,很可能是面向过程的。如何避免这种问题呢?后续有类似案例吗?争老师
作者回复: 有的 看专栏目录就知道了
2019-11-111
收起评论