《Objective-C入门经典》——2.1节Objective-C世界中的面向对象程序设计

  1. 云栖社区>
  2. 博客>
  3. 正文

《Objective-C入门经典》——2.1节Objective-C世界中的面向对象程序设计

异步社区 2017-05-02 14:16:00 浏览1300
展开阅读全文

本节书摘来自异步社区《Objective-C入门经典》一书中的第2章,第2.1节Objective-C世界中的面向对象程序设计,作者【美】Jesse Feiler,更多章节内容可以访问云栖社区“异步社区”公众号查看

2.1 Objective-C世界中的面向对象程序设计
Objective-C入门经典
面向对象程序设计可能是现在最常用的程序设计范式了,但究竟什么是面向对象程序设计却并没有一个清晰的定义。最常见的非正式描述(不是定义)是说它是一种使用对象—方法和变量的组合体,表示程序中的概念或物理对象—作为基本的构建块的程序设计风格。在构建程序时,如果能够将程序组件直接对应到物理世界中的对象和概念,就会使开发软件变得更加容易,这是因为程序员可以在同一抽象层次考虑对象和软件所建模的概念。

除了需要理解基本的对象概念之外,还需要理解其他一些概念,包括数据抽象、封装、消息、模块化、多态以及继承(这个列表来自于Wikipedia上介绍面向对象程序设计的文章)。Objective-C实现了所有这些概念,本章主要介绍数据抽象、封装和模块化。后续各章将会对剩下的概念予以介绍。

2.1.1 实现面向对象程序设计
尽管本书关注的是Objective-C并且也不会将其与其他语言进行比较,但需要指出的一点是,在20世纪60年代面向对象程序设计开始流行时,人们对如何开发实际的程序是存有异议的,他们分为两个派别。

面向对象语言—在过去几十年中,很多纯粹的面向对象语言被发明出来了,包括Simula、Ruby、Eiffel和Smalltalk。
面向对象添加(addition)—部分原因是让程序员学习一门全新的语言是一件比较困难的事情,因此很多混合语言被开发出来了,其中包括C++、Java、Python、C#以及Objective-C。面向对象特性也被添加进了诸如PHP之类的语言,甚至是Fortran和Cobol也增加了面向对象特性。

2.1.2 构建面向对象项目
在有了面向对象语言之后就可以开始构建面向对象项目了,但这仅仅是开始,可选择的构建方式有很多种。由于Objective-C几乎只用于构建Mac OS X和iOS项目,因此本节将只关注这两类项目。

面向对象程序设计的主要目标之一是使复用既有代码变得更加容易。当将代码封装进一个拥有结构良好的接口的正式对象中之后应该就能够复用那段代码了,设计该对象时所投入的精力会在将来复用该对象时得到收益的。

代码复用是Apple提供的开发环境中的关键部分,面向对象程序设计及其在Objective-C中的实现为复用提供了基础。iOS和Mac OS X上的复用是以框架为基础的。框架是一组实现开发者所关注的一些功能的相关类(和一些非类实体)。从本质上来讲,框架是将一组类组织起来的工具,使用框架需要将所需的类引入到项目中,开发者所做的工作实际上是与框架中的类进行交互并使用和子类化这些类。

读者在本书中将会接触到Cocoa和Cocoa Touch两个框架(在本书中如果没有明确地进行区分,两个环境是可以互换的)。Cocoa具备两个方面:一个用于运行时,另一个用于开发。

在创建Cocoa项目时通常是从Xcode中的模板开始的(读者也可以从在developer.apple.com上下载的示例开始)。这两种方式都在文件中提供了引入相关框架的import指令,读者还可以添加任何所需的import指令。

2.1.3 框架初探
读者一般会碰到两组框架,正如前面所讲的那样,框架主要是一种组织结构,在Xcode的Organizer窗口或其他一些地方的文档中可以找到这两组框架的介绍资料。在Mac OS X上,各种框架本身被分为5层。

用户体验
应用程序框架
图形和媒体(应用程序服务)
核心服务
整个结构的底层是Darwin内核
在iOS上,这5层为

应用程序
Cocoa Touch
媒体
核心服务
OS核心
与其他分层结构一样,每一层能够访问位于其下方的层,但无法访问位于其上方的层。因此,核心服务层的框架可以访问OS核心(iOS)和Darwin(Mac OS X)中的类,但无法访问在它上方的层,如媒体和界面处理类。

在这个结构中有两个框架几乎是每个项目都需要访问的,在Mac OS X中,这两个框架是

应用程序框架中的AppKit
核心服务中的Core Foundation
在iOS中,这两个框架是

Cocoa Touch中的UIKit
核心服务中的Foundation
尽管框架中的大部分内容是类的集合,但它们还会包含其他一些实体。比如说,Core Foundation和Foundation包含了诸如struct定义和typedef定义之类的C元素。对于这个结构而言,能够在Objective-C项目中使用原生C是非常重要的。

网友评论

登录后评论
0/500
评论
异步社区
+ 关注