[C语言实践]UML之实践之思考

现在软件设计的方法中,最流行的可能还是面向对象的模型,但是本人还是对C语言有着特殊的喜好,本着软件设计殊途同归的原则,进行了一些思考。


 

 

首先,软件设计的中心是什么,乍一看,面向对象和面向过程有不同的观念,一个是已数据为中心的,一个以流程为中心,但转念一想,他们又不无联系。

我们退一步看,计算机是什么,是计算的机器,也就是,计算机的本质是处理数据,由此看来,流程是为了处理数据,最终的着眼点还是在于数据。

下面,我们来提出几种UML的概念。

类,关联,依赖,组合,聚合,接口,多态

这些概念看起来都是由类引出来的,那“类”究竟是个什么东西呢?

类就是一些数据和方法的集合,这里的方法有个特点,就是能访问此类中的数据。

对于C语言,我们可能要把数据和类分开表达了,结构体可以表达一个数据集合,但如何仅让某些方法访问这些数据呢?

对了,就是给这个函数安排一个指向此结构体指针的参数。

由此,对的类比就告一段落了:

数据:结构体

成员函数:以此结构体指针作为参数的函数

对于一个类,还会有一种纯虚函数(接口)的概念,也就是一些调用规范,强制他人实现的。

如果一个过程,可以在运行时决定用哪一个具体函数(实现),那就可以实现运行时多态,由此可见,C语言可以通过结构体中的函数指针成员

来实现多态的语义,而接口,可以认为是函数指针成员的集合

然后就是一些关联的表达了,所谓关联,就是此类访问其他类的一种途径。

这里有几种情况

1. 要使用其他类的数据

2. 要使用其他类的接口

3. 要使用其他类的函数

基本上,要使用什么就会保存一个相应的引用。

1. 用一个指向其他结构体的指针,那成员函数在实现功能的时候,就可以访问到其他类的数据了。

2. 用一个指向某个接口的指针,同样,就可以使用其他类的接口了。

3. 使用其他类的函数,更简单了,直接包含相应文件直接调用就行了。

另外,在实现一个流程的时候,可以用异步的方式,调用时,把返回结果的接收函数记录下来,由被调用方在完成后主动告知你结果,

这就是一个典型的回调方式的信息传递方式。

再比如,某个模块可以广播自己相关的某些信息,比如开机的事件,系统知道,他可以通知给其他的应用程序,在这个场景里,系统知道自己

能发出哪些事件,而不管哪些模块需要得到通知,由此可知,这种情况下,由其他模块把通知自己的方法告诉系统模块,然后系统在发生事件时,

依次通知各个模块,系统对每一种事件,可以维护一个函数列表(由其他模块注册),发生相应事件时,广播出去,而其他模块就是向系统模块注册函数了。


以上,是我在实践过程中,总结出的一点小经验,作为记录。

 

无限风光在顶峰!

吴孙杰

 

 

 

 

 

转载于:https://www.cnblogs.com/wusunjie/p/3189456.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值