지난 포스팅에 이어서 두번째 포스팅에 들어가보겠다...
일단 소스를 보자
일단 소스를 보자
이번 프로그램은 객체를 2개 생성하여 각각의 인스턴스 변수및 메서드를 활용하는 것이다.
일단 클래스를 생성하여 준다. 클래스는 1편의 프로그램과 같다...
그리고 implementation부분도 생성을 해준다. 물론 이부분또한 앞과 같다..
하지만 프로그램 부분에서는 다르게 표현을 한다
Fraction 클래스의 객체를 frac1 과 frac2로 생성을 해주고 각각을 초기화 해준다..
Fraction *frac1=[[Fraction alloc]init];
Fraction *frac2=[[Fraction alloc]init]'
이부분이다. 이부분에서 각각의 객체를 생성하여주고 바로 초기화를 해준다..
다음 코드를 보면 객체하나하나에 클래스의 인스턴스변수로 숫자를 대입해 주고있다.
[frac1 setNumerator: 2];
[frac1 setDenominator::3];
frac1 의 객체에 변수들의 값을 넣어주고
[frac2 setNumerator: 4];
[frac2 setDenominator: 5];
frac2 의 객체또한 같은 방법으로 값을 넣어준다..
그리고 객체 각각의 print메서드로 값들을 호출하게 되면 다음과 같은 결과가 나온다..
그후 객체 각각의 메모리를 반환하여 준다
[frac1 release];
[frac2 release];
다음은..인스턴스 변수의 접근과 데이터를 캡슐화 하는 코드를 보겠다..
일단 코드를 보자
객체의 인스턴스 변수에 접근하는 프로그램이다.
바로위의 프로그램과 다른것이 있다면.. 클래스선언부분에 int형 변수를 선언해놓았다.
클래스의 인스턴스 변수는 바로 접근이 불가능하다.
코드의 implementation부분에서 numerator 과 denominator을 각각 반환하는 메서드를 작성하였다.
그후 프로그램부분에서는 객체를 생성후
프린트 할때 객체의 변수값을 직접받아오는것이아니라
메서드를 거쳐 반환된 값을 출력하도록 하게 되어있다..
출력값은 상상하시는것 이상 이하도 아니다 ㅎ