温故而知新
GObject 子类私有属性的外部访问
GObject 子类对象的私有属性模拟
上一篇文章“使用 GObject 库模拟类的数据封装形式”讲述了 GObject 子类化过程,本文以其为基础,进一步讲述如何对数据进行隐藏,即对面向对象程序设计中的“私有属性”概念进行模拟。
使用 GObject 库模拟类的数据封装形式
事实上,有关 GObject 库的学习与使用,GObject 库参考手册提供了一份简短且过于晦涩的指南。如果你能够理解它,那么完全可以无视这篇以及后续的几篇文章。倘若没有明白那份指南,那么建议最好能克制一下,先不要急于去做文档 [1] 中所列举那些探索,谨记 Knuth 所说的,过早优化是诸恶之源。
这篇文档主要讲述如何使用 GObject 库来模拟面向对象程序设计的最基本的要素,即基于类的数据封装,所采用的具体示例是一个双向链表的设计。
要相信 GObject 是有用并且简单的!
很多人被灌输了这样一种概念:要写面向对象程序,那么就需要学习一种面向对象编程语言,例如 C++、Java、C# 等等,而 C 语言是用来编写结构化程序的。事实上,面向对象只是一种编程思想,不是一种编程语言。换句话说,面向对象是一种游戏规则,它不是游戏。GObject 告诉我们,使用 C 语言编写程序时,可以运用面向对象这种编程思想。
有关 GObject 的几份文档
这几日心甘情愿地放着正事不做而被 GObject 虐,又看了一遍 GObject 参考手册,结果还是一头雾水,感觉这个手册不是写给像我这般愚蠢的人看的。
发现对岸那边有人用 OOo 制作了 4 份演示文档,并提供了一些较具说明性的示例代码,可从其项目主页下载。演示文档做的很是言简意赅,提供的示例也很有代表性。
最后,比较值得阅读的资料是 cloverprince 写的一系列笔记,不过是英文的,内容上自下向上的分析了 GObject 的一些重要的知识点。
建议想学习 GObject 的同学,最好是先阅读以上笔记,然后再去阅读官方的 GObject 参考手册。