`

用于处理分数的Objective-C类

阅读更多

现在,我们将用Objective-C定义一个实际的类,并学习如何使用类的实例。

同样,我们将先学习过程。因此,实际的程序范例可能不是特别实用,那些更加实际的内容将在稍后讨论。

假设要编写一个用于处理分数的程序,可能需要处理加、减、乘、除等运算。如果你还不知道什么是类,那么可以从一个简单的程序开始,代码如下:

代码清单3-1

// 采用分数的简单程序

 

#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;

}

 

代码清单3-1  输出

The fraction is 1/3

 

在代码清单3-1中,分数是以分子和分母的形式表示的。在@autoreleasepool指令之后,main中的前两行将变量numeratordenominator都声明为整型,并分别给它们赋予初值13。这两个程序与下面的程序行等价:

int numerator, denominator;

 

numerator = 1;

denominator = 3;

1存储到变量numerator中,将3存储到变量denominator中,这样就表示分数1/3。如果需要在程序中存储多个分数,这种方法可能比较麻烦。每次要引用分数时,都必须引用相应的分子和分母,而且操作这些分数也相当困难。

如果能把一个分数定义成单个实体。用单个名称(例如myFraction)来共同引用它的分子和分母,那就会更好。这种方法可以利用Objective-C来实现,从定义一个新类开始。

代码清单3-2通过一个名为Fraction的新类,重写了代码清单3-1中的函数。下面给出这个程序,随后将详细介绍它是如何工作的。

代码清单3-2

// 使用分数的程序—类版本

 

#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;

}

 

代码清单3-2  输出

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示例代码1

    Objective-C是一种强大的面向对象的编程语言,主要用于Apple的iOS和macOS平台开发。在这个"Objective-C示例代码1"中,我们很可能找到了一个关于Objective-C编程的实例,它可能涉及了类、对象、消息传递等核心概念。...

    objective-c快速入门

    ### Objective-C 快速入门详解 ...Objective-C 提供了一套完整的面向对象编程框架,包括类的定义、实例化、构造器、访问权限控制、异常处理等特性。通过上述知识点的学习,你可以快速上手 Objective-C 的基础编程技巧。

    Programming in Objective-C 4th Edition

    《Objective-C编程》第4版是一本专注于Objective-C语言的书籍,Objective-C是一种面向对象的编程语言,广泛用于苹果公司的操作系统和应用开发中。本书主要面向那些已经具备一定编程基础,并希望深入学习Objective-...

    多库俄罗斯方块Objective-c版本

    3. **事件处理**:游戏响应用户的键盘或触摸输入,Objective-C中的`NSEvent`或`UIEvent`类用于捕获这些输入。开发者可能会实现`touchesBegan`、`touchesMoved`、`touchesEnded`等方法来处理用户操作。 4. **定时器...

    Objective-C的语法与Cocoa框架.pdf

    `Fraction`类可能属于Cocoa框架的一部分,用于处理分数计算。 关于数据库,虽然标签提到的是“数据库”,但在提供的内容中并未直接涉及数据库操作。Objective-C通常使用Core Data框架来处理数据库相关任务,Core ...

    swift-贪吃蛇-Objective-C游戏-RetroSnaker

    Swift中的UIKit框架提供了丰富的UI组件,如UIImageView用于显示游戏背景,UILabel用于显示分数,以及UIButton用于控制游戏的开始和暂停。利用AutoLayout和Size Classes可以确保游戏界面在不同设备上适配良好。 在...

    iOS贪吃蛇代码(Objective-C)

    Objective-C是C语言的超集,扩展了消息传递机制和类的概念,支持类别、协议、继承等特性。在创建贪吃蛇游戏时,我们可能会定义几个关键类: 1. **GameScene**:这是游戏的主要视图,负责绘制游戏界面和处理用户输入...

    Objtive-c源码学习

    类中包含了两个实例变量`numerator`和`denominator`,以及一个`print`方法用于打印分数。 - **实现**:实现了`Fraction`类中的`print`方法,使用`NSLog`函数打印出分数的具体数值。 #### 四、小结 以上介绍了...

    简单的处理分数的程序

    1. **Objective-C基础知识**:Objective-C是在C语言的基础上扩展的,增加了Smalltalk风格的消息传递机制和类的特性。它支持类、继承、多态、协议等面向对象概念。 2. **面向对象编程(OOP)**:描述中的“还没有...

    object-c 和 Cocoa 框架 高清pdf

    - **兼容性**:由于Objective-C基于C语言,因此它与C语言具有高度的兼容性。这意味着C语言中的函数和代码可以直接在Objective-C中使用。 - **消息传递机制**:Objective-C中的方法调用实际上是一种消息传递机制。当...

    Plopp:一个用 Objective-C 构建的简单的三消游戏

    Objective-C是在C语言基础上添加了消息传递机制和类的特性,使得它更适合于构建面向对象的软件。它的语法特点包括使用`@interface`定义类,`@implementation`实现类,以及`-`(实例方法)和`+`(类方法)来区分方法...

    打砖块项目oc和swift.zip

    在打砖块游戏中,Objective-C可以用于创建游戏对象(如球、挡板、砖块),处理用户输入,计算物理运动,以及实现游戏逻辑。 2. **Swift简介** Swift是苹果在2014年推出的新一代编程语言,它吸收了Objective-C的优点...

    score.zip_JavaScript/JQuery_Objective-C_

    从标题 "score.zip_JavaScript/JQuery_Objective-C_" 可以推测,这个项目可能是关于在 Web 开发中使用 JavaScript 和 JQuery 实现分数运算,而 Objective-C 可能用于 iOS 应用中的类似功能。接下来,我们将深入探讨...

    浅析Objective-C的程序结构及面向对象的编程方式

    Objective-C是一种基于C语言的面向对象编程语言,广泛应用于苹果的iOS和macOS开发。它在C语言的基础上添加了面向对象的特性,并引入了Smalltalk的动态性。本篇文章将深入探讨Objective-C的程序结构以及面向对象编程...

    苹果手机打砖块游戏原码

    在打砖块游戏中,Objective-C将用于构建游戏逻辑、用户交互、图形渲染等多个关键模块。 游戏的核心部分通常包括以下几个组件: 1. **游戏循环(Game Loop)**:游戏循环是任何游戏的基础,它不断地更新游戏状态并...

    Fraction_Calculator.zip

    首先,Objective-C是C语言的超集,它添加了面向对象编程的特性,如类、继承、封装和多态。在开发分数计算器时,我们需要理解这些概念,以便构建出结构清晰、可扩展的代码。 设计阶段,我们应考虑以下几点: 1. 用户...

Global site tag (gtag.js) - Google Analytics