옴마나, 오늘 하루 접속자가 50명이래... >_< 내일 통계가 두근두근 거리겠지만
기대가 크면 실망도 크겠지...OTL
어쨌거나 오늘 ObjectiveC 강의 시작합니다~!
오늘 강의는 그림이 한장도 없어 재미가 없을 수 있습니다만, 꼭 알아두고 가세요~
이번 강의는 아주 간단한 질문을 해결함으로써 강의를 시작하고, 마치겠습니다 ~_~
왜 그 많은 이름 중에 Objective-C라는 이름이 붙었을까요.
Objective 가 뭘까요.
objective 1. 목적, 목표 2. 대물렌즈 3. 객관적인
오브젝티브. 목적, 목표, 객관적인 어쩌구 저쩌구
일단 저의 슬픈이야기 부터...흑흑
"아이폰 나왔다...!!" [ ] 차타고 손잡고 아이폰 어플은 만듭세~
"음... 뭐 야, 윈도우에서 안 돌아가는 프로그램으로 짜는거임 ~_~ ?"
"음... 뭥... Objective C는 뭐야, C++, OOP랑 같은거 아닌가...?"
"그냥 아이폰 프로그래밍 바로 시작해버리지 뭐 ~_~"
하고 책을 샀다가 다음날 ObjectiveC 공부 시작...ㅡㅡ
"뭐가 슬픈건가요?"
.... 그냥요 한마디 해봤어요.
OOP, Object Oriented Programming 객체 지향프로그래밍의 Object입니다.
객체지향적인 C라는 뜻입니다. ObjectiveC 그럼 문제 해결했으니 끝.... 이 아니구
Object : 객체가 뭐지를 알아봐야겠죠 >_<
오늘 강의에서는 아쉽게도, 매킨토시를 키지 않습니다 ~_~ 책을 정리해서쓸게요 ㅎㅎ
(제가 이론을 설명할 실력이 아닌 관계로 ㅋ)
객체지향프로그 래밍에 대해 하기 전에, 그 반대적인 절차지향 프로그래밍에 대해 알아봅시다.
C에서는 프로그램을 개발할 때 세가지 처리 패턴이 있는데요.
1. 순차처리 : 시간 흐름 순서대로 처리
2. 조건처리 : 특정 조건에 따라 서로다른 처리
3. 재귀처리 : 동일한 처리를 반복해서 처리
이렇게 3가지 입니다.
절차지향프로그 래밍에서는 프로그램개발을,
[기능도출→데 이터형식 수집→조합]의 방식으로 진행하였습니다.
절차지향에서는 프로그래밍이란 "기능을 어떻게 조합하느냐"에 대한 것입니다.
기능이 프로그램개발의 첫째단계가 되어, 기능을 바꿔야하는 시점에서는 프로그램을 처음부터 다시 제작해야 하는 충격적 시나리오가 벌어졌습니다. ~_~
그래서 나온것이 "객체지향프로그래밍"입니다.
"객체"란 "다른것과 구분해서 인식할 수 있는 어떤 대상"을 의미합니다.
라지만 그냥 "어떤 것"정도로 생각합니시다.
객체지향에서 프로그래밍이란 "어떤것이 있고, 그것에 취하고 싶은 행동을 시키는 활동"입니다.
[Programming in Objective-C 2.0] 이라는 책에 쉽게 설명이 되어 있어서 인용하겠습니다.
오브젝티브씨를 공부하신다면 한 권있으면 좋은 책인 것 같습니다.
API공부한다 면 [API 정복]을 소유하면 좋은 것 처럼
(이렇게 적었으니 저작권으로 신고는 하지 않겠지.... 좋은 책이에요. 한빛미디어에서 나온건 조금 그런듯)
일상에서의 예를 들어, 집에있는 자동차는 "객체"이고, 객체는 여러분이 소유를 하고 있습니다.
아무런 차를 소유하는 것도 아니고, 어딘가에서 생산되어 [서울 ○ ○○○○]이라는 번호판이 붙은 특정한 차를 소유하고 있겠죠. 이 차를 우리는 "인스턴스"라고 합니다. 자동차는 "클래스"이구요. 새로운 차를 찍어낼 때마다 새로운 인스턴스가 생성이되고, 각 자동차는 인스턴스라고 부릅니다.
인스턴스=객체
자동차는 여러가지 특징이 있을 수 있지요 ~_~
형태, 색상, 커버색상등등 그런 특징이 있을 수 있습니다.
그리고 그 자동차에 취할 수 있는 행동이 있습니다.
"운전한다." "기름을 채운다." "세차한다." "수리한다." 등등 있겠죠.
그리고 옆집에 사는 김모씨의 자동차도 같은 행동을 할 수 있을 겁니다.
-------------------------------------------------------------------
그럼 계속 설명을 합시다.
클래스로 부터 나온것을 인스턴스라고 하고
인스턴스가 수행하는 행동을 "메서드"라고 합니다.
메서드는 클래스인스턴스나 클래스 자체에 적용이 됩니다.
"운전한다." "기름을 채운다." "세차한다." "수리한다."처럼
자신이 소유한 자동차에게 영향을 주는 것을 인스턴스 메서드라고 합니다.
그럼 클래스 메서드는, 클래스에 영향을 주는 거겠죠????
공장에서 자동차라는 클래스에서 인스턴스들이 마구마구 찍혀나오고 있는 광경.JPG
(요즘 ~~.JPG많이 하더군요 ㅎㅎ)
같은 공장에서 나온 자동차라도 소유자의 행위에 따라 각각 조금씩 다른 특성을 지니게 될 것입니다.
인트턴스는 공장에서 찍혀질 때나온 "초기특징"뿐만 아니라 "현재특징"도 가지고 있으며
이 특징들은 동적으로 변할 수 있습니다.
객체에 메소드를 적용하면(무슨 행위를 한다는 뜻이죠.)
객체의 "상태"에 영향을 끼치게 됩니다.
예로 "기름을 채운다."라는 행위를 하면 기름통에 기름이 차겠죠 ~_~
각 객체는 자신만 접근 가능한 정보를 포함합니다.
예로, "운전한다." 인데 옆차 핸들 돌리고 엑셀 밟았다고, 우리 차가 나가지는 않잖습니까 ㅎㅎ
이런걸 private 멤버라고 하는데, 나중에 알아보도록 합시다 ㅎㅎ
클래스나 인스턴스에 행동을 수행하도록 할때는 '메시지'를 보낸다고 합니다.
그리고 메시지를 받는 쪽을 "리시버(수신자)"라고 하구요.
다음 강의에 나올 건데요. 사용되는 문법입니다.
[주어 동사]
[클래스 메소드]
[인스턴스 메소드]
[리시버 메시지]
오늘 강의는 여기서 마치구요. 오늘 강의 하나 더 올라갑니다~!
(앗.. 오늘 새벽에 썼으니까... 3개구나)
[출처] ObjectiveC 3강 - 왜 ObjectiveC라고 하나요.|작성자 코스모스
'Mobile > Object-C' 카테고리의 다른 글
Objective C 5강 - 연습 (0) | 2010.10.01 |
---|---|
ObjectiveC 4강 - 객체 예제 (0) | 2010.10.01 |
ObjectiveC 2강 - 첫번째 예제 + NSLog (0) | 2010.10.01 |
ObjectiveC 1강 - ObjectiveC시작하기 (0) | 2010.10.01 |
ObjectiveC 0강 - Xcode설치 (0) | 2010.10.01 |