아이폰 기초과정!!!
한영 전환 키 : command + space bar
복사 : command + c
붙여넣기 : command + v
수업 사용환경
1. Mac OS X 10.7 : 운영체제(라이온)
2. XCode 4.3 : 개발에 사용되는 통합 툴
3. Objective C 2.0 : 개발에 사용되는 언어
4. iOS : Mobile OS는 5.1
*객체지향 언어(Object Oriented Programming)
Class Object
붕어빵틀 붕어빵
Class 집합
=======
멤버변수
멤버 메소드
프로퍼티(getter나 setter 같은 것)
=======
Field : Class 나 객체의 데이터(변수)
Method : 함수
* 은폐성 : 내부의 알고리즘은 숨기고 바깥쪽에서는 단순하게 사용
1. 첫번째 소스
//
// main.m
// demo01
//
// Created by SDS107 on 12. 3. 26..
// Copyright (c) 2012년 __MyCompanyName__. All rights reserved.
//
#import <Foundation/Foundation.h>
// 선언부 ///////////////////////
@interface Fraction : NSObject
{
int numerator;
int denominator;
}
-(void) print;
-(void) setNumberator: (int) n;
-(void) setDenominator: (int) d;
-(int) numerator; // java에서는 getNumerator등으로 쓰지만 오프젝트c에서는 get이 없음.
-(int) denominator;
@end
//-- implementation 구현부 //////////////////
@implementation Fraction
-(int) numerator
{
return numerator;
}
-(int)denominator
{
return denominator;
}
-(void) print
{
NSLog(@"%i/%i", numerator, denominator);
}
-(void) setNumerator:(int)n
{
numerator = n;
}
-(void) setDenominator:(int)d // :(콜론) 다음에 있는것은 매개변수다!
{
denominator = d;
}
@end
// 메인 부분 ///////////////////////////////
int main(int argc, const char * argv[])
{
//Fraction *myFraction = [Fraction new]; 아래와 같은 내용.
Fraction *myFraction = [[Fraction alloc] init]; // 객체타입은 선언 시 *(포인터)를 붙인다.
// alloc : 메모리 할당 , init : 초기화 => NSObject에 있는 함수.
// 내부 함수를 부를 때 . 이 아닌 [] 를 쓴다.
//myFraction = [Fraction alloc];
[myFraction setNumberator:1];
[myFraction setDenominator:3];
//[myFraction print];
NSLog(@"결과 : %i / %i", [myFraction numerator], [myFraction denominator]);
[myFraction release]; // 메모리 소멸
return 0;
}
2. 두번째 소스
//
// main.m
// demo03
//
// Created by SDS107 on 12. 3. 26..
// Copyright (c) 2012년 __MyCompanyName__. All rights reserved.
//
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[])
{
int integerVar = 100;
float floatingVar = 333.1232;
double doubleVar = 8.423e+11;
char charVar = 'W';
NSLog(@"integerVar=%i", integerVar);
NSLog(@"floatVar=%f", floatingVar);
NSLog(@"double=%e", doubleVar );
NSLog(@"charVar=%c", charVar);
return 0;
}
3. 세번째 소스
//
// main.m
// demo04
//
// Created by SDS107 on 12. 3. 26..
// Copyright (c) 2012년 __MyCompanyName__. All rights reserved.
//
// 연산자 우선순위..
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[])
{
int a = 100;
int b = 2;
int c = 25;
int d = 4;
int result;
// 정수는 %i 나 %d
result = a+b+d;
NSLog(@"덧셈:%i", result);
result = a+b*c;
NSLog(@"연산 결과:%i", result);
// 나머지 연산
result = 10%3;
NSLog(@"나머지 연산:%i", result);
return 0;
}
4. 네번째 소스
//
// main.m
// demo041
//
// Created by SDS107 on 12. 3. 26..
// Copyright (c) 2012년 __MyCompanyName__. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface Calculator : NSObject
{
double accumulator;
}
//누산기 메서드
-(void) setAccumulator:(double) value;
-(void) clear;
-(double) accumulator;
// 산술 연산
-(void) add:(double) value;
-(void) subtract : (double)value;
-(void) multiply:(double)value;
-(void) divide:(double) value;
@end
// 구현
@implementation Calculator
//누산기 메서드
-(void) setAccumulator:(double) value
{
accumulator = value;
}
-(void) clear
{
accumulator = 0;
}
-(double) accumulator
{
return accumulator;
}
// 산술 연산
-(void) add:(double) value
{
accumulator +=value;
}
-(void) subtract:(double) value
{
accumulator -=value;
}
-(void) multiply:(double) value
{
accumulator *= value;
}
-(void) divide:(double)value
{
accumulator /= value;
}
@end
int main(int argc, const char * argv[])
{
Calculator *myCalc = [[Calculator alloc] init];
// 메소드 호출 : 정말 신기한 [] 신공!!!!
[myCalc clear];
[myCalc setAccumulator:100.0];
[myCalc add:200.0];
[myCalc multiply:5];
NSLog(@"결과:%g", [myCalc accumulator]);
return 0;
}
5. 다섯번째 소스
//
// main.m
// demo033
//
// Created by SDS107 on 12. 3. 26..
// Copyright (c) 2012년 __MyCompanyName__. All rights reserved.
//
#import <Foundation/Foundation.h>
// 절차식 프로그래밍(C언어 스타일의 함수)
typedef enum{
kCircle,
kRectangle,
kTriangle
} ShapeType;
typedef enum{
kRedColor,
kGreenColor,
kBlueColor
} ShapeColor;
typedef struct{
int x, y, width, height;
} ShapeRect;
//typedef struct{
// ShapeType type;
// ShapeColor fillColor;
// ShapeRect bounds;
//}Shape;
NSString *colorName(ShapeColor colorName)
{
switch (colorName) {
case kRedColor:
return @"red";
break;
case kGreenColor:
return @"green";
break;
case kBlueColor:
return @"blue";
break;
}
return @"no clue";
}
// 전부 별도의 메소드로 그림을 그린다.
//void drawCircle(ShapeRect bounds, ShapeColor fillColor)
//{
// NSLog(@"원을 그립니다(%d %d %d %d) 색깔 : %@", // 문자열 토큰 @
// bounds.x, bounds.y, bounds.width, bounds.height, colorName(fillColor));
//}
//
//
//
//void drawRectangle(ShapeRect bounds, ShapeColor fillColor)
//{
// NSLog(@"사각형을 그립니다(%d %d %d %d) 색깔 : %@", // 문자열 토큰 @
// bounds.x, bounds.y, bounds.width, bounds.height, colorName(fillColor));
//}
//
//
//void drawTriangle(ShapeRect bounds, ShapeColor fillColor)
//{
// NSLog(@"삼각형을 그립니다(%d %d %d %d) 색깔 : %@", // 문자열 토큰 @
// bounds.x, bounds.y, bounds.width, bounds.height, colorName(fillColor));
//}
// 실제 함수를 호출하는 그리는 함수
//void drawShapes(Shape shapes[], int count)
void drawShapes(id shapes[], int count)
{
int i;
for(i=0; i < count; i++){
id shape = shapes[i];
[shape draw];
// switch (shapes[i].type) {
// case kCircle:
// drawCircle(shapes[i].bounds, shapes[i].fillColor);
// break;
//
// case kRectangle:
// drawRectangle(shapes[i].bounds, shapes[i].fillColor);
// break;
//
// case kTriangle:
// drawTriangle(shapes[i].bounds, shapes[i].fillColor);
// break;
//
// }
}
}
// 객체 지향으로 만들기
@interface Shape : NSObject
{
ShapeColor fillColor;
ShapeRect bounds;
}
-(void)setFillColor:(ShapeColor) fillColor;
-(void)setBounds:(ShapeRect)bounds;
-(void)draw;
@end
@implementation Shape
-(void)setFillColor:(ShapeColor) c
{
fillColor = c;
}
-(void)setBounds:(ShapeRect)b
{
bounds = b;
}
-(void)draw
{
NSLog(@"도형을 그립니다.(%d %d %d %d) 색깔:%@",
bounds.x, bounds.y, bounds.width, bounds.height,
colorName(fillColor));
}
@end
@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
{
NSLog(@"원을 그립니다.(%d %d %d %d) 색깔:%@",
bounds.x, bounds.y, bounds.width, bounds.height,
colorName(fillColor));
}
@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
{
NSLog(@"사각형을 그립니다.(%d %d %d %d) 색깔:%@",
bounds.x, bounds.y, bounds.width, bounds.height,
colorName(fillColor));
}
@end
@interface Triangle : NSObject
{
ShapeColor fillColor;
ShapeRect bounds;
}
-(void)setFillColor:(ShapeColor) fillColor;
-(void)setBounds:(ShapeRect)bounds;
-(void)draw;
@end
@implementation Triangle
-(void)setFillColor:(ShapeColor) c
{
fillColor = c;
}
-(void)setBounds:(ShapeRect)b
{
bounds = b;
}
-(void)draw
{
NSLog(@"삼각형을 그립니다.(%d %d %d %d) 색깔:%@",
bounds.x, bounds.y, bounds.width, bounds.height,
colorName(fillColor));
}
@end
// 객체 지향으로 만들기
int main(int argc, const char * argv[])
{
// Shape shapes[3];
id shapes[3];
ShapeRect rect0 = {0, 0, 10, 30};
// shapes[0].type = kCircle;
// shapes[0].fillColor = kRedColor;
// shapes[0].bounds = rect0;
shapes[0] =[Circle new];
[shapes[0] setBounds:rect0];
[shapes[0] setFillColor:kRedColor];
ShapeRect rect1 = {30, 40, 50, 60};
// shapes[1].type = kRectangle;
// shapes[1].fillColor = kGreenColor;
// shapes[1].bounds = rect1;
shapes[1] =[Rectangle new];
[shapes[1] setBounds:rect1];
[shapes[1] setFillColor:kGreenColor];
ShapeRect rect2 = {100, 200, 100, 300};
// shapes[2].type = kTriangle;
// shapes[2].fillColor = kBlueColor;
// shapes[2].bounds = rect2;
shapes[2] =[Triangle new];
[shapes[2] setBounds:rect2];
[shapes[2] setFillColor:kBlueColor];
drawShapes(shapes, 3);
return 0;
}
'Language > iPhone' 카테고리의 다른 글
제3장. Objective C[오전+오후] (0) | 2012.03.28 |
---|---|
제2장. Objective C (하편) (0) | 2012.03.27 |
제 2장. Objective C (0) | 2012.03.27 |
(+)와 (-)함수의 차이는? (0) | 2012.03.26 |
iPhone 시작! (0) | 2012.02.16 |