现在,我们将用Objective-C定义一个实际的类,并学习如何使用类的实例。
同样,我们将先学习过程。因此,实际的程序范例可能不是特别实用,那些更加实际的内容将在稍后讨论。
假设要编写一个用于处理分数的程序,可能需要处理加、减、乘、除等运算。如果你还不知道什么是类,那么可以从一个简单的程序开始,代码如下:
// 采用分数的简单程序
#import <Foundation/Foundation.h>
int main (int argc, char * argv[])
{
@autoreleasepool {
int numerator = 1;
int denominator = 3;
NSLog (@"The fraction is %i/%i", numerator, denominator);
}
return 0;
}
The fraction is 1/3
在代码清单3-1中,分数是以分子和分母的形式表示的。在@autoreleasepool指令之后,main中的前两行将变量numerator和denominator都声明为整型,并分别给它们赋予初值1和3。这两个程序与下面的程序行等价:
int numerator, denominator;
numerator = 1;
denominator = 3;
将1存储到变量numerator中,将3存储到变量denominator中,这样就表示分数1/3。如果需要在程序中存储多个分数,这种方法可能比较麻烦。每次要引用分数时,都必须引用相应的分子和分母,而且操作这些分数也相当困难。
如果能把一个分数定义成单个实体。用单个名称(例如myFraction)来共同引用它的分子和分母,那就会更好。这种方法可以利用Objective-C来实现,从定义一个新类开始。
代码清单3-2通过一个名为Fraction的新类,重写了代码清单3-1中的函数。下面给出这个程序,随后将详细介绍它是如何工作的。
// 使用分数的程序——类版本
#import <Foundation/Foundation.h>
//---- @interface 部分 ----
@interface Fraction: NSObject
-(void) print;
-(void) setNumerator: (int) n;
-(void) setDenominator: (int) d;
@end
//---- @implementation 部分 ----
@implementation Fraction
{
int numerator;
int denominator;
}
-(void) print
{
NSLog (@"%i/%i", numerator, denominator);
}
-(void) setNumerator: (int) n
{
numerator = n;
}
-(void) setDenominator: (int) d
{
denominator = d;
}
@end
//---- program 部分 ----
int main (int argc, char * argv[])
{
@autoreleasepool {
Fraction *myFraction;
// 创建一个分数实例
myFraction = [Fraction alloc];
myFraction = [myFraction init];
// 设置分数为1/3
[myFraction setNumerator: 1];
[myFraction setDenominator: 3];
// 使用打印方法显示分数
NSLog (@"The value of myFraction is:");
[myFraction print];
}
return 0;
}
The value of myFraction is:
1/3
从代码清单3-2的注释中可以看到,程序在逻辑上分为以下3个部分:
@interface部分
@implementation部分
program部分
其中,@interface部分用于描述类和类的方法;@implementation部分用于描述数据(类对象的实例变量存储的数据),并实现在接口中声明方法的实际代码;program部分的程序代码实现了程序的预期目的。
注意
也可以在interface(接口)部分为类声明实例变量。从Xcode 4.2开始,已经可以在implementation(实现)部分添加实例变量,这是为了能够以一种更好的方式来定义类。在后面章节中说明了原因。
以上3个部分存在于每个Objective-C程序中,即使你可能不需要自己编写每一部分。你会看到,每一部分通常放在它自己的文件中。然而,目前来说,我们将它们放在一个单独的文件中。
本文节选自《Objective-C 程序设计(第4版)》
电子工业出版社出版
[美]Stephen G. Kochan(斯蒂芬·G·科昌)著
林冀 范俊 朱奕欣译
分享到:
相关推荐
Objective-C是一种强大的面向对象的编程语言,主要用于Apple的iOS和macOS平台开发。在这个"Objective-C示例代码1"中,我们很可能找到了一个关于Objective-C编程的实例,它可能涉及了类、对象、消息传递等核心概念。...
### Objective-C 快速入门详解 ...Objective-C 提供了一套完整的面向对象编程框架,包括类的定义、实例化、构造器、访问权限控制、异常处理等特性。通过上述知识点的学习,你可以快速上手 Objective-C 的基础编程技巧。
《Objective-C编程》第4版是一本专注于Objective-C语言的书籍,Objective-C是一种面向对象的编程语言,广泛用于苹果公司的操作系统和应用开发中。本书主要面向那些已经具备一定编程基础,并希望深入学习Objective-...
3. **事件处理**:游戏响应用户的键盘或触摸输入,Objective-C中的`NSEvent`或`UIEvent`类用于捕获这些输入。开发者可能会实现`touchesBegan`、`touchesMoved`、`touchesEnded`等方法来处理用户操作。 4. **定时器...
`Fraction`类可能属于Cocoa框架的一部分,用于处理分数计算。 关于数据库,虽然标签提到的是“数据库”,但在提供的内容中并未直接涉及数据库操作。Objective-C通常使用Core Data框架来处理数据库相关任务,Core ...
Swift中的UIKit框架提供了丰富的UI组件,如UIImageView用于显示游戏背景,UILabel用于显示分数,以及UIButton用于控制游戏的开始和暂停。利用AutoLayout和Size Classes可以确保游戏界面在不同设备上适配良好。 在...
Objective-C是C语言的超集,扩展了消息传递机制和类的概念,支持类别、协议、继承等特性。在创建贪吃蛇游戏时,我们可能会定义几个关键类: 1. **GameScene**:这是游戏的主要视图,负责绘制游戏界面和处理用户输入...
类中包含了两个实例变量`numerator`和`denominator`,以及一个`print`方法用于打印分数。 - **实现**:实现了`Fraction`类中的`print`方法,使用`NSLog`函数打印出分数的具体数值。 #### 四、小结 以上介绍了...
1. **Objective-C基础知识**:Objective-C是在C语言的基础上扩展的,增加了Smalltalk风格的消息传递机制和类的特性。它支持类、继承、多态、协议等面向对象概念。 2. **面向对象编程(OOP)**:描述中的“还没有...
- **兼容性**:由于Objective-C基于C语言,因此它与C语言具有高度的兼容性。这意味着C语言中的函数和代码可以直接在Objective-C中使用。 - **消息传递机制**:Objective-C中的方法调用实际上是一种消息传递机制。当...
Objective-C是在C语言基础上添加了消息传递机制和类的特性,使得它更适合于构建面向对象的软件。它的语法特点包括使用`@interface`定义类,`@implementation`实现类,以及`-`(实例方法)和`+`(类方法)来区分方法...
在打砖块游戏中,Objective-C可以用于创建游戏对象(如球、挡板、砖块),处理用户输入,计算物理运动,以及实现游戏逻辑。 2. **Swift简介** Swift是苹果在2014年推出的新一代编程语言,它吸收了Objective-C的优点...
从标题 "score.zip_JavaScript/JQuery_Objective-C_" 可以推测,这个项目可能是关于在 Web 开发中使用 JavaScript 和 JQuery 实现分数运算,而 Objective-C 可能用于 iOS 应用中的类似功能。接下来,我们将深入探讨...
Objective-C是一种基于C语言的面向对象编程语言,广泛应用于苹果的iOS和macOS开发。它在C语言的基础上添加了面向对象的特性,并引入了Smalltalk的动态性。本篇文章将深入探讨Objective-C的程序结构以及面向对象编程...
在打砖块游戏中,Objective-C将用于构建游戏逻辑、用户交互、图形渲染等多个关键模块。 游戏的核心部分通常包括以下几个组件: 1. **游戏循环(Game Loop)**:游戏循环是任何游戏的基础,它不断地更新游戏状态并...
首先,Objective-C是C语言的超集,它添加了面向对象编程的特性,如类、继承、封装和多态。在开发分数计算器时,我们需要理解这些概念,以便构建出结构清晰、可扩展的代码。 设计阶段,我们应考虑以下几点: 1. 用户...