Cocoa Design Pattern 1장 요약

맥(Mac OS X) 2010.01.12 21:38
Cocoa Design Pattern 1장 스터디 요약 
  
1. Core Data Support for Model Subsystems 원문 참조

 - Cocoa의 Core data 기술은 model의 서브시스템 개발을 목적으로한다. 그리고 2개의 공통적인 도전적 이슈를 구현한다. (Persistent information Storage, object relationship) 

- 거의 모든 모델들이 정보를 저장할 능력을 필요로 하고, 그것을 다시 불러 들어야 한다. 많은 가능한 구현이 있다. 어떤 프로그램에서는 바이너리 파일 포멧을 사용하고, 다른 것들은 사람이 읽을 수 있는 텍스트 파일이다. 어떤 구현은 관계형 데이타 베이스에 의존하기도 한다. 

 - Core Data는 "object persistance"라고 부르는 기술을 사용한다. 기본적인 접근은 모델 오브젝트를 저장하고, 갇고 있는 정보를 은닉화한다(encapsulation) 그리고 오브젝트의 관계도 마찬가지로 저장한다. 

 - Core Data는 이런 persistant object(바로 위에서 언급된 내용)를 불러 들이거나, 저장할 수 있고 세개의 파일 폿멧을 사용한다.(XML, Binary flat file, SQLite) 

- 거의 대부분 모든 모델에서 객체간의 관계에 대한 관리가 필요하다. Core Data는 1:1 또는 1:다 관계를 지원한다. 각 관계는 필요조건일 수도 있고 아닐 수도 있다. - Core Data는 관계를 정의하거나, 제약조건을 정의할 수 있고 기본 값을 제공하거나, 관계를 검사할 수 있다. 

- NSManagedObject Class는 객체 관계 관리를 내부적으로 지원한다. 

- NSManageObjectContext는 persistant Object Store와 연결을 지원한다. 

2. Application Kit Support for View Subsystems 

- Cocoa의 Application kit은 view와 Controller의 서브 시스템을 포함한다. 

- NSMenu, NSWindow, NSApplication and NSView, NSWindow등은 Cocoa Graphical user interface의 코어이다. 

- 각각의 cocoa application은 NSApplication의 객체이다. 이것은 사용자로 부터 발생되는 이벤트를 받고, 독(dock)에 아이콘을 표시하고, 윈도우를 그린다. 

 - NSView의 서브 클래스들은 기본적인 유저 인터페이스 구현에 사용된다.(Button, Text, Tab View, Progress Indicator etc..) - NSApplication, NSView, NSWindow 는 모든 NSResponder의 서브 클래스이다.

- NSResponder Class는 Application Kit의 핵심!, 사용자 이벤트를 은닉화 하고 Responder chain design pattern을 사용하여 메세지나 이벤트를 가야 되는 객체에 전달한다. 

- NSView는 Hierarchies pattern을 사용한다. 이것은 개발자로 하여금 view안 view를 구성할수 있도록 한다. 예를 들어 어떤 하나의 뷰는 여러개의 sub view로 만들어져 있다. 

- 많은 Cocoa의 기본 사용자 인터페이스는 NSControl의 SubClass로 만들어져 있다. NSControl의 핵심은 Target and action 그리고 Responder Chain이다. 예를 들어 NSDatePicker 객체의 경우 사용자가 DatePicker를 클릭했을때 액션 메세지는 Target에 전달되고, 해당 타겟이 그 메세지를 받을수 없으면, responder chain이 적합한 Target으로 보낸다.

 - NSCell은 Flyweight pattern을 사용한다. 이것은 실행시간과 메모리 소모를 조절한다. NSControl객체는 NSCell의 서브 클래스를 사용한다. 예제로 NSTableView는 NSCell객체를 사용하는데 각각의 컬럼에서 데이터를 표현하는 방법을 결정한다. 

3. Application Kit Support for Controller Subsystems 

- Cocoa의 NSArrayController class는 view객체와 model객체 사이의 조정자 (mediator)역활을 한다. 이것은 기본적으로 저장된 데이터에 제공 즉, 정보에 대한 흐름을 제어한다. 어려운 말이지만, 예를 들어 사용자가 어떤 하나의 view object안에 어떤 값을 입력하지 않은 경우 이것이 기본값을 제공한다. 

- Application Kit은 NSController,NSObjectController,NSArrayController, NSUserDefaultsController, NSTreeController Class등이 있다. 이것들은 Data의 흐름을 관리하며 Cocoa binding 기술을 사용한다. - 여러개의 view와 모델에 대한 조정자인 NSDocument class도 있다. Cocoa's Text Architecture

- NSTextStorage는 모델을 저장하고 Text를 Processing을 한다. - NSTextContainer는 text의 geometric한 모양을 저장한다.

 - NSLayoutManager는 view와 모델사이의 조정자 역활을 하는 Controller처럼 행동한다. - 각각의 NSTextView 객체는 관련된 NSLayoutManager 객체를 요청하고, 그것은 그려진 Text를 제공한다. 하나의 MVC 패턴임을 기억한다. 

Cocoa's Document Architecture 
- Model : NSMangedObjectContext, NSFileWrapper 
- View : NSResponder -->(상속) NSWindow, NSApplication 
- View Controller : NSWindowController, NSDocumentController 
- Model Controller : NSDocument -->(상속) NSPersistentDocument 

- NSDocument는 Template Method Pattern을 사용하는 최적의 예제이다. - NSDocument자체는 Abstract 하다. (C# 이나, Java의 abstract와는 다르다)

- 개발자는 NSDocument를 상속받아 SubClass를 구현한다. 여기에는 모델을 로드하고 저장하는 기능을 지원하는 중요한 베소드를 포함한다. 

- Document-based 프로그램에서는 오직 하나의 NSDocumentController 객체만 있다. 

- 각각의 NSDocument 객체는 연관된 열려진 Document를 관리하고 열려진 Document는 0 또는 하나 그이상의 NSWindowController객체가 연결되어 있다. Cocoa Scriptability 

- Cocoa는 scripting interface를 제공한다. NSApplication 객체는 모든 Graphical Cocoa Application에 관해서, Apple Event라 불리는 메세지를 받아 들일 수 있다. 

- Apple Event는 다양한 Script Language를 통해 보내 질 수 있다. (Ruby, Python)

설정

트랙백

댓글