IOS OOP-过程式编程

1. 过程式编程的核心--函数
2. 代码例程

//

//  main.m

//  Draw Shapes Progress

//

//  Created by macsir on 12-10-12.

//  Copyright (c) 2012 __MyCompanyName__. All rights reserved.

//


#import<Foundation/Foundation.h>


typedefenum {

    kCircle,

    kRectangle,

    kOblateSheroid,

    kTriangle

} ShapeType;


typedefenum {

    kRedColor,

    kGreenColor,

    kBlueColor

} ShapeColor;


typedefstruct {

    int x, y, width, height;

}ShapeRect;


typedefstruct {

    ShapeType type;

    ShapeColor fillColor;

    ShapeRect bounds;

}Shape;


void drawCircle(ShapeRect bounds,ShapeColor fillColor);

void drawRectangle(ShapeRect bounds,ShapeColor fillColor);

void drawEgg(ShapeRect bounds,ShapeColor fillColor);

void drawTriangle(ShapeRect bounds,ShapeColor fillColor);

void drawShapes (Shape shapes[],int count);

NSString *colorName (ShapeColor colorName);


int main (int argc,constchar * argv[])

{


    Shape shapes[4];

    

    ShapeRect rect0 = {0, 0, 10, 30};

    shapes[0].type =kCircle;

    shapes[0].fillColor =kRedColor;

    shapes[0].bounds = rect0;

    

    ShapeRect rect1 = {30, 40, 50, 60};

    shapes[1].type =kCircle;

    shapes[1].fillColor =kGreenColor;

    shapes[1].bounds = rect1;

    

    ShapeRect rect2 = {15, 18, 37, 29};

    shapes[2].type =kCircle;

    shapes[2].fillColor =kBlueColor;

    shapes[2].bounds = rect2;

    

    ShapeRect rect3 = {47, 32,80, 50};

    shapes[3].type =kTriangle;

    shapes[3].fillColor =kRedColor;

    shapes[3].bounds = rect3;

    

    drawShapes(shapes, 4);

//    @autoreleasepool {

//        

//        // insert code here...

//        NSLog(@"Hello, World!");

//        

//    }

    return 0;

}


void drawShapes (Shape shapes[],int count)

{

    int i;

    for(i = 0; i < count; i++) {

        switch (shapes[i].type) {

            case kCircle:

                drawCircle(shapes[i].bounds, shapes[i].fillColor);

                break;

            case kRectangle:

                drawRectangle(shapes[i].bounds, shapes[i].fillColor);

                break;

            case kOblateSheroid:

                drawEgg(shapes[i].bounds, shapes[i].fillColor);

                break;

            case kTriangle:

               drawTriangle(shapes[i].bounds, shapes[i].fillColor);

               break;

                

            default:

                break;

        }

    }

}//drawShapes


void drawCircle(ShapeRect bounds,ShapeColor fillColor) 

{

    NSLog(@"drawing circle at (%d %d %d %d) int %@", bounds.x, bounds.y, bounds.width , bounds.height,colorName(fillColor));

}//drawCircle


void drawRectangle(ShapeRect bounds,ShapeColor fillColor) 

{

    NSLog(@"drawing circle at (%d %d %d %d) int %@", bounds.x, bounds.y, bounds.width , bounds.height,colorName(fillColor));

}


void drawEgg(ShapeRect bounds,ShapeColor fillColor) 

{

    NSLog(@"drawing circle at (%d %d %d %d) int %@", bounds.x, bounds.y, bounds.width , bounds.height,colorName(fillColor));

}


void drawTriangle(ShapeRect bounds,ShapeColor fillColor)

{

    NSLog(@"drawing triangle at (%d %d %d %d) int %@", bounds.x, bounds.y, bounds.width , bounds.height,colorName(fillColor));

}



NSString *colorName (ShapeColor colorName)

{

    switch (colorName) {

        case kRedColor:

            return @"Red";

            break;

       casekGreenColor:

            return @"Green";

            break;

        case kBlueColor:

            return @"Blue";

            break;

        default:

            break;

            

    }

   return@"no clue";

}//colorName


3. 运行结果

2012-10-25 11:54:12.123 Draw Shapes Progress[327:707] drawing circle at (0 0 10 30) int Red

2012-10-25 11:54:12.153 Draw Shapes Progress[327:707] drawing circle at (30 40 50 60) int Green

2012-10-25 11:54:12.158 Draw Shapes Progress[327:707] drawing circle at (15 18 37 29) int Blue

2012-10-25 11:54:12.161 Draw Shapes Progress[327:707] drawing triangle at (47 32 80 50) int Red


4. 说明和总结:

    带黑体的是新增绘制一个图形需要添加的代码。这种模式,重点关注的是函数,而不是数据,对于数据比较复杂的程序,着可能造成修改比较麻烦,或者比较浪费资源空间。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值