"间接"与“面向对象”

               学习OC,偶有收获,写一些体会,我是编程新手,如果文中有哪里不准确,跪求指正。

         先说“间接”,我接触编程4个月来,已经接触了各种“间接”的过程,大家经验丰富,想必感受比我要深得多。编程的过程中,增加间接层,可以得到许多便利,Android做界面,把所有的尺寸、颜色、样式、图片,分别放在固定的文件或文件夹中,然后在布局中通过name去引用过来,这就是一种间接。同样的,编程过程中,通过变量去操作一些值,这是一种间接;通过文件去记录数据,然后在代码中引入文件,而不是直接把数据敲在代码里,这是一种间接;方法通过参数去获取要处理的数据,这是一种间接。“间接”思想在编程中的应用真的很广,今天看到一句话“只要再多添加一层间接,计算机科学中就没有解决不了的问题”,我读书少,还体会不到间接有这么大的作用。。

         在看到《Objective-C基础教程》第3章之前,我从来没想过“间接”和“面向对象”之间有什么关系,书中竟赫然写着“间接是OOP的核心”。因为我接触编程比较晚,可能这是常识,大家不要笑话我,不过看到这句话确实对我震撼很大,尤其是后面,“OOP不只用间接来获取数据,OOP真正的革命性在于它使用间接来调用代码。不是直接调用某个函数,而是间接调用,这是OOP的内涵,其他一切都是通过间接产生的引申效果。”可能对OOP的理解有多种角度,但是这种角度确实很有深度。

         下面我尽量用自己的话来讲一下书中的内容,这样把书中的知识输入大脑,再用自己的话表达出来,对学习的帮助很大,但是对于读者可能不太友好,如果哪里没说清,欢迎讨论。

         首先讨论一下面向过程和面向对象,面向过程的编程思路是“函数第一,数据第二”,你决定做什么事情就要写什么函数,然后调用它,传给它所需的数据,数据为函数服务。比如你想画一个圆,你就要写个画圆的函数,然后传给它圆心、半径、颜色等等数据,这种程序扩展和维护起来非常困难,每增加一个功能,很多情况下你不得不修改很多的代码。面向对象的编程思路是“数据第一,函数第二”,数据可以通过间接的方式引用代码去修改自己,同样是画一个圆,在面向对象这里,就是新建一个圆,让它去“画自己”,圆这个对象是一个数据集,包含各种成员变量的值,比如圆心、半径、颜色等等,还包含一个指向其所属类的指针(OC语言里)。OC中“[circle draw];”,Java中circle.draw(),语句里circle都代表一个对象,draw都代表你写的那个画自己的方法,这里讨论OC中语句执行的原理,“draw”这个信息传给对象circle,然后根据circle里的指针找到其所属类,执行类中的draw方法,并给该方法传入一个代表对象自身的self隐形参量,就是这样,数据通过间接的方式找到并执行了代码,对自己做了相关的操作,数据第一,函数(方法)为数据服务。这种思路强大在,你想增加一个功能,只需拓展和继承,很少去修改那些原来的执行起来没有任何问题的代码。这也很好地遵守了Bertrand Meyer的开放/关闭原则(Open/Closed Principle),即软件实体对扩展开放,对修改关闭。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值