脚本宝典收集整理的这篇文章主要介绍了Cocoa改造前篇 - 说在前面的,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
更好的阅读体验请点击 原文
从面相对象说起
面向对象的程序设计
(Object-Oriented PRogramming,简记为OOP)这个概念大家都有所耳闻,目前(2017.12),在Tiobe世界语言排行榜上排前十的语言中,c语言和AsSEMbly language(汇编)外的八种语言均原生支持面向对象的程序设计
。
<!--more-->
怎么判断一种编程语言是否支持OOP呢?看看这门语言是否支持类(class)、对象(object)、封装(encapsulation)、继承(inherITance)等功能和特性,支持这些就可以进行面向对象编程。拿Objective-C(OC)来说,类就是Class
,对象就是instance
,万物的基类是NSObject
,这些东西在C语言里并不存在,是OC使用C语言的结构体(struct)抽象出来的产物。
我们从Objective-C的名字上也能看出一些端倪,直译过来是对象化的C语言
,当然不仅是OC,排行榜前十中的C++同样是C语言的一个超集;C#和Java同样属于类C语言,把面向对象做的更加彻底;PHP虽然是脚本语言,其解释器是使用C语言写的;而我们常说的Python,其全称则是CPython,也是用C语言实现的解释器,当然python解释器也有Java和C#实现的版本。
为什么C语言,比其他语言显得更底层呢?接触过的朋友相信都有很深的体会,C语言的程序,是在和图灵机硬件打交道,变量、数组、结构体,声明在堆内存就要为其分配内存空间大小,分配了内存,就要手动回收;数组还要区分静态和动态,每块数据占几个字节,躺在内存的什么位置,一切都按编程人员的安排。所以有人说C语言就是一个高级汇编,想起来确实有一分道理(笑)。但在智能手机、移动计算机计算能力大大提升的今天,计算资源早已不是通用编程首先考虑的问题,相比于C语言强迫编程人员从机器的角度设计程序,抽象程度更高的OOP才更接近人脑的思维方式,才更适合提高软件工程师的编程效率。
即使如此,仍有一部分人至今站在OOP的对立面,从代码复杂度、建模能力要求等方面提出异议,坚持写C++、Python、PHP的时候不构造类,写纯过程的程序。但其实,这些自称为原C党的朋友,并不能说自己没有使用OOP,因为这些语言中变量,跟C语言中的变量,有本质的不同。
就用字符串
和数组
来举例子,C语言是没有string类型的,只有字符数组,用