• 用于处理分数的ObjectiveC类


    现在,我们将用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·科昌)著

    林冀 范俊 朱奕欣译

     

  • 相关阅读:
    codevs 3249 搭积木
    BSGS算法+逆元 POJ 2417 Discrete Logging
    POJ 1012 Joseph
    SPFA cojs 176. [USACO Feb07] 奶牛聚会
    素数筛 codevs 1675 大质数 2
    单片机软件proteus的汉化步骤
    直升机和固定翼实操期末考试
    二、万用表使用方法
    拉伸切除
    拔模
  • 原文地址:https://www.cnblogs.com/broadview/p/2762011.html
Copyright © 2020-2023  润新知