博主之间是作 Linux C++ 软件开发的,深入地领悟到了面向对象的设计思想。但新的工做岗位是作嵌入式开发的,用的是C语言,忽然有一点不太习惯。架构
C语言是一种面向过程的语言,它自己不像C++具有面向对象的功能,可是这不等于说C就不能写出面向对象的软件。函数
博主看过许多比较出名的开源软件,如:dbus, avahi, cunit,虽然它们都是用C语言来实现的,但它们都融入了面向对象的设计思想,处处都是面对象的影子。工具
dbus 中的 DBusString 对象就相似于 C++中的 std::stringui
上面的这些函数就至关于 DBusString 的成员函数,每一个函数的第一个参数传入的都是 DBusString*,这就至关于C++中的this指针。this
再如 avahi 中的 AvahiHashmap 对象:设计
还有今天博主才研究一下下的 cunit,代码就不贴了。博主整理 TestDB.h 文件,画了以下的UML类图:
指针
它定义了 CU_TestRegistry, CU_Suite, CU_Test 三个类,每一个类都有对应的成员函数。
对象
可见,它是严格遵循了面向对象的设计思想的。开发
面向对象是一种设计的思想,与具体实现的语言工具无关。能让软件架构更符合人的思惟模式,更为清晰明了,更易于理解与维护。string
这是大型软件必然的选择。