본문 바로가기

프로그래밍/iphone

Cocoa 1st sample. 간단한 currency converter

애플문서에 나와있는 샘플코드. 간단하게 환전계산?? 해주는 프로그램이다. 1달러당 가격을 텍스트 필드에 입력받아 계산하는 간단한 프로그램으로, Cocoa 맛보기에는 좋은 코드.


실제 코딩하는 부분은 아주 적은 예제이며, Xcode의 전반적인 분위기를 익힐수 있다.

코딩하는 파일은 4가지이며,
converter.h
converter.m
converterController.h
converterController.m

이정도이다.
아래 파일이 결과물.
기본적인 부분은 생략. 코드 분석

converter.h
------------------------------------------------------

//

//  Converter.h

//  Currency  Converter

//

//  Created by Hoony Yoo on 09. 06. 22.

//  Copyright 2009 __MyCompanyName__. All rights reserved.

//

// 실제 대부분이 이미 만들어져 있는 상태.

#import <Cocoa/Cocoa.h>


C 에서의 include 문과 동일한 구문, cocoa 에서도 include 를 사용할수 있다고 한다. 다만, include 대신 import 를 사용했을 경우 중복의 신경을 않쓸수 있다는 장점이 있다고 한다.


//@interface Converter : NSObject {

@는 예약어, 클래스 선언시 @interface ~ @end, 

구현부분은 @implemantation ~@end 사이에 위치한다.

cocoa에서 가장?? 중요한 객체중하나인 NSObject. Foundation 에 속한다.

입력시 받아들일 두 값을 변수 선언한다


float sourceCurrencyAmount;

float rate;


}

클래스의 인스턴스 속성을 간단히 정의한다.

@property(속성) 타입 변수;

속성은 readwrite, copy 

@property(readwrite) float sourceCurrencyAmount,rate;


이렇게 속성선언한부분은 구현부에서 다시 정의해주어야 한다.

float타입의 메소드 선언. -의 경우 인스턴스 메소드, +의 경우 클래스 메소드가 된다.

- (float)convertCurrency;


@end

-------------------------------------------------------------------------
Converter.m
C에서의 .c 와 같은 .m 소스코드다.
--------------------------------------------------------------------

#import "ConverterController.h"

#import "Converter.h"


만들어놓은 헤더파일들을 임폴트 시킨다. Converter.h는 위의 메소드 선언등을 담은 파일이고, ConverterController.h 는 뒤에 설명하겠지만, 컨트롤러부분


@implementation 구문은, 실 구현부분이다.

- 이므로, 인스턴스 메소드

반환탄입은 IBAction, : 이후는 인자를 뜻한다. 



@implementation ConverterController

- (IBAction)convert:(id )sender {

float amount;

메소드 호출 [객체 메소드:[객체 메소드]]

converter = [[Converter alloc]init];

[converter setSourceCurrencyAmount:[dollarField floatValue]];

    [converter setRate:[rateField floatValue]];

amount =   [converter convertCurrency];

[amountField setFloatValue:amount];

[rateField selectText:self];

}

@end

--------------------------------------------------------------------