读书人

Objectvie-C承袭、新增类、内部函数调

发布时间: 2012-11-17 11:14:15 作者: rapoo

Objectvie-C继承、新增类、内部函数调用、外部函数调用
1. 四个类,一个main.m2. 代码实例:

main.m

//

// main.m

// Circle

//

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

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

//


#import<Foundation/Foundation.h>

#import"Circle.h"

#import"Rectangle.h"

#import"PblateSphereiod.h"

#import"Triangle.h"


NSString *colorName (ShapeColor colorName);

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


void drawTriangle(ShapeRect bounds,ShapeColor fillColor);

void drawEgg(ShapeRect bounds,ShapeColor fillColor) ;

void drawRectangle(ShapeRect bounds,ShapeColor fillColor) ;

void drawCircle(ShapeRect bounds,ShapeColor fillColor) ;


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

{

// @autoreleasepool {

//

// // insert code here...

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

//

// }

// Circle circle;

// circle.draw();


id shapes[4];

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

shapes[0] = [Circlenew];

[shapes[0]setBounds:rect0];

[shapes[0]setFillColor:kRedColor];

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

shapes[1] = [Rectanglenew];

[shapes[1]setBounds:rect1];

[shapes[1]setFillColor:kGreenColor];

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

shapes[2] = [PblateSphereiodnew];

[shapes[2]setBounds:rect2];

[shapes[2]setFillColor:kBlueColor];

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

shapes[3] = [Trianglenew];

[shapes[3]setBounds:rect3];

[shapes[3]setFillColor:kRedColor];

drawShapes(shapes, 4);

return 0;

}


void drawShapes (id shapes[],int count)

{

int i;

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

[shapes[i] draw];

}

}//drawShapes


3. 基础类:

//

// Circle.h

// Circle

//

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

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

//


#import<Foundation/Foundation.h>

#import"PublicData.h"


@interface Circle :NSObject

{

ShapeColor fillColor;

ShapeRect bounds;

}


- (NSString*) getColorName: (ShapeColor) colorName;

- (void) setFillColor: (ShapeColor) fillColor;

- (void) setBounds: (ShapeRect) bounds;

- (void) draw;


@end//Circle


//

// Circle.m

// Circle

//

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

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

//


#import"Circle.h"


@implementation Circle//用于定义类的公共接口


- (NSString *) getColorName: (ShapeColor)c

{

switch (c) {

case kRedColor:

return @"Red";

break;

casekGreenColor:

return @"Green";

break;

case kBlueColor:

return @"Blue";

break;

default:

break;

}

return@"no clue";

}//myColorName


- (void) setFillColor: (ShapeColor) c

{

fillColor = c;

}//setFillColor


- (void) setBounds: (ShapeRect) b

{

bounds = b;

}//setBounds


- (void) draw

{

NSLog(@"Drawing a circle at (%d %d %d %d) in %@",bounds.x ,bounds.y,bounds.width,bounds.height, [selfgetColorName:fillColor]);

}


@end


4. 继承类:

//

// Rectangle.h

// Circle

//

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

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

//


#import<Foundation/Foundation.h>

#import"PublicData.h"

#include"Circle.h"


@interface Rectangle :Circle



@end


//

// Rectangle.m

// Circle

//

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

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

//


#import"Rectangle.h"


@implementation Rectangle


@end


其他继承类大同。


5. 总结:*继承:

#include "Circle.h"

@interface Rectangle :Circle


*内部接口调用:

NSLog(@"Drawing a circle at (%d %d %d %d) in %@", bounds.x , bounds.y, bounds.width, bounds.height, [selfgetColorName:fillColor]);



*外部类的接口调用:

#import"Circle.h"

id shapes[4];

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

shapes[0] = [Circlenew];

[shapes[0]setBounds:rect0];

[shapes[0]setFillColor:kRedColor];


6. 运行结果

2012-10-25 20:53:42.067 Circle[1307:707] Drawing a circle at (0 0 10 30) in Red

2012-10-25 20:53:42.071 Circle[1307:707] Drawing a circle at (30 40 50 60) in Green

2012-10-25 20:53:42.073 Circle[1307:707] Drawing a circle at (0 0 10 30) in Blue

2012-10-25 20:53:42.075 Circle[1307:707] Drawing a circle at (47 32 80 50) in Red





读书人网 >移动开发

热点推荐