iOS개발하기 #6. 클래스와 객체, Cocoa Touch Objects (1)

# 오늘의 주제

1. Object란??

2. 화면에 보이는 Object 종류 알아보기

여섯 번째 시간입니다.
지난번에는 Xcode를 한 번 살펴보았습니다~
오늘은 일단 화면에 보이는 녀석들이 무엇인지 한 번 파악해 봅시다..ㅎㅎ
자 이제 본론으로 고고 ^^
 
우리는 iOS프로그래밍(Cocoa Touch)을 할 때 Objective-C를 사용합니다.
물론, C나 C++등을 이용하여 프로그래밍도 가능하지만, 기본적으로 Objective-C를 사용하여 코딩한다고 생각합시다.
Objective-C는 '객체지향언어'입니다.
객체지향언어는 객체지향 프로그래밍을 지향하는데요...
아.. 처음 보는 분들은 도무지 무슨말인지, 뭔소린지 도통 모르시겠죠?ㅎㅎ
사실, 모든 것을 시작을 할 때 기초를 탄탄히 다지고 하는것도 좋지만 전 지금 여러분들이 프로그래밍에 대한 지식이 전무하다고 생각을 하고 진행해 볼 생각입니다.
일단, 머리아프게 생각하지 맙시다..ㅎㅎ
지금 기초부터 정말 탄탄히 다지고 싶은분들은..
객체지향언어, 객체지향 프로그래밍, Objective-C, 객체, 인스턴스, 메서드, 클래스에 대해서 역사부터 차근차근 공부하고 오시길 바랍니다. 그러면 조금 더 이해가 잘 갈 수도 있어요^^
하.지.만...
공부하고 되돌아 오시는 분들은 그렇게 많지 않을 것 같네요.ㅎㅎ
하다가 분명히 지칠 것 같아요^^..
그냥 간단간단하게 알아두고 차근차근 한 번 생각하며 나가 봅시다~
일단 저만 믿고 와보시라니까요^^
아, 그리고 Cocoa Touch가 무엇이냐구요? 구글 검색 한 번 해보시길...^^ 크게 중요한 것이 아니라 여기서는 넘어가겠습니다~ 그냥 우리가 배우고 있는게 Cocoa Touch구나~ 정도 알아두시면 되겠습니다~ 

## Object란??
오브젝트라는 것이 무엇일까요?
아..!! 그 전에 미리 말씀드리는데, 지금 보이는 이 챕터의 원론적인 이야기들은 정 이해가 가지 않으신다면 일단 스킵하셔도 큰 무리가 없습니다. 나중에 다음거 보다가 이해가 안되시면 다시 돌아와서 보실일도 많을 거라 생각합니다. 그만큼 처음엔 굉장히 헷갈리는 부분이거든요..^^

다시 돌아와서 Object란..? 
한글로 하면 객체입니다.
그렇다면 객체란 무엇일까요??
우리는 객체를 '내 차(My Car)'라고 생각해 봅시다.
여기석 클래스라는 녀석도 등장을 하는데, 클래스는 공장의 '생산라인'이라고 생각합시다.
공장의 생산라인에서는 똑같이 생긴 차량을 우리가 필요한 만큼 만들어 냅니다. 
이것이 클래스와 객체간의 관계입니다.

그림에서 보는 것과 같이..(발로그려서 죄송...ㅋㅋ) 생산라인에서 똑같이 생긴 자동차를 뽑아냅니다. 하지만 차량마다 번호가 다르고 탑승하는 사람도 제각각입니다. 이처럼 클래스는 어떠한 객체가 가지는 특정 모양에 대한 내용을 담고 있습니다. 그리고 객체는 찍혀나온 녀석이고, 우리는 그 안에 객체마다 클래스 형식에 맞춰 내가 원하는 내용들을 채워 넣을 수 있습니다.
다른 방법으로 표현하면 클래스는 붕어빵을 찍어내는 쇠로된 틀이고, 오브젝트는 그 틀에서 찍혀나오는 붕어빵으로도 비유할 수 있겠습니다. 또한, 붕어빵에 넣어주는 앙금에 따라 팥앙금을 가지는 붕어빵이 될 수도, 피자맛 붕어빵이 될 수도 있죠. 겉모양은 같은데 말예요^^
 
조금 이해가 가시나요? 이해가 지금 당장 가지 않으셔도 좋습니다!
그냥 읽어두세요!!
걱정하실 필요 없구요~ 서서히 시간이 지나고 가끔씩 제가 클래스니 변수니 이런말을 무의식중에 할 때 마다 한 번씩 와서 다시 봐주세요^^ 이해가 잘 안가시면 구글에서 검색해 보시면 도움이 되는 자료들이 많을 거예요~
 
그리고 인스턴스(Instance) 또는 인스턴스변수라는 이름도 종종 보게 되실텐데요, 이녀석은 다름이 아니라 객체를 지칭하는 말입니다. 인스턴스 = 객체라고 생각하시면 됩니다.
 
그럼 여기서 대충 클래스, 객체(인스턴스)의 관계에 대하여 알아보았습니다. 책에서 보면 원론적인 내용들이 굉장히 많아서 헷갈리는 경우도 많고, 요거만 보다가 지쳐 쓰러지는 경우도 있으니.. 일단 여기서 잠시 접어둡시다~ 사실 이게 다예요^^;

정 더 궁금하시다면... 대충 흝어보고 오세요~
http://ko.wikipedia.org/wiki/%EA%B0%9D%EC%B2%B4_%EC%A7%80%ED%96%A5_%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D
http://ko.wikipedia.org/wiki/%EC%98%A4%EB%B8%8C%EC%A0%9D%ED%8B%B0%EB%B8%8C-C
http://www.webdoor.org/xe/135
http://kldp.org/node/108983
별 내용은 없을거예요~

서론이 너무 길었네요..^^
객체지향언어는 왜 사용하는지, Objective-C는 왜 C랑 다른지... 등등은 C를 배우지 않으신 분들이 아니라면 굳이 여기서 설명해 드릴 필요는 없을 것 같아요^^
다음 번 정도에 객체지향언어의 특징과 왜 객체를 사용하는지 정도에 대해서 간략히 설명해 드릴게요. (만약 제가 깜빡하고 안하면 댓글 남겨주세요..ㅎㅎ)

# 화면에 보이는 Object들 알아보기 
 
사실.. 오늘 이것만 하려고 했는데, Object에 대한 설명이 필요할 것 같아서 위에 아주 장황하게 써놓았네요..ㅋㅋㅋ
자, 본래의 목적으로 돌아왔습니다~
우리가 iOS기기들의 화면에 보이는 녀석들을 한 번 알아봅시다.
참, 이곳에서는 iOS5 기준으로 설명하겠습니다.
때에따라서는 iOS5 미만의 버전들에서 없는 것이 추가로 생긴것도, 있던것들이 없어진 것도 있으시 참고하세요^^

이름 : Page Control
설명 : 아이폰 홈 화면에서도 보이죠? 말그대로 페이지를 이동할 때 마다 페이지 상태를 보여주는 역할을 합니다. 또한 양 옆을 터치해주면 페이지가 넘어가는 역할도 하죠^^
클래스 : UIPageControl


이름 : Stepper
설명 : iOS5 부터 지원되는 녀석입니다. 생긴것만 봐도 아시겠죠? 값을 증감시킬 수 있는 버튼입니다~
클래스 : UIStepper

이름 : Table View
설명 : 말 그대로 테이블(표) 뷰 입니다. 뷰라는 것이 무엇인가요..?? 흠... 컴퓨터 화면에서 보이는 하나의 윈도우창이라고 생각하시면 될 듯 합니다. 일단 자세한 설명은 다음번에^^
클래스 : UITableView

이름 : Table View Cell
설명 : 테이블뷰 셀입니다. 말 그대로 테이블뷰의 기본적인 셀이 아니라 자신이 셀 모양을 직접적으로 만들어주고 싶을 때 사용하게 됩니다.
클래스 : UITableViewCell

이름 : Image View
설명 : View중에서도 이미지를 보여줄 수 있는 View입니다.
클래스 : UIImageView

이름 : Text View
설명 : View중에서 주로 장문의 텍스트를 볼 수 있도록 해주는 녀석입니다. 사용자들에게 수정, 편집, 복사권 등을 허용 또는 불허 할 수 있습니다.
클래스 : UITextView

이름 : Web View
설명 : View중에서 웹사이트 화면을 직접 보여줄 수 있습니다.
클래스 : UIWebView

이름 : Map View
설명 : 설명을 안해도 아시겠죠? 우리가 보는 지도 화면입니다..^^
클래스 : UIMapView

이름 : Scroll View
설명 : 위아래로 스크롤 할 수 있는 화면입니다. 그냥 View는 스크롤이 안돼요^^ 눈치 빠른 분들은 눈치채셨겠지만, Text View는 Scroll View안에 글자들이 들어가 있는 것이라고 보셔도 무방합니다~
클래스 : UIScrollView

이름 : Date Picker
설명 : 날짜를 선택할 수 있게 만들어 놓은 녀석입니다
클래스 : UIDatePicker

이름 : Label
설명 : 사용자에게 텍스트를 보여줄 때 사용합니다. 여러줄을 나타낼 수 있지만 TextView처럼 스크롤은 불가능 합니다. 또한 사용자가 수정, 편집, 복사 등을 할 수 없습니다. 즉, 보여주기만 가능하다는 말씀!
클래스 : UILabel

이름 : Picker View
설명 : 뺑그르르 돌면서 선택할 수 있게해주는 그 녀석 아시죠?^^
클래스 : UIPickerView

이름 : Ad BannerView
설명 : iAd라는 iOS전용 광고를 사용할 때 사용하는 광고 배너창입니다~ 여기에 관해서는 나~중에 한 번 설명할 기회가 있다면 설명해 보겠습니다
클래스 : ADBannerView

이름 : GLKit View
설명 : OpenGL ES를 포합하는 뷰입니다.  3D관련 모듈을 iOS에서 보다 편리하게 사용하기 위해 만들어진 녀석인데요 iOS5에서 새로 선보였습니다.
클래스 : GLKView

이름 :Round Rect Button
설명 : 우리가 아이폰에서 자주 볼 수 있는 둥그스름한 버튼입니다~ 사실 이 모양 말고도 다른 모양으로 변환도 가능합니다~ 기본적으로 제공되는 버튼들이 많아요~
클래스 : UIButton

이름 : View
설명 : 위에서 소개해 드렸죠? 컴퓨터의 한 화면(창)이라고 보시면 될 듯 합니다. 자세한 설명은 다음 시간에^^
클래스 : UIView

이름 : Window
설명 : 영어 설명을 보시면 화면에 표시된 뷰를 관리하고 꾸미는 역할이라고 정의되는데, 뭐... 딱히 신경쓰지 않아도 될 녀석입니다. iOS에서는 하나의 윈도우가 기본적으로 밑바탕에 깔리게 되며, 하나의 윈도우 안에서 많은 뷰들로 화면이 보이게 됩니다. 사실 윈도우는 사용자에게 부각되거나 보이진 않는 부분이라는게 맞을 것 같기도 하네요~
클래스 : UIWindow

이름 : Navigation Bar
설명 : 익숙한 녀석일 거예요~ 화면에서 위에 Back버튼 보이면서 왔다갔다 할 수 있게 하는 상단의 바 아시죠? 그녀석입니다~
클래스 : UINavigationBar

이름 : Segmented Control
설명 : 사용자에게 몇 개 중 하나를 택일하게 할 때 쓰이는 버튼입니다. 대충 그림보면 답 나오죠?^^ 이것도 버튼과 마찬가지로 몇가지 형태가 존재합니다~ 사실 대부분의 View들은 속성을 조절하면 다양한 형태의 모습이 됩니다~ 마치 내 차에 스티커를 붙이거나 새로 도색을 하는 것 처럼요^^
클래스 : UISegmentedControl

이름 : Navigation Item
설명 : Navigation Bar에 들어가는 내용들을 총칭하여 Navigation Item이라고 합니다. 좌측 또는 우측버튼, 바 제목 등이 Navigation Item에 속합니다.
클래스 : UINavigationItem

이름 : Search Bar
설명 : 이 또한 굳이 설명하지 않아도..^^ 검색할 때 보이는 그 검색 바 입니다.
클래스 : UISearchBar

이름 : Tool Bar
설명 : 화면 상단 또는 하단 등에 바 형태로 여러개의 버튼들을 넣어 기능을 수행할 수 있게 만든 녀석입니다.
클래스 : UIToolBar

이름 : Bar Button Item
설명 : 툴바에 들어가는 아이템들을 총칭합니다. 네비게이션 아이템에도 포함됩니다.
클래스 : UIBarButtonItem

이름 : Fixed Space Bar Button Item
설명 : 화면상에 바 버튼 아이템들 사이에 정해진 간격만큼의 간격을 주는 녀석입니다. 실제로 점선은 보이지 않아요~
클래스 : 클래스 없음

이름 : Flexible Space Bar Button Item
설명 : 위에 있는 녀석은 고정 넓이라면, 이 녀석은 버튼들 사이를 균등한 간격으로 띄워주는 역할을 합니다~
클래스 : 클래스 없음

이름 : Tab Bar
설명 : 카카오톡에 보면 아래에 메뉴처럼 화면 옮겨 다닐 수 있게 몇개의 버튼들을 나열해 놓은 바 같은 곳이 있죠? 그곳이 탭바 입니다.
클래스 : UITabBar

이름 : Tab Bar Item
설명 : 말 그대로 탭바에 들어가는 아이템들을 총칭합니다..^^
클래스 : UITabBarItem

이름 : Text Field
설명 : 사용자에게 텍스트를 입력받을 수 있는 필드입니다.
클래스 : UITextField

이름 : Slider
설명 : 설정창에 음량조절, 화면밝기조절 등에 보면 많이 보이죠? 뭐 그런 역할 주로 합니다
클래스 : UISlider

이름 : Switch
설명 : 설정창에 보면 On/Off설정 하는 녀석 보이죠? 그 녀석입니다~
클래스 : UISwitch

이름 : Activity Indicator View
설명 : 여기 캡쳐에서는 잘 보이지 않지만... 대기 화면에서 뱅글뱅글 돌아가는 녀석 아시죠? 날 자꾸 기다리며 설레게 하는 그 녀석...ㅋㅋㅋ 그녀석을 Activity Indicator 라고 합니다. 인터넷 사용중에 화면 상단 Status Bar에서 돌아가는 작은 녀석은 Network Indicator라고 불러요~
클래스 : UIActivityIndicator


이름 : Progress View
설명 : 말 그대로 현재 진행상황을 보여줄 때 주로 쓰입니다. 주우우욱 차오를 때 마다 설레는 그 기분^~^
클래스 : UIProgressView

후아~
넘넘 길어요!! 
진이 쭉쭉 빠지네요...^^
열심히 한 만큼 많은 도움과 참고가 되었으면 좋겠네요~
지나가는 고수분 께서는 혹여 제가 실수한 부분이 있다면 지적 부탁드릴게요~
저도 사람인지라 방대한 양을 하려니 지치고 헷갈리는 부분도 더러 있네요~^^;
참..!! 그리고 여기 있는 설명이 부족하면 Xcode실행하셔서 Object Library에서 객체들 위에 살포시 얹어 놓고 기다리시면 도움말이 보일거예요~ 
아래 그림처럼요..^^

자, 그럼 오늘은 여기까지 해 보구요~
다음 번에는 iOS화면들이 어떤 관계에 있는지, 그리고 화면에 보이지 않는 객체들에는 어떠어떠한 것들이 있는지 1~2번에 걸쳐서 얘기해 보도록 할게요.
그리고 그 다음 번에는 객체지향에 관한 얘기를 조금 이어서 해 볼게요 🙂
그럼 모두 다음에 보아요~^^ 
by yagom
p.s 제 포스팅을 RSS 피드로 받아보실 수 있습니다.
RSS Feed 받기 

 

댓글 남기기

Close