- 1、本文档共88页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Objective-C教程.doc
一、面向对象编程介绍
面向对象编程基本概念 (1/4)
1、面向对象概念
目前你可能听说过很多面向对象的语言,如C++和Java,本课程的Objective-C同样也是一种面向对象的编程语言。面向对象有一个共同的特征就是允许你使用有别于面向过程语言的方式来设计并编写程序。
面向过程语言使程序员通过编写由数据类型组成的程序块或函数来操作数据,这就造成程序设计人员采用功能块的方式来设计程序,采用这种方式无法使程序应该实现什么和怎么来实现彻底分开。
而面向对象语言能够让程序设计人员采用一种接近真实世界的方式来设计程序,而不仅仅是考虑需要处理的数据和功能实现。面向对象提出了对象的概念,而且你可以将消息发送给这些对象。我们这里所说的对象就是当其他程序或对象调用这个对象时,它可以操作自身的数据,而对象本身具有相应的行为和属性。
例如我们有这么一个对象,它可以在窗体上画一个长方形,此时你只需要给它发送一个消息,这个消息包含长和宽以及位置坐标,那么这个对象收到消息后就可以在窗体上画出一个长方形了。
右侧是一个非常简单的Objective-C程序,如果你已经学完了《C语言基础》的课程,那么这个程序对你来说肯定太简单了,它要做的就是在终端上打印出Hello, Objective-C!的字样,同时给操作系统返回数字0。
hello.m
#import Foundation/Foundation.h
int main(int argc, const char *argv[])
{ NSLog(@Hello, Objective-C!);
return (0);
} // main
面向对象编程基本概念 (2/4)
2、什么是Objective-C?
Objective-C语言是一种非常强大的面向对象编程语言,它对ANSI-C语言进行了扩展,增加了很多新的关键字和编译器的指令,并增加了向对象发送消息的句法。这种对C语言非常简单的扩展,完全由Objective-C的新编译器libobjc来完成,当然程序员通常情况下,不用关心这个新的编译器。
在编译Objective-C源代码的过程中,新增的面向对象功能由称为Runtime库来完成。这个Runtime库使动态的决定类型和绑定成为可能,使Objective-C语言成为了真正的面向对象编程语言。
由于Objective-C语言扩展了C语言的构造(增加了很多编译器的指令和句法),你依然可以很轻松地将你的C语言代码集成进Objective-C中。实际上,一个Objective-C的程序让C语言程序员看起来很亲切,因为Objective-C语言依然使用main函数。
相对于其他编程语言,Objective-C比C++和Java更加的动态话,因为所有的方法调用都被放在了运行时。
温馨提示:按F11键可全屏编辑代码
candoc.m
#import Foundation/Foundation.h
#include stdio.h
int main(int argc, const char *argv[])
/* 在这里键入Objective C 和 C 代码 */
NSLog(@Objective-C Standard string\n)
printf(you can program C in OC\n);
return(0);
面向对象编程基本概念 (3/4)
3、Objective-C的历史
作为编程语言来说,Objective-C有悠久的历史。20世纪80年代早期Objective-C被Stepstone公司发明,作者是Brad Cox和Tom Love。80年代后期,NeXT计算机有限责任公司获得了使用Objective-C来开发NeXTStep框架的授权,也就是后来的Cocoa。
Objective-C是非常“实际”的语言。它使用一个用C写成的、很小的运行库,使用其开发的应用程序占用空间会很小。和大部分面向对象的系统使用极大的虚拟机的执行时间取代整个系统的运作相反,用Objective-C写成的程序通常不会比其原始码大很多。
Objective-C的最初版本并不支持垃圾回收,虽然某些第三方版本已加入这个功能, 苹果公司在其Mac OS X 10.3中仍未引入这个功能。
另一个问题是Objective-C不包括命名空间机制(namespace mechanism),取而代之的是程序设计师必须在其类别名称加上前缀,时常引致冲突。在2004年,在Cocoa编程环境中,所有Mac OS X类别和函数式均有“NS”作为前缀,例如,NSButton或CGImageRef就能清楚知道NSButton属于UIKit框架而CGImageRef属于Core Graphics框架。使用“NS”是由
文档评论(0)