练习代码:
代码一:(面向过程的OC)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62 |
// // main.m // Class01Test01 // // Copyright (c) 2014年 levi. All rights reserved. // #import <Foundation/Foundation.h> @interface
Fraction : NSObject -( void ) setarr; -( void ) rand; -( void ) judge; @end @implementation
Fraction { NSInteger
a; NSInteger
b; //NSArray *arr = @[@"剪刀", @"石头", @"布"]; NSArray
*arr; } -( void )setarr { arr = @[@ "剪刀" ,@ "石头" ,@ "布" ]; } -( void )rand { a = arc4random()%3; b = arc4random()%3; } -( void )judge{ NSLog (@ "%@ vs %@" , arr[a], arr[b]); if ( (a == 0 && b == 2) || a > b) NSLog (@ "%@ vs %@ A胜出" , arr[a], arr[b]); else
if (a == b) NSLog (@ "%@ vs %@ 平局" , arr[a], arr[b]); else
if ( (a == 2 && b == 0) || a < b ) NSLog (@ "%@ vs %@ B胜出" , arr[a], arr[b]); else
NSLog (@ "ERROR!" ); } @end int
main( int
argc, const
char * argv[]) { @autoreleasepool
{ // insert code here... //常量字符串 //@“”字符串对象 //0 1 2 j s b Fraction *frac1 = [[Fraction alloc] init]; [frac1 setarr]; [frac1 rand]; [frac1 judge]; } return
0; } |
猜拳代码(简单面向对象的思想):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 |
// // Guess.h // Class1-02 // // Copyright (c) 2014年 levi. All rights reserved. // #import <Foundation/Foundation.h> /* 代码规范: 1.类名首字母大写 2.方法名首字母小写 类:抽象 笔记本 对象:具体 桌上这台笔记本 oc中声明一个类 @interface开始 Guess(类名): NSObject(父类) @end结束 oc中所有类都直接或者间接的继承自 NSObject */ @interface
Guess : NSObject //void startGuess; -( void ) startGuess; /* OC中方法 “-” 对象方法、对象调用 “+” 类方法、类调用 startGuess 方法名 */ @end |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45 |
// // Guess.m // Class1-02 // // Copyright (c) 2014年 levi. All rights reserved. // #import "Guess.h" /* @implementation 实现 方法1 实现 方法2 实现 @end 结束 */ @implementation
Guess - ( id )init { /* 定时器、每隔一秒会调用当前对象的startGuess方法 */ self
= [ super
init]; if
( self ) { [ NSTimer
scheduledTimerWithTimeInterval:1.0 target: self
selector: @selector (startGuess) userInfo: nil
repeats: YES ]; } return
self ; } -( void )startGuess { NSArray
*arr = @[@ "剪刀" , @ "石头" , @ "布" ]; NSInteger
a = arc4random()%3; NSInteger
b = arc4random()%3; NSLog (@ "%@ vs %@" , arr[a], arr[b]); if ( (a == 0 && b == 2) || a > b) NSLog (@ "%@ vs %@ A胜出" , arr[a], arr[b]); else
if (a == b) NSLog (@ "%@ vs %@ 平局" , arr[a], arr[b]); else
if ( (a == 2 && b == 0) || a < b ) NSLog (@ "%@ vs %@ B胜出" , arr[a], arr[b]); else
NSLog (@ "ERROR!" ); } @end |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 |
// // main.m // Class1-02 // // Copyright (c) 2014年 levi. All rights reserved. // #import <Foundation/Foundation.h> #import "Guess.h" int main( int
argc, const
char * argv[]) { @autoreleasepool
{ /* 语法[类名/方法名]; 类经过实例化 变成对象 char *p = malloc(1024); memset(p, 0, 1024); */ Guess *g = [Guess alloc]; g = [g init]; [g startGuess]; /* 启动事件循环 让main函数不退出 */ [[ NSRunLoop
currentRunLoop] run]; } return
0; } |
简单的继承:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191 |
// // Person.h // Class1_03 // // Copyright (c) 2014年 levi. All rights reserved. // #import <Foundation/Foundation.h> @interface
Person : NSObject { /* 成员变量(字段) 命名规范:_xxx mxxx @public 公共类型 @和C++做区分 @private 私有类型 只能在本类中访问 @proteted 保护类型 能在当前类和它的子类中访问(缺省) */ @protected NSInteger
_age; BOOL
_gender; CGFloat _height; } /* 方法声明(+ -) */ - ( void )qfTest; //+ (void)qfTestone; //带参数 - ( void )setAge:( NSInteger )age; - ( NSInteger )age; - ( void )setGender:( BOOL )gender; - ( BOOL )gender; - ( void )setHeight:(CGFloat)height; - (CGFloat)height; - ( void )setAge:( NSInteger )age withGender:( BOOL )gender; /* 方法名 : setAge:withGender */ @end // // Person.m // Class1_03 // // Copyright (c) 2014年 levi. All rights reserved. // #import "Person.h" @implementation
Person -( void )qfTest { _age = 10; } /* +方法无法访问成员变量 +(void)qfTestone { _age = 10; } */ - ( void )setAge:( NSInteger )age { _age = age; } - ( NSInteger )age { return
_age ; } - ( void )setGender:( BOOL )gender { _gender = gender; } - ( BOOL )gender { return
_gender; } - ( void )setHeight:(CGFloat)height { _height = height; } - (CGFloat)height { return
_height; } - ( void )setAge:( NSInteger )age withGender:( BOOL )gender { _age = age; _gender = gender; } @end // // Student.h // Class1_03 // // Copyright (c) 2014年 levi. All rights reserved. // #import "Person.h" @interface
Student : Person @end // // Student.m // Class1_03 // // Copyright (c) 2014年 levi. All rights reserved. // #import "Student.h" @implementation
Student -( void )test { /* self 当前类或者当前对象 super 当前类或者对象的父类 */ self ->_age = 90; } @end // // main.m // Class1_03 // // Copyright (c) 2014年 levi. All rights reserved. // #import <Foundation/Foundation.h> #import "Person.h" #import "Student.h" int
main( int
argc, const
char * argv[]) { @autoreleasepool
{ Person *p = [[Person alloc] init]; [p qfTest]; /* [Person qfTestone]; + 方法只能类调用 - 方法只能对象调用 */ /* @public 可以访问 p->_age = 24; p->_gender = YES; p->_height = 1.82; NSLog(@"Age is %ld\nGender is %d\nHeight is %g", p->_age, p->_gender, p->_height); */ //Student *s = [[Student alloc] init]; /* 以方法形式暴露成员变量 */ [p setAge:99 withGender: YES ]; [p setGender: NO ]; //[p setHeight:18.2]; NSLog (@ "p->_age is %ld\np->_gender is %d\np->height = %lf" , [p age], [p gender], [p height]); } return
0; } |
题目:小明手里有两张牌,左手红桃A,右手方片K,现在让小明交换两只手里的牌,问交换之后,小明左右手的牌,各是什么?
用面向对象的方式来说明这个题目
代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122 |
// // XiaoMing.h // Class1_04 // // Created by Levi on 14-3-13. // Copyright (c) 2014年 levi. All rights reserved. // #import <Foundation/Foundation.h> #import "Hand.h" @interface
XiaoMing : NSObject { Hand *_left; Hand *_right; } - ( void ) setLeftCard:( char )card1 rightCard:( char )card2; - ( void ) swap; - ( void ) result; @end // // XiaoMing.m // Class1_04 // // Created by Levi on 14-3-13. // Copyright (c) 2014年 levi. All rights reserved. // #import "XiaoMing.h" @implementation
XiaoMing - ( void ) setLeftCard:( char )card1 rightCard:( char )card2 { _left = [[Hand alloc] init]; _right = [[Hand alloc] init]; [_left setCard:card1]; [_right setCard:card2]; } - ( void ) swap { char
tmp = [_left card]; [_left setCard:[_right card]]; [_right setCard:tmp]; } - ( void ) result { NSLog (@ "左手 : %c,右手 : %c" , [_left card], [_right card]); } @end // // Hand.h // Class1_04 // // Created by Levi on 14-3-13. // Copyright (c) 2014年 levi. All rights reserved. // #import <Foundation/Foundation.h> @interface
Hand : NSObject { char
_card; } - ( void )setCard:( char )card; - ( char )card; @end // // Hand.m // Class1_04 // // Created by Levi on 14-3-13. // Copyright (c) 2014年 levi. All rights reserved. // #import "Hand.h" @implementation
Hand - ( void )setCard:( char )card { _card = card; } - ( char )card { return
_card; } @end // // main.m // Class1_04 // // Created by Levi on 14-3-13. // Copyright (c) 2014年 levi. All rights reserved. // #import <Foundation/Foundation.h> #import "XiaoMing.h" int
main( int
argc, const
char * argv[]) { @autoreleasepool
{ XiaoMing *xm = [[XiaoMing alloc] init]; [xm setLeftCard: ‘A‘
rightCard: ‘B‘ ]; [xm result]; [xm swap]; [xm result]; } return
0; } |
Ps:临渊羡鱼、不如退而结网。
原文:http://www.cnblogs.com/firstrate/p/3599187.html