建立抽象层,把存储格式和运算层隔离开
来源:互联网 发布:系统数据备份策略 编辑:程序博客网 时间:2024/06/14 03:47
这是在学习《linux 从编程一站式学习》时分析的,源代码是书本上的,本书是开源图书,有兴趣在linux下c语言编程的可以看看,是一本不错的书籍(绝对不像大学课本),现在从新学习C语言,转移到linux平台,找到这样一本书感觉不错,把感觉不错的部分打出来,加深一下印象。
#include<math.h>//采用直角坐标系存储复数struct complex_struct{double x,y;};//单独返回复数的实部double real_part(struct complex_struct z){return z.x;}//单独返回复数的虚部double img_part(struct complex_struct z){return z.y;}//取模运算double magnitude(struct complex_struct z){return sqrt(z.x*z.x+z.y*z.y);}//double angle(struct complex_struct z){return atan2(z.y,z.x);}//直角坐标系样式输入复数存储,并返回结构体变量struct complex_struc make_from_real_img(double x,double y){struct complex_struct z;z.x=x;z.y=y;return z;}//极坐标样式输入复数存储,并返回 结构体变量struct complex_struct make_from_mag_ang(double r,double a){struct complex_struct z;z.x=r*cos(a);z.y=r*sin(a);return z;}//复数加法struct complex_struct add_complex(struct complex_struct z1,struct complex_struct z2){return make_from_real_img(real_part(z1)+real_part(z2),img_part(z1)+img_part(z2));}//复数减法struct complex_struct sub_complex(struct complex_struct z1,struct complex_struct z2){return make_from_real_img(real_part(z1)-real_part(z2),img_part(z1)-img_part(z2));}//复数乘法struct complex_struct mul_complex(struct complex_struct z1,struct complex_struct z2){return make_from_real_img(magnitude(z1)*magnitude(z2),angle(z1)+angle(z2));}//复数除法struct complex_struct div_complex(struct complex_struct z1,struct complex_struct z2){return make_from_mag_ang(magnitude(z1)/magnitude(z2),angle(z1)-angle(z2));}这一部分代码,通过建立一个复数存储,实现结构体存储和运算函数隔离,运算函数不依赖具体的结构体存储。
分享这本书这一部分提到的一段话
这里的复数存储层和复数运算层称为抽象层(Abstraction Layer),从底层往上层看,复数越来越抽象,把所有的这些层组合在一起就是一个完整的系统。组合使得系统可以任意复杂,而抽象使得系统的复杂性是可以控制的,任何改动都只局限在某一层,而不会波及整个系统。 "All problems in computer science can be solved by another
level of indirection.”--------著名的计算机科学家Butler Lampson。
- 建立抽象层,把存储格式和运算层隔离开
- 通过存储技术建立数据中心存储层
- 通用块层和SCSI层--硬盘HBA抽象层
- 界面层和应用层的完全隔离
- 在驱动层和应用层建立准消息机制
- Service层的抽象和实现
- 图形抽象层和输入抽象层及 Native Engine 的实现
- 硬件抽象层(HAL)
- PHP数据库抽象层
- Ogre API 抽象层
- 硬件抽象层
- Ogre API 抽象层
- Android硬件抽象层
- PDO数据库抽象层
- PDO数据库抽象层
- pdo数据抽象层
- PDO抽象层初识
- 什么是数据库抽象层
- apt-get常用方法
- 磁道 、扇区、柱面
- Nginx + Tomcat
- datagridview 手动添加列和行
- Eclipse 导入Android工程,中文注释乱码问题
- 建立抽象层,把存储格式和运算层隔离开
- MPEG-2 数字视频技术参考指南 (3)—— MPEG-2视频压缩
- J2EE中的十三个规范
- 浅谈OCR之Onenote2010
- [django1.4] admin中添加富文本编辑器tinymce
- ios检测应用程序是否存在并启动
- json中JsonArray很易懂的代码
- jar2exe提取class文件,破解java的exe程序
- [2013-05-15]centos6.3 x86_64安装rvm和ruby on rails