开发者社区> 李名赫> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

面向对象的设计思想

简介:
+关注继续查看

博主之间是做 Linux  C++ 软件开发的,深刻地领悟到了面向对象的设计思想。但新的工作岗位是做嵌入式开发的,用的是C语言,突然有一点不太习惯。

C语言是一种面向过程的语言,它本身不像C++具备面向对象的功能,但是这不等于说C就不能写出面向对象的软件。

博主看过许多比较出名的开源软件,如:dbus, avahi, cunit,虽然它们都是用C语言来实现的,但它们都融入了面向对象的设计思想,到处都是面对象的影子。


dbus 中的 DBusString 对象就类似于 C++中的 std::string

235307_bQFm_243525.png

上面的这些函数就相当于 DBusString 的成员函数,每个函数的第一个参数传入的都是 DBusString*,这就相当于C++中的this指针。

再如 avahi 中的 AvahiHashmap 对象:

235708_cknA_243525.png

还有今天博主才研究一下下的 cunit,代码就不贴了。博主整理 TestDB.h 文件,画了如下的UML类图:  

000213_jaAY_243525.png

它定义了 CU_TestRegistry, CU_Suite, CU_Test 三个类,每个类都有对应的成员函数。

可见,它是严格遵循了面向对象的设计思想的。



面向对象是一种设计的思想,与具体实现的语言工具无关。能让软件架构更符合人的思维模式,更为清晰明了,更易于理解与维护。

这是大型软件必然的选择。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
面向对象
面向对象 (封装、多态、继承) 通俗的定义:对代码的一种抽象,对统一提供调用接口的编程思想 声明对象 字面式声明 New 构造方法声明 工厂方法声明 原型模式声明 混合模式声明 属性:事物的特性; 方法:事物的功能; 对象:事物的一个实例;(众多人中的一个人) 原型:js函数中由prototy.
283 0
跳出面向对象思想(三) 封装
原文 简述 我认为"封装"的概念在面向对象思想中是最基础的概念,它实质上是通过将相关的一堆函数和一堆对象放在一起,对外有函数作为操作通道,对内则以变量作为操作原料。
858 0
跳出面向对象思想(二) 多态
原文 简述 多态一般都要跟继承结合起来说,其本质是子类通过覆盖或重载(在下文里我会多次用到覆盖或重载,我打算把它简化成覆重,意思到就好,不要太纠结这种名词。
696 0
重温面向对象的思想OOP——封装
面向对象的思想OOP——封装 对象的封装: 封装的目的:隐藏对象的内部细节,将对象进行黑箱操作。
851 0
面向对象 "一"
1:面向对象不是所有情况都适用。 2面向对象编程 a:定义类 calss Foo: 注意顶一个类的时候首字母必须是大写 def (方法一)(self,bb) pass b:根据创建对象,创建和Foo实列的。
697 0
面向对象技术
         在以前学习VB的时候,学习完了要总结,那时候总结过很多面向对象技术是什么之类的东西,还感觉自己很了解似的,但是随着学习的深入,我感觉自己反而到没有当初那样初生牛犊不怕虎了,如果宿舍里的人问我什么是面向对象啊?这时候,我倒是有点儿不敢回答了,因为感觉到这里面貌似水很深的样子。
739 0
面向对象技术
  看大图请点击:这 里  
567 0
+关注
李名赫
博主从事的是物联网行业,目前在某知名智能家居科技公司担任家庭智能中心研发主管。欢迎交流!
147
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载