ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • C언어와 Objective-C의 Mixing 하여 사용한 상태
    개발 & 계발/맥 개발 2011. 8. 2. 15:46
    반응형

    //

    // main.m

    // Shape-OOP

    //

    // Created by ktds on 11. 8. 2..

    // Copyright 2011 ktds. All rights reserved.

    //


    #import <Foundation/Foundation.h>


    typedef enum

    {

    kRedColor,

    kGreenColor,

    kBlueColor

    } ShapeColor;


    typedef struct

    {

    int x;

    int y;

    int width;

    int height;

    } ShapeRect;


    NSString *colorName(ShapeColor color);

    void drawShapes(id *shapes, int count);


    @interface Circle : NSObject {

    ShapeColor fillColor;

    ShapeRect bounds;

    }


    -(void) setFillColor : (ShapeColor) fillColor;

    -(void) setBounds : (ShapeRect) bounds;

    -(void) draw;


    @end


    @implementation Circle


    -(void) setFillColor:(ShapeColor) c

    {

    fillColor = c;

    }


    -(void) setBounds:(ShapeRect) b

    {

    bounds = b;

    }


    -(void) draw

    {

    NSString *strColor = colorName(fillColor);

    NSLog(@"좌표(%d,%d), :%d, 높이:%d 영역에 %@ 원을 그립니다", bounds.x, bounds.y, bounds.width, bounds.height, strColor);

    }


    @end


    @interface Rectangle : NSObject {

    ShapeColor fillColor;

    ShapeRect bounds;

    }


    -(void) setFillColor : (ShapeColor) fillColor;

    -(void) setBounds : (ShapeRect) bounds;

    -(void) draw;


    @end


    @implementation Rectangle


    -(void) setFillColor:(ShapeColor) c

    {

    fillColor = c;

    }


    -(void) setBounds:(ShapeRect) b

    {

    bounds = b;

    }


    -(void) draw

    {

    NSString *strColor = colorName(fillColor);

    NSLog(@"좌표(%d,%d), :%d, 높이:%d 영역에 %@ 사각형을 그립니다", bounds.x, bounds.y, bounds.width, bounds.height, strColor);

    }


    @end


    @interface Egg : NSObject {

    ShapeColor fillColor;

    ShapeRect bounds;

    }


    -(void) setFillColor : (ShapeColor) fillColor;

    -(void) setBounds : (ShapeRect) bounds;

    -(void) draw;


    @end


    @implementation Egg


    -(void) setFillColor:(ShapeColor) c

    {

    fillColor = c;

    }


    -(void) setBounds:(ShapeRect) b

    {

    bounds = b;

    }


    -(void) draw

    {

    NSString *strColor = colorName(fillColor);

    NSLog(@"좌표(%d,%d), :%d, 높이:%d 영역에 %@ 타원을 그립니다", bounds.x, bounds.y, bounds.width, bounds.height, strColor);

    }


    @end


    int main(int argc, const char * argv[])

    {

    id shapes[3];

    shapes[0] = [[Circle alloc] init];

    shapes[1] = [[Rectangle alloc] init];

    shapes[2] = [[Egg alloc] init];


    // shapes[0] = [Circle new];

    // shapes[1] = [Rectangle new];

    // shapes[2] = [Egg new];

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

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

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

    [shapes[0] setBounds:rect0];

    [shapes[1] setBounds:rect1];

    [shapes[2] setBounds:rect2];

    [shapes[0] setFillColor:kRedColor];

    [shapes[1] setFillColor:kGreenColor];

    [shapes[2] setFillColor:kBlueColor];

    int count = sizeof(shapes) / sizeof(shapes[0]);

    drawShapes(shapes, count);

    return 0;

    }


    NSString *colorName(ShapeColor color)

    {

    switch(color)

    {

    case kRedColor : return @"빨강색"; break;

    case kGreenColor : return @"녹색"; break;

    case kBlueColor : return @"파랑색"; break;

    }

    return @"지정된 없음";

    }


    void drawShapes(id *shapes, int count)

    {

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

    {

    [shapes[i] draw];

    }

    }


    ///////////////////////////////////////////////
    부분이 C언어 부분이다!!!!

Designed by Tistory.