코코아의 요소

OSXDEV

Jump to: navigation, 찾기

이 챕터에서는 코코아에서 일반적인 객채지향적 디자인 패턴에 대해서 다루며, 프로그램 개발에 적용되는 패러대임에 대해 쓰여있다. 디자인 패턴은 부분적인 컨텍스트에서 일반적이며 반복되는 문제들을 해결할수 있는 템플릿이다.이전에 객체지향적 디자인의 경험이 있다면, 코코아에 어떻게 적용시켜야 할지 궁금해 할수도 있다. 이 튜토리얼은 코코의 객체지향 프레임워크를 잘 이해할수 있도록 도울것이다. 예전에 순차 프로그래밍만 해봤다고 해도 걱정할 것은 없다. 이 튜토리얼은 객체 프로그램의 기본적인 것들 또한 가르치고 있다. 당신은 MVC 디자인 패턴을 배우게 될것이다

목차

[편집] What Is Cocoa?

코코아는 Mac OS X에서 개발된 응용프로그램에 필요한 많은 객체와 메소드들을 포함한 객체지향적인 라이브러리를 가진 툴이다. 이런 툴을 프로그래머들에게 제공하면, 프로그램을 만들동안 지루함을 날려버릴것이다 유저인터페이스 개발또한 간단하다. 실제 코드를 작성해서 유저 인터페이스를 디자인한다면, 그것이 얼마나 어려운지 알수 있을 것이다. 이 튜토리얼에서는 당신이 간단하게 객체를 윈도우에 드래그 하는것만으로 아름다운 유저 인터페이스를 만들수 있는 방법을 배울수 있을것이다.
당신이 코코아로 할수 있는것에 대해 더 알고 싶다면, Cocoa Fundamentals Guide 를 살펴보면 된다.

[편집] Classes and Objects

객체는 데이터를 조작할수 있는 메소드와 데이터로 구성된다. 객체는 클래스의 인스턴스이다. 이는 클래스의 특정 인스턴스가 메모리에 할당 되어졌다는 이야기이다. 객체의 필수적인 특성은 그것이 데이터를 캡슐화 한다는 것이다. 다른 객체나 외부 코드는 객체의 데이터에 직접적으로 접근을 하지 못한다. 그러나 객체에 메세지를 보냄으로해서 객체로 부터 데이터를 요구할수 있다. 당신의 일이 객체간 통신이라면 이 메소드를 통해 정보를 공유하면 된다.

객체는 메세지를 지나는 메세지와 대응되는 메소드들을 가져오거나 메세지를 보낸곳으로 데이터를 보낼수 있다. 객체의 메소드들은 캡슐화를 하며, 사실상 객체의 데이터의 접근을 규제한다. 객체의 메소드들은 항상 객체가 외부와의 통신을 할수있는 방법들을 조율하고 나눈다.

왜냐하면, 객체는 데이터셋과 로직으로 캡슐화하고, 당신은 손쉽게 프로그램에서 부분적으로 할당할 수 있기때문이다. 개념상으로는 당신이 디자인보드에서 움직일수 있는 함수유닛-예를 들어서 "고객기록"- 과 같다. 당신은 인터페이스상에서 다른 객체와의 통신로를 구성할수 있게된다.

객체지향 프로그램을 디자인할때, 객체간의 관계를 그래픽적으로 묘사하기가 쉬워진다. 이 문서에서는 아래의 그림과 같이 객체를 도식화하였다.


Figure 1-1 An object
그림: object.jpg

[편집] The MVC Design Pattern

모델-뷰-컨트롤러(MVC) 는 Smaltalk-80에서 유래된 디자인 패턴이다.
이는 그림 1-2와 같이 프로그램상에서 추상적 바운더리와 각 바운더리와의 통신을하는 객체의 3타입을 제의한다.
이는 객체 지향 프로그램에서 자주 사용되는 패턴이다.
이 디자인 패턴은 지속적이고 확장적인,또한 이해하기 쉬운 시스템의 개발에 도움이 된다


Figure 1-2 Object relationships in the Model-View-Controller paradigm
그림:Cocoa mvc.gif


[편집] 모델 객체

이 객체는 특별한 특징과 정보을 표현해 낸다. 모델 객체는 데이터를 가지며, 데이터를 조작할수 있는 로직을 정의하고 있다.
예를 들어 당신이 비지니스 어플리케이션에서 고객객체와 일반 객체를 만든다고 가정한다면, 고객에 관한 , 고객의 이름, 생년월일, 전화번도등의 특징적인 모든 사실을 가져야 한다.
그 객체는 당신의 어플리케이션이 조작하는 데이터를 표현하고 정보에 접근이 가능하며 할당할수 있는 메소드에 접근하기때문에 모델객체가 된다.
이러한 모델객체중 더 특별화된 모델은 Front라 불리는 기상 시스템인데. 이런형태의 객체는 기층을 표현하는 데이터들과 정보들을 포함한다.
모델 객체는 어플리케이션의 유저에 의해서 직접적으로 접근이 허용이 되질 않는다.
이것들은 재사용이 가능하며, 할당가능하며 영속성을 가진다. 또한 다양한 플래폼으로의 이동이 용이하다

[편집] 뷰객체

뷰객체는 윈도우나 버튼 같은 유저 인터페이스들을 표현한다.
뷰객체는 표현된 데이터의 소스로 볼때는 그리 "똑똑한" 넘이 아니다.
코코아로 구성된 프레임워크중 하나인 어플리케이션 키트는 당신이 필요로 하는 기본적인 모든 뷰객체 - 윈도우, 텍스트필스, 스크롤 뷰, 버튼, 브라우져등의 - 를 제공할것이다.
그러나 당신의 데이터들을 당신의 방식으로 표현하거나 보여주기위한 당신만의 뷰오브젝트들을 만들기를 원할것이다.(예를들면, 그래픽 뷰같은...)
당신은 어플리케이션에 적용하도로 새로운방식으로 뷰오브젝트를 그룹화할수 있다.
뷰오브젝트는 재사용이 가능하고, 어플리케이션사이에 일관성을 지킬수 있다.

[편집] 컨트롤러 객체

어플리케이션에서 모델객체와 뷰객체사이에 놓이며, 중재적인 역할을 하는것을 컨트롤러 개체라고 한다.
컨트롤러 객체는 모델과 뷰오브젝트사이의 데이터 통신을 한다.
예를 들어, 컨트롤러 객체는 주소(고객 모델에서)를 윈도우상의 텍스트필드(뷰오브젝트)로의 데이터 전송을 중재한다.
이러한 어플리케이션의 자질구레한, 그런 따분한 일들을 수행한다.
이런 컨트롤러는 어플리케이션에서는 아주 특이한존재인데, 이것은 일반적으로는 재사용이 불가능할뿐아니라
어플리케이션의 코드로 종종 압축이 되어있다.
(그러나 컨트롤러 오브젝트가 재사용이 불가능하다는 것은 절대로 불가능하다는 의미는 아니다. 좋은 디자인상황에서는 가능하다.)
컨트롤러의 가장 중점적인 중재 규칙에서 보면, 모델 오브젝트는 유저 인터페이스의 상태나 이벤트에 대해 알 필요가 없다.
뷰객체 또한 모델객체의 프로그램적 인터페이스에 대해 알필요가 없다.
당신은 다른 개발자의 인터페이스 빌더안의 팔레트에서 가져와서 당신만의 뷰객체와 모델객체를 만들수 있다.

[편집] Hybrid Models

MVC, strictly observed, is not always the best solution. Sometimes it’s best to combine roles. For instance, in a graphics-intensive application, such as an arcade game, you might have several view objects that merge the roles of view and model. In some applications, especially simple ones, you can combine the roles of controller and model; these objects join the special data structures and logic of model objects with the controller’s hooks to the interface.

[편집] The Currency Converter Application

The MVC design pattern, albeit a very simplified one, can be applied directly to the Currency Converter application. Currency Converter is a simple application that converts US dollars to another currency based on an exchange rate entered by the user. Though it’s a very simple application, it can still be used to convey the fundamental elements of Cocoa application development using the MVC design pattern.

The underlying functionality, which is the model, converts US dollars to another currency based on an exchange rate. For this, there is a single function, convertCurrency, which multiplies the amount in US dollars by the exchange rate to get the amount in the other currency.

All graphical applications have a user interface that the user interacts with. This is the view. Here, the user inputs the exchange rate in one text field, the amount of dollars to convert in the next text field, and clicks the convert button, or presses Return, to perform the calculation. The final result appears in the last text box, which is the amount of the other currency.

The view needs to send the data the user entered to the model somehow. This is done by creating a controller, which gathers the exchange rate and amount in US dollars from the view, sends the values to the model, and writes the result into the view.


다음페이지 Xcode에서의 프로젝트 만들기

번역자 사용자:suvisor
원본문서링크 http://developer.apple.com/documentation/Cocoa/Conceptual/ObjCTutorial/02Essence/02Essence.html#//apple_ref/doc/uid/TP40000863-CH3-SW2 (Last Updated - 2007-10-31)