`

用于处理分数的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-C2.0程序设计

    3.3 用于处理分数的Objective-C类 3.4 @interface部分 3.4.1 选择名称 3.4.2 实例变量 3.4.3 类和实例方法 3.5 @implementation部分 3.6 Program部分 3.7 实例变量的访问以及数据封装 3.8 小结 3.9 练习 第4章 数据...

    matlab求导代码-PDScores:PDS分数

    该库是一些MATLAB代码的Objective-C实现,该代码最初由Max Little编写,用于分析与帕金森氏病症状相关的智能手机传感器读数。 执照 Max Little的原始MATLAB代码已获得许可。 根据该许可的条款,作为衍生作品,该库可...

    HTMLSpecialCharacters:在Swift中转义HTML特殊字符的库

    但这是用Objective-C编写的。测试码HTMLSpecialCharacters通过了的相同测试代码。 请检查一下。表现HTMLSpecialCharacter可以比更快地转义/转义HTML特殊字符。 下图显示了转义/取消转义测试代码的性能。 这些分数是...

    score:两人的PhoneGap应用可为您的手机评分,例如拼字游戏

    您无需学习Objective-C,.Net或Java即可编写您的手机应用程序。 开发中的测试 我发现非常适合在实际构建应用程序之前对其进行迭代测试。 您将Desktop App程序加载到开发工作站上,并指向文件夹以提供应用程序。 ...

    nuwe-charts-ios:一个动态图表库,用于轻松创建 Nuwe Score 表盘图表和历史条形图

    Nuwe-charts是一个 iOS7+ 动态图表库,用于轻松创建 Nuwe 分数“拨号图表”和历史“条形图”。 Nuwe-charts可帮助您通过信息丰富的集成数据图表使数据栩栩如生,它在Nuwe 的用于向用户显示他们日常活动的信息。 ...

    AppleGenericVersioning:说明 Apple 通用版本控制的使用; 带有单元测试的简单存根框架

    Apple 通用版本控制 该项目说明了 Apple 通用版本控制的... 因此版本号要么是整数(实际上是没有分数的浮点数)要么是浮点数。 XYZ 无法容纳在浮点数内 - 小数点太多。 这是 Apple 文档中关于CURRENT_PROJECT_VERSION

    SkaterBrad:Skater Brad,一款 2D 滑板跑酷游戏

    尝试在 Game Center 上击败您朋友的分数,以证明您不是个装腔作势的人!游戏玩法扮演布拉德穿越西雅图风景区的障碍物。 不要通过跳跃(向上滑动)、蹲伏(向下滑动)或跳高(向上滑动两次)而撞毁和燃烧。发展...

    MathEditor:iOS数学方程式编辑器

    MathEditor是用于iOS上数学公式的WYSIWYG编辑器。 它提供了一个UIView,可在渲染数学时对其进行编辑。 为了渲染数学,它使用库获取LaTeX样式排版。 数学键盘包含在编辑器中。 但是,您可以提供自己的键盘,也可以...

Global site tag (gtag.js) - Google Analytics