-
Notifications
You must be signed in to change notification settings - Fork 1
/
Chapter0. Coding Rule.txt
243 lines (196 loc) · 6.93 KB
/
Chapter0. Coding Rule.txt
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
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
# UI System Blackbook Code by 박춘언 ([email protected])
@코드 0.1 클래스, 메서드, 조건문
----------------------------------------------------------------------------------------
01 ClassA: // 클래스 선언
02 methodA(): // 메서드 선언
03 // 이하 methodA() 구현부
04 ...
05 // repeat가 참인 동안 while 구문 실행
06 while repeat
07 if conditionA or conditionB
08 // 이하 코드는 conditionA 또는 condition B가 참인 구문에 해당
09 ...
10 break // while 구문 종료
11 else
12 // 이하 코드는 conditionA와 conditionB가 거짓인 구문에 해당
13 // while() 종료
14 // methodA() 종료
15 // ClassA 종료
16
17 // 함수 선언
18 funcA():
19 ...
20 // funcA 종료
----------------------------------------------------------------------------------------
@코드 0.2 인터페이스 구현과 클래스 확장
----------------------------------------------------------------------------------------
01 // 인터페이스 선언. update() 동작 정의
02 interface UIObject:
03 update()
04
05 // UIObject 인터페이스를 구현한 UIBaseBody
06 UIBaseBody implements UIObject:
07 // update() 동작 구현
08 override update():
09 ...
10
11 // UIBaseBody를 확장하여 UIShape 정의
12 UIShape extends UIBaseBody
13 override update():
14 // UIBaseBody의 update() 호출
15 super.update()
16 ...
----------------------------------------------------------------------------------------
@코드 0.3 변수 선언 및 초기화
----------------------------------------------------------------------------------------
01 var x, y // 정수 내지 실수 데이터 선언
02 a = 0, b = -20.2 // 선언과 동시에 값을 초기화함으로써 타입 생략
03
04 // 이하 불(boolean) 변수 선언
05 bool repeat = true
06 condition = false
07
08 name = "ClassA" // string 타입
----------------------------------------------------------------------------------------
@코드 0.4 리스트와 반복문 활용
----------------------------------------------------------------------------------------
01 // 크기가 10인 var 타입의 값을 원소로 갖는 리스트 선언
02 data[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
03
04 sum = 0
05
06 // data를 순회하며 각 원소를 val로 전달
07 // for()가 끝난 시점에 sum 값은 55
08 for val : data
09 sum += val
10
11 // 크기가 10x10인 var 타입의 값을 원소로 갖는 이차원 리스트
12 var data2[10, 10]
13
14 // for(i = 0; i < data.size; ++i) 동일
15 for i : data2.size
16 for j : data2[].size
17 data2[i][j] = data[j]
18
19 // for(i = 0; i < 10; i+=2) 동일
20 for i : [0 ~ 10], i+=2
21 data[i] /= 2
22
23 // 크기가 명시되지 않은 리스트 선언
24 var list[]
25
26 list.add(10) // list[0] = 10
27 list.add(20) // list[1] = 20
28 list.add(30) // list[2] = 30
29
30 sum = 0
31
32 // list를 순회하며 각 원소를 val로 전달
33 // for가 끝난 시점에 sum 값은 60
34 for val : list
35 sum += val
----------------------------------------------------------------------------------------
@코드 0.5 생성자와 소멸자
----------------------------------------------------------------------------------------
01 ClassA:
02 x = 0, y = 0
03
04 constructor(x, y):
05 .x = x, .y = y
06
07 destructor():
08 ...
09
10 // example() 종료 시점에 ClassA.destructor() 호출
11 example():
12 a = ClassA(10, 20) // ClassA.constructor(x, y) 호출
----------------------------------------------------------------------------------------
@코드 0.6 메서드 인자, 반환 값 활용
----------------------------------------------------------------------------------------
01 ClassA:
02 var x, y
03
04 // @p x: var, 이동할 좌표 X 값
05 // @p y: var, 이동할 좌표 Y 값
06 move(x, y):
07 newPos = Vector2(x, y)
08
09 // 메서드 인자 x, y를 멤버 변수 x, y 값에 기록
10 .x = x
11 self.y = y
12
13 // 메서드 종료 시 true 값 반환
14 return true
----------------------------------------------------------------------------------------
@코드 0.7 반환 조건 및 복수 값 반환 방식
----------------------------------------------------------------------------------------
01 calle(x):
02 // x가 0 보다 작으면 0, 0을 반환
03 return 0, 0 if x < 0
04 // x가 0 보다 크거나 같으면 5, 6을 반환
05 return x + 2, x * 2
06
07 caller():
08 // a와 b의 값은 각각 5, 6
09 a, b = calle(3)
----------------------------------------------------------------------------------------
@코드 0.8 멤버 변수 값 갱신
----------------------------------------------------------------------------------------
01 Vector2:
02 x = 0, y = 0
03
04 x(x):
05 .x = x
06
07 Vector2(x, y):
08 .x = x
09 .y = y
10
11 ClassA:
12 Vector2 pos
13
14 constructor(x, y):
15 .pos(x, y) // ClassA.pos(x, y) 호출
16
17 pos(x, y):
18 .pos.x = x // Vector2.x(x) 호출
19 .pos.y = y // Vector2.y(y) 호출
20
21 example():
22 a = ClassA(10, 20) // ClassA.constructor(x, y) 호출
23 a.pos(20, 30) // ClassA.pos(x, y) 호출
24 a.pos = {20, 30} // Vector2(x, y) 호출
25 a.pos.x = 20 // Vector2.x(x) 호출
26 a.pos.y = 30 // Vector2.y에 직접 접근 기록
----------------------------------------------------------------------------------------
@코드 0.9 메서드 인자, 반환 값 활용
----------------------------------------------------------------------------------------
01 // 버튼 객체 생성
02 myBtn = UIButton():
03 .text = "My Button" // 버튼 텍스트
04 .geometry = {110, 80, 200, 130} // 버튼 위치 및 크기 지정
05
06 // 수직 선형 레이아웃 생성 후 두 개의 버튼 추가
07 myLayout = UIVerticalLinearLayout():
08 .contain():
09 UIButton():
10 .text = "Button 1"
11 UIButton():
12 .text = "Button 2"
----------------------------------------------------------------------------------------
@코드 0.10 람다 함수 이용한 이벤트 구현
----------------------------------------------------------------------------------------
01 myBtn = UIButton(): // 버튼 생성
02 .text = "My Button" // 버튼 텍스트
03 .geometry = {110, 80, 200, 130} // 버튼 위치 및 크기
04
05 /*
06 * 버튼 클릭 이벤트를 람다 함수로 구현
07 * Clicked 이벤트 발생 시 func() 수행
08 * obj 인자로 myBtn 인스턴스 전달
09 */
10 func(UIButton obj):
11 obj.text = "Button Pressed!" // 버튼 레이블 변경
12
13 myBtn.EventClicked += func // 클릭 이벤트 수행 함수 func() 등록
----------------------------------------------------------------------------------------