본문 바로가기

iOS/학습정리

프로그래밍 방법론) 객체지향프로그래밍(OOP) - (1)

객체란?

객체 지향 프로그래밍에서 인스턴스는 해당 클래스의 구조로 컴퓨터 저장공간에서 할당된 실체를 의미한다.  
여기서 클래스는 속성과 행위로 구성된 일종의 설계도이다. OOP에서 객체는 클래스와 인스턴스를 포함한 개념이다.

출처: wikipedia

객체지향프로그래밍에서 객체란 무엇인가를 고민하면 떠오르는 용어가 세 가지 있습니다. 바로 클래스, 오브젝트, 인스턴스 입니다. 위 인스턴스의 정의에서처럼 세 가지 개념은 서로 연관되어 있습니다. 각 용어에 대해 더 자세히 알아보자면 다음과 같습니다.

Object

실제로 존재하는 것

객체지향이론의 기본 개념은 '실제 세계는 사물(객체)로 이루어져 있으며, 발생하는 모든 사건들은 사물간의 상호작용이다.'라는 것입니다. 객체란 실제 세계에서 처럼 실제 사물의 속성과 기능을 분석한 다음, 데이터(변수)와 함수로 정의한 것으로, 실제 세계와 유사한 가상 세계를 구현한 것입니다.

객체지향이론에서는 사물과 같이 유형적인 것 뿐만 아니라, 개념이나 논리와 같은 무형적인 것들도 객체로 간주합니다.

Class

객체를 정의해 놓은 것
객체의 설계도나 틀

클래스와 객체의 관계는 제품 설계도와 제품의 관계라 할 수 있습니다. 따라서 클래스는 객체를 생성하는데 사용될 뿐, 객체 그 자체는 아닙니다. 원하는 기능의 객체를 사용하기 위해 먼저 클래스로부터 객체를 생성하는 과정이 선행되어야 합니다.

바로 객체 자체를 만들지 않고 설계도를 만드는 이유는 재사용성을 높이기 위해서 입니다. 동일한 객체가 필요할 때 마다 설계도인 클래스를 통해 객체를 생성하여 코드의 중복을 줄일 수 있습니다.

Instance

클래스로부터 만들어진 객체

클래스로 부터 객체를 만드는 과정을 클래스의 인스턴스화라고 하며, 어떤 클래스로부터 만들어진 객체를 그 클래스의 인스턴스라 합니다.
결국 인스턴스는 객체와 같은 의미이지만, 객체는 모든 인스턴스를 대표하는 포괄적인 의미를 갖고 있으며, 인스턴스는 어떤 클래스로부터 만들어진 것인지를 강조하는 보다 구체적인 의미를 가지고 있습니다.

개념 Object Class Instance
정의 유/무형의 실제로 존재하는 모든 것 객체를 정의해 둔 설계도 클래스로 부터 만들어진 객체
설명 인스턴스보다 더 포괄적인 의미 실제 객체 자체는 아님 어떤 클래스로부터 만들어진 것인지를 강조하는 보다 구체적인 의미
용도 객체가 가지고 있는 기능과 속성에 따라 다름 객체 생성  
예시 (유형) 책상, 의자, 자동차 등의 사물 TV 설계도 TV 클래스로부터 만들어진 TV 인스턴스
. (무형) 수학공식, 프로그램 에러 등의 논리나 개념 . .