首页 > 编程知识 正文

面向对象开发方法的基本思想,java面向对象类与对象

时间:2023-05-03 23:31:18 阅读:109857 作者:4774

C面向对象:引入面向对象思想1 .从高度看面向对象2 .模拟单片机流水灯2.1语言常规方法实现2.2语言面向对象方法实现2.3面向对象方式实现3 .总结

1 .从高处看面向对象

面向对象是一种编程思想,不是C特有的,汇编、C等所有编程语言都可以实现面向对象。

面向对象语言是在设计语言特性时经过充分考虑,并本机支持面向对象特性的编程语言。 例如,Python、Java等。 非面向对象语言中不固有地支持面向对象,但可以通过几种方法实现面向对象。 例如,在c语言中,在结构内部用函数指针实现类似class的内部方法。

面向对象是编程,写作时可以用比喻,也可以不用比喻,就像比喻这种修辞法是文章一样。 面向对象是编程语言的语法级别,不影响最终生成的二进制程序。 也不关CPU的事。

面向对象不是单一的概念,而是一个综合的解决方案,包含许多特性和细节。 面向对象方面,封装、继承、多态面向对象还扩展了很多细节,根据编程语言的不同选择不同的应对方法。 对于同一个问题,C认为应该这样解决,Java可能认为应该这样解决。 的语法细节很多。 C追求效率,所以为了提高效率,语言的细节很多。 Java语法细节很少,且优先考虑如何使程序简单,使程序员不易出错,但它们都是面向对象的。

2 .模拟单片机流水灯的2个LED分别为led1和led2,流水灯延时设置为1s。 2.1用语言的通用方法实现面向过程的实现代码时,首先要考虑完成一个任务需要几个步骤,然后按顺序逐个实现这些步骤。 类似于流水线一步一步完成每个步骤。

在实现2个灯的流水灯中,存在灯1的熄灭2点和灯1的点亮2点这2个状态,将这2个状态设为led1_on_and_led2_off (和led1_off_and_led2_on ) )

模拟代码如下。

voidmain(void ) (while )1) {led1_on_and_led2_off ); //1开启2关闭休眠(1() 1; //延迟1sled1_off_and_led2_on (; //1关闭休眠(1() 1; }} 2.2用C语言实现面向对象,需要以下步骤才能实现面向对象。

第一步:面向对象编程的第一步,是把理念上处理的任务当成一个对象,这里的对象是LED灯。第二步:将“任务完成”分解为“对象”的多个方法(function )依次完成。 现实中,LED灯具有点亮和熄灭等几个功能,在通过代码实现时,针对这些功能应该有一个LED对象具备这些方法。第三步:使用将你的“对象”抽象化的模型(类,class ),可以用struct来表示,尽管c中没有class。 对象的功能方法由函数指针实现,每个函数指针都指向实际函数。 这些函数是该类具有的方法。第四步:用于该方法的变量(variable )在面向对象的概念中被定义为属性(property ),在此通过包括在struct中的变量来实现。第五步:用于实现“对象”抽象的结构的全套数据结构和函数实体。第六步:顺利完成项目。 模拟代码是以下:

1 .首先定义对象,包含必要的属性,即变量和方法,即函数:

typedefvoid(*pfunc_led_on_t ) ) void; typedefvoid(*pfunc_led_off_t ) ) void; typedefvoid(*pfunc_led_delay_t ) ) int; voidled_on(void; voidled_off(void; voidled_Delay(ints; struct led{//方法1 :点亮pfunc_led_on_t von=led_on; //von是函数指针,用于指示变量//方法pfunc_led_off_t voff=led_off; //voff是函数指针,变量//方法3 :延迟pfunc _ led _ delay _ TV delay=led _ off; } 2.实例化对象,调用对象的方法实现流水灯:

voidmain(void ) {struct led led1,led2; //创建变量本质上是实例化一个对象while(1) {led1.von )。 led2.voff (; LED1.vdelay(1) led2.von ); led1.voff (; led2.vdelay(1) }这里的代码比前面的代码简单多了,但这里重要的不是代码的难易程度,而是感受面向流程和面向对象的想法之间的差异。 在面向对象的编程中,首先要考虑的是完成任务所需的对象以及该对象应该具有的方法。面向对象认为:万物皆是对象,所有操作全是对象的方法,所有变量全是对象的属性面向对象和面向过程是共存的。 或者说,面向对象是基于过程而不是替代。

2.3要以面向对象的方式实现C本机支持的面向对象,请使用class关键字:

classled { public : void on (void ); voidoff(void; } void led : on { void } { } void led :3360 off { void } }以上代码与第2部分实现的功能相同,但代码上明显简洁。 在class中,类和内部方法是天然绑定的,后续可以直接调用,但在之前的struct中函数指针绑定,函数指针和实际方法没有天然绑定,需要手动分配绑定这被称为本机支持的面向对象。 用c实现面向对象非常方便,而c需要拐很多弯,但实现的效果没有本质上的差别。

3 .归纳面向对象是相对于过程导向而言的。 编程时,关注对象的方向从“进程”变为“对象”。 面向对象的外部图像是组织代码和编写程序的方法。 面向对象的本质是封装数据、看待问题的更高层次的视角,是应对日益复杂的问题、处理日益庞大的程序的更有效的方法。 语言从非面向对象演化为面向对象是自然的增长。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。