#import <Foundation/Foundation.h>
//import 부분 : 파일에 있는 정보를 그대로 가져오라는 명령어
//Foundation.h 파일을 불러온 이유는 프로그램에서 사용할 다른 클래스와 함수에 대한 정보가 들어있기 때문
//@interface 부분 : 클래스와 메서드 선언
//@implementation 부분 : 데이터 요소와 메서드를 구현하는 실제코드가 담겨있는 부분
//Program 부분 : 프로그램이 달성하려는 목적을 실행하는 프로그램 코드가 담겨있는 부분
// 1. interface 부분
// Fraction : 클래스명 , NSObject : 부모클래스(superclass)라고 하며 이 클래스는 NSObject.h 파일에 정의되어있고, 이파일은 Foundation.h 를 임포트하면 자동적으로 프로그램에 포함된다
@interface Fraction : NSObject
// - 로 시작 : 인스턴트 메서드 , + 로 시작 : 클래스 메서드
-(void) print;
// (처음괄호) 부분 : 반환할 형태, void 경우는 반환할 값이 없을때 사용, print 는 메서드 이름
-(void) setNumerator : (int) n;
// ":" 부분은 인수를 받음을 표시, (뒤 괄호) 부분은 인수 타입, int 경우 정수로 인수된다는 의미, n 은 인수 이름
-(void) setDenominator : (int) d;
/////////////////////////////////////////
-(int) numerator;-(int) denominator;
@end
// 2. implementation 부분
@implementation Fraction
// 맴버(인스턴트 변수) 선언 부분
{int numerator;
int denominator;
}
// 메서드 정의 부분
-(void) print // 메서드 부분 끝에 세미콜론(;) 대신 메서드 코드가 중괄호 안에 들어있음
{
NSLog(@"%i/%i", numerator, denominator);
}
-(void) setNumerator : (int)n // setNumerator 메서드는 n 이라고 부르는 정수 인수를 인스턴트 변수 numerator 에 저장
{numerator = n;
}
-(void) setDenominator : (int)d // setDenominator 메서드는 d 이라고 부르는 정수 인수를 인스턴트 변수 denominator 에 저장
{
denominator = d;
}
////////////////////////////////////
-(int) numerator;{
return numerator;
}-(int) denominator;
{
return denominator;
}
@end
// 3. Program 부분
// main 내부에서 myFraction 이라는 변수를 정의
int main (int argc, char *argv[]){
@autoreleasepool {
Fraction *myFraction; // 이 줄은 myFraction 이 Fraction 클래스 하나의 객체라는 의미, 변수명 앞에는 *표시를 붙임
// Fraction 의 인스턴트를 하나 생성하고 초기화한다
// Fraction 값을 저장할 객체가 생김 ... 바로 myFraction
// 새로 만드는 작업
myFraction = [Fraction alloc]; // alloc 는 allocate(할당하다) 의 줄임말, 새로운 분수에 필요한 메모리 공간을 할당, alloc 메서드는 부모클래스(superclass)로부터 왔음
myFraction = [myFraction init]; // init 는 initialize(초기화하다) 의 줄임말, 초기화 하는 메서드
// 한번에 myFraction = [[Fraction alloc] init]; 로 쓸 수 있음, 안쪽의 대괄호가 먼저 실행 됨
// 선언+생성+초기화 한번에 Fraction *myFraction = [[Fraction alloc] init];
// 분수의 값을 1/3로 지정한다
[myFraction setNumerator: 1]; // 첫 명령문은 myFraction 에 setNumerator: 메세지를 보낸다란 의미, 인수로 넘어가는 값은 1
[myFraction setDenominator: 3];
// print 메서드를 사용해 fraction을 표시한다
NSLog(@"The value of my Fraction is:");
[myFraction print];
///////////////////////////////////////////////////
NSLog(@"The value of my Fraction is: %i/%i", [myFraction numerator],[myFraction denominator]);
///////////////////////////////////////////////////
Fraction *frac2 = [[Fraction alloc] init];
// 첫번째 분수의 값을 2/3로 설정한다
[frac1 setNumerator: 2];[frac1 setDenominator: 3];
// 두번째 분수의 값을 3/7로 설정한다
[frac2 setNumerator: 3];[frac2 setDenominator: 7];
// 분수를 표시한다
NSLog(@"First fraction is :");
[frac1 print];
NSLog(@"Second fraction is :");
[frac2 print];}
return 0;
}
댓글 없음:
댓글 쓰기