1 #import <Foundation/Foundation.h>
2 //xieyi
3 @protocol showOn
4 @required
5 -(void)printOn;
6 @end
7 // lei
8 @interface MyPoint : NSObject<showOn,NSCopying>{
9 int x;
10 int y;
11 }
12 @property (nonatomic,assign)int x,y;
13 -(id)initWithX:(int)_x andY:(int)_y;
14 @end
15 // leibie fenlei
16 @interface MyPoint(MoveSet)
17
18 -(void)moveToX:(int)_x andY:(int)_y;
19
20
21 @end
22
23 #import "MyPoint.h"
24
25 @implementation MyPoint
26 @synthesize x,y;
27 -(id)initWithX:(int)_x andY:(int)_y{
28 if(_x==0)
29 x=1;
30 if(_y==0)
31 y=1;
32 x=_x;
33 y=_y;
34 return self;
35 }
36 -(id)copyWithZone:(NSZone *)zone{
37 MyPoint* newPoint=[[MyPoint allocWithZone:zone] initWithX:x andY:y];
38 return newPoint;
39 }
40 -(void)printOn{
41 NSLog(@" x = %d , y = %d ",x,y);
42 }
43 @end
44 @implementation MyPoint(MoveSet)
45 -(void)moveToX:(int)_x andY:(int)_y{
46 x=_x;
47 y=_y;
48 }
49 @end
50
51 #import <Foundation/Foundation.h>
52 #import "MyPoint.h"
53
54 @interface Circle : NSObject<showOn>{
55 MyPoint* point;
56 int radius;
57 }
58 @property (nonatomic,copy)MyPoint* point;
59 @property (nonatomic,assign)int radius;
60 -(id)initWithPoint:(MyPoint* )_p andRadius:(int)_r;
61 -(id)initWithPoint:(MyPoint *)_p;
62
63 @end
64
65
66 #import "Circle.h"
67
68 @implementation Circle
69 @synthesize point;
70 @synthesize radius;
71
72 -(id)initWithPoint:(MyPoint *)_p andRadius:(int)_r{
73 if(_r==0)
74 {
75 radius=1;
76 }
77 if(_p==nil)
78 return nil;
79 if(self=[super init])
80 {
81 if(point!=_p)
82 {
83 if(point)
84 [point release];
85 point =[[MyPoint alloc]initWithX:_p.x andY:_p.y];
86 }
87
88 }
89 radius=_r;
90 return self;
91 }
92
93
94 -(id)initWithPoint:(MyPoint*)_p{
95 self=[self initWithPoint:_p andRadius:10];
96 return self;
97 }
98
99 -(void)printOn{
100 NSLog(@"point(x,y) = (%d,%d),radius = %d",point.x,point.y,radius);
101 }
102
103 -(void) dealloc{
104 [point release];
105 [super dealloc];
106 }
107
108 @end