快速业务通道

新手的总结:理解编程思想中抽象的概念

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-03-27

新手的总结:理解编程思想中抽象的概念

这篇文章主要介绍的编程思想称为抽象,认真看一下,我觉得对你的编程很有好处.我是在看完《Linux c编程一站式学习》这本书上的一节内容然后自己整理小结了一下,个人觉得说的真的很不错,敲下来给大家学习一下,也是我个人的学习笔记.

先看部分代码:

//复数的结构体

struct complex_struct

{

double x; //实部

double 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 ) //求复数的幅角

{

double PI = acos( -1.0 );

if( z.x > 0 )

return atan( z.y / z.x );

else

return atan( z.y / z.x ) PI;

}

//直角坐标构造复数

struct complex_struct 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;

}

拥有帝国一切,皆有可能。欢迎访问phome.net

在此基础上就可以实现复数的加减乘除运算了:

/*

* 复数运算层

*/

//加法

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_mag_ang( 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) );

}

通过上面的代码可以看出,复数的加减乘除并没有直接访问结构体的成员x和y,而是把整个复数的结构体看成一个整体,通过相关的函数调用来实现需要的功能.这样有什么好处呢?好处多得很呢.

假如现在项目需要复数使用别的数据结构存储,例如改成用极坐标来存储,收集的数据不一定都是用直角坐标,假如收集的是极坐标的数据呢,用上面的函数转换总会损失一些精度,不好.

极坐标存储层的代码:

struct complex_struct

{

double r, A;

};

拥有帝国一切,皆有可能。欢迎访问phome.net

double real_part(struct complex_struct z)

{

return z.r * cos(z.A);

}

double

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号