没有合适的资源?快使用搜索试试~ 我知道了~
基于Objective-C的面向对象编程
4星 · 超过85%的资源 需积分: 9 15 下载量 116 浏览量
2010-05-17
11:58:14
上传
评论
收藏 398KB PDF 举报
温馨提示
试读
20页
Objective-C 是一种设计用来支持面向对象开发的简洁的计算机语言,它是标准C语言的一个很小但是很强大的超集。除了C之外,Objective-C主要基于Smalltalk,最早的面向对象的编程语言之一。Objective-C以一种简单和直接的方式使得C语言具有了面向对象的能力。如果您以前从来没有使用过面向对象的方法开发程序,本文档则能够帮助您熟悉面向对象的开发技术。它阐述了面向对象设计的意义,以及如何开发面向对象的程序. 谁应该阅读本
资源推荐
资源详情
资源评论
概述
本部分包含如下内容:
谁应该阅读本文档
本文档的组织结构
参考
面向对象的开发方法使得程序开发更加直观、快捷,程序更容易被重构、理解。大多数面向对象开发环境
至少由以下三个部分组成:
对象库
开发工具集
支持面向对象的编程语言和相应的类库
Objective-C 是一种设计用来支持面向对象开发的简洁的计算机语言,它是标准 C 语言的一个很小但是很
强大的超集。除了 C 之外,Objective-C 主要基于 Smalltalk,最早的面向对象的编程语言之一。Objective-C
以一种简单和直接的方式使得 C 语言具有了面向对象的能力。
如果您以前从来没有使用过面向对象的方法开发程序,本文档则能够帮助您熟悉面向对象的开发技术。它
阐述了面向对象设计的意义,以及如何开发面向对象的程序.
谁应该阅读本文档
本文档的阅读对象为对如下几个方面感兴趣的读者:
面向对象编程
Cocoa 应用程序框架的基础
Objective-C 编程
本文档介绍了 Objective-C 所基于的面向对象模型。
本文档不是 C 语言的介绍文档,所以假设您已具备 C 语言的相关知识。然而,您无需为您不是一个熟练的
C 程序员而担心,因为 Objective-C 的面向对象编程和基于过程的标准 C 的编程有很大不同。
重要: 本文档只是描述了对于使用 Objective-C 编程来说很重要的一些基础概念,并没有对 Objective-C
语言本身做过多的叙述,如果您对 Objective-C 语言感兴趣,请参考 Objective-C 2.0
程序设计语言
。
本文档的结构
本文档分为如下几个章节:
“为何是Objective-C?” 解释了为什么选择Objective-C作为Cocoa框架的开发语言。
“面向对象编程” 讨论了面向对象编程的基本原理,并阐述了面向对象技术背后的思想,介绍了大
量的专门术语。即使您已经对面向对象编程非常熟悉,也推荐您阅读一下该章节,从而对面向对象的
Objective-C和使用的术语有一个感性认识。
“对象模型”
原文地址:http://www.apple.com.cn/developer/Documentation/index.html
整理:http://www.aisidechina.com/forum/
“程序的组织结构”
“结构化编程”
参考
Objective-C 2.0
程序设计语言
介绍了Objective-C编程语言。
Objective-C 2.0
运行时系统编程指南
描述了怎样和Objective-C运行时系统交互。
Objective-C 2.0
运行时系统参考库
介绍了 Objective-C 运行时系统库的数据结构和函数。您的程序可以使
用这些接口来和 Objective-C 运行时系统进行交互。例如,你可以增加类或者方法,或者获取所有已经加
载的类的类定义表单。
为何是Objective-C?
Cocoa 框架选择了 Objective-C 作为开发语言有许多方面的原因。首先,也是最主要的原因,它是一个面
向对象 的语言。Cocoa 框架中的很多功能只能通过面向对象的技术来呈现,本文档将对 Cocoa 框架的功
能进行具体阐述并介绍怎样使用它们。其次,是标准 C 语言的一个超集,现存的 C 程序无需重新开发就能
够使用 Cocoa 软件框架,并且您可以在 Objective-C 中使用 C 的所有特性。您可以选择什么时候采用面向
对象的编程方式(例如定义一个新的类),什么时候使用传统的面向过程的编程方式(定义数据结构和函
数而不是类)。
此外,Objective-C 是一个简洁的语言,它的语法简单,没有歧义,并且易于学习。 因为易于混淆的术语
以及抽象设计的重要性,对于初学者来说,面向对象编程的学习曲线比较陡峭。象 Objective-C 这种结构
良好的语言使得成为一个熟练的面向对象程序员更为容易。 介绍 Objetive-C 的章节也如同其语言本身一
样简洁。
和其他的基于标准 C 语言的面向对象语言相比,Objective-C 对动态机制支持得更为彻底。编译器为运行
环境保留了很多对象本身的数据信息,因此某些在编译时需要做出的选择就可以推迟到运行时来决定。这
种特性使得基于 Objective-C 的程序非常灵活和强大。例如,Objective-C 的动态机制提供了两个一般面向
对象语言很难提供的优点:
Objective-C 支持开放式的动态绑定,从而有助于交互式用户接口架构的简单化。例如,在
Objective-C 中发送消息既无需考虑消息接收者的类也不用考虑方法的名字,从而可以允许用户在运
行时再做出决定,也给了开发者在设计时极大的自由(术语“动态绑定” ,“消息“,“消息接收者”, “类”
将在随后的章节中进行介绍)。
Objective-C 的动态机制成就了各种复杂的开发工具。运行环境提供了访问运行中程序数据的接
口,所以使得开发工具监控 Objective-C 程序成为可能。
注意:作为编程语言来说,Objective-C 有很悠久的历史。它在二十世纪八十年代早期被发明于 Stepstone
公司,作者是 Brad Cox 和 Tom Love。八十年代后期,NeXT 计算机有限责任公司获得了使用 Objective-C
来开发 NeXTStep 框架的授权,也就是后来的 Cocoa。NeXT 在多方面对 Objective-C 进行了扩展,例如
协议部分。
面向对象编程技术
在现实生活中,我们必须弄明白我们所面对的大量的事实以及观念。为此,我们需要从表面细节中抽象出
其内在逻辑,发现事物的本质。抽象法可以帮助我们揭示事物的因果,结构和表现形式,区分主要和次要。
原文地址:http://www.apple.com.cn/developer/Documentation/index.html
整理:http://www.aisidechina.com/forum/
面向对象编程提供了一种对您所操作的数据进行抽象的方法—而且,面向对象编程将数据和对数据的操作
组合到一起,从而使数据具有了行为。
本部分包含如下内容:
数据和操作
接口和实现
数据和操作
传统的编程语言通常划分成两个部分—数据和对数据的操作。数据是静态的,不变的,除非通过操作来改
变它。对数据操作的函数并不保留上一次操作时数据的状态,它们的作用仅体现在操作数据上。
很明显,这种划分是基于计算机的工作方式,所以您很难忽视它。和无处不在的原料和能量以及名词和动
词的划分一样,它构成了程序的本质。从某种意义上说,所有的程序员—即使是面向对象的程序员—都是
工作在数据结构之上,他们的程序也会使用和定义函数来操作数据。
对于面向过程编程语言例如 C 来说,这几乎就是一切了。语言本身可能为组织数据和函数提供了多种支持,
但是本质上仍然是分成数据和操作两个部分。函数和数据结构是设计的基本元素。
面向对象编程当然不会这样来划分,而是在更高的层次重新组织。它把操作和数据组合为一个模块单元叫
做对象 ,并且把对象组成一个结构化的网络来完成一个程序。在面向对象的编程语言中,对象和对象间的
交互才是设计的基本元素。
每个对象都具有状态(数据)和行为(对数据的操作)。也就是说,它们和物理实体并没有太大区别。一
台机械装置例如怀表、钢琴如何体现自己的状态和行为是显而易见的,然而几乎每样功能性的物体都能够
体现自己的状态和行为。即使一个普通的瓶子也会有状态(饼子有多满,瓶子是否已经打开,瓶子所装的
液体温度多少)和行为(以不同的流量倒出所装液体,盖上或者打开,加热或者制冷)。
正是这种与实物的相似性赋予了对象强大的能力和吸引力。这些对象不仅可以对现实系统的组件建模,也
能够胜任软件系统中的同样的角色。
接口和实现
编写一个程序,您需要对问题进行抽象, 并使用程序将其表达出来。这正是编程语言帮您做的工作。编程
语言可以帮助您对抽象后的问题进行编码从而使得程序的编写和设计过程更为简单。它使您只用关注您所
写的代码和程序的架构而无需关心表面的细节。
所有的程序语言都提供了对抽象后的问题进行编码的方法。本质上,这些方法就是怎样分离并隐藏实现细
节,然后至少在某种程度上,提供给这些细节一个公共的接口—就像机械装置将它的表面和内部的构造分
离一样—如图"接口和实现"所示。
图 2-1 接口和实现
原文地址:http://www.apple.com.cn/developer/Documentation/index.html
整理:http://www.aisidechina.com/forum/
随着对该装置的观察角度不同,您所关注的层面也不同。作为一个实现者,您需要关心它是由什么构成并
且怎样工作的。作为一个用户,您仅需要关心它是什么并且它能够做什么。您可以略过那些具体的细节而
从更高层次来考虑问题。
在 C 语言中,程序的基本单位是结构体和函数,这两者从不同的方面隐藏了具体实现细节。
从数据方面,C 中的结构体把数据组合成一个更大的单位从而可以象一个单独的实体一样对它进
行操作。尽管有时候代码需要访问结构体内部的数据,但程序一般都将结构体作为一个单独的数据实
体来对待—而不是数据的集合。结构体能包含另一个结构体,从而组成复杂的数据结构。
在现代 C 语言中,结构体中的数据元素位于该结构体的名字空间—也就是说,结构体内的元素名字
不会和结构体外的同名元素冲突。 划分名字空间对保证实现细节和接口的分离来说是非常必要的。
例如,试想一下,在一个大规模的程序中给每个数据元素赋予一个不同的名字并且保证新的命名不会
和已存在的命名冲突是一件多么巨大的工作。
从过程方面,函数封装了一些可以重复使用而不用重新实现的行为(操作)。和结构体的数据元素
一样,函数中局部变量也处于该函数自己的名字空间。函数可以调用其他的函数,从而组成复杂的逻
辑。
函数是可复用的。一旦函数被定义,则可以不限次的调用而无需再重新实现。一些被广泛使用的函数
可能被收集在函数库中并且在不同的应用程序中被重用。用户只需要函数的接口,而不需要知道函数
的实现。
然而,和结构体中数据元素不同的是,函数并没有划分不同的名字空间。每个函数的名字必须唯一。
尽管函数是可复用的,但函数名不是。
C 语言中的结构体和函数都能够帮助您对问题进行抽象,但是它们仍然区分了数据和对数据的操作。在面
向过程的编程语言中,问题要么被抽象成数据,要么被抽象成操作。您的程序总是按照计算机的工作方式
去设计。
面向对象的语言没有抛弃结构体和函数的优点—它更深入了一步,将问题抽象成更高层次的单位,从而隐
藏了函数和数据之间的交互。
例如,假设您有一组函数(接口)作用于某个特定的数据结构。您希望这些数据结构和接口无关从而使得
这些函数尽可能的易于使用,所以提供了一些额外的函数来管理这些数据。所有对该数据结构的操作—分
配内存空间,初始化,获取数据,更改数据,更新数据,释放内存空间—都通过这些额外的函数来进行。
用户所需要做的只是以该数据结构为参数调用这些函数。
这样,该数据结构对其他的程序员来说是不透明的,他们无需关心该数据结构的内部构成,从而专注于函
数的功能,而不是该数据结构。到现在为止,您已经完成了创建对象的第一步。
原文地址:http://www.apple.com.cn/developer/Documentation/index.html
整理:http://www.aisidechina.com/forum/
剩余19页未读,继续阅读
资源评论
- ly4456651282013-05-14ios的开发语言,还不错。
白板码匠
- 粉丝: 4
- 资源: 17
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功