본문 바로가기

JAVA/OOP

Class, Instance and Object

반응형

클래스 :  메모리 할당 전에는 존재하지 않는다.

-> 프로그램 내에서 독립적인 업무를 처리할 수있는 모듈

 

객체의 정의  :  실제로 존재하는 것, 사물 또는 개념.

객체의 용도  :  객체가 가지고 있는 기능과 속성에 따라 다름.

 

유형의 객체  :  책상, 의자, 자동차등과 같은 사물.

무형의 객체  :  수학공식, 프로그램 에러와 같은 논리나 개념.

 !-- 소프트웨어적인 추상화를 한 것. --!

Class : 객체가 가지는 설계도(blueprint) 또는 프로토타입(prototype)

 - Attribute 와 Method를 갖는다.

클래스라는 것은 있으나, 물리적으로 존재하지 않는것.

홍길동이라고 선언하면 그것이 인스턴스화 된 것이며, 홍길동이라는 객체로 존재하게 된다.

 

 !-- Class를 선언하여, 메모리 공간에 할당한 것. --!

Instance : 클래스의 선언(new) 을 통해 만들어진 제품.

ㄴ instantiate 되어 메모리 공간을 차지하게 되면 인스턴스라고 부른다.

 

Object : class가 instance화 되었을 때, 객체(Object)라고 부른다.

 

 

 **정리하면

Class  :  재사용성(reusability)의 장점을 제공한다.

Object :  높은 모듈성(modularity)과 정보은닉(information hiding)의 장점을 제공.

 

 

 

 

좋은 객체를 만드는 기본 규칙: 데이터 말고 기능 제공해 줘!
좋은 객체가 한 번에 나오면 좋겠지만, 설계란 그리 호락호락하지 않음을 누구나 알고 있다. 그래서 지속적으로 설계가 바뀌게 되고, 그렇기에 리팩토링이 구현에서 중요한 과정이 되는 것이다. 하지만, 출발점을 좋게 잡을 수는 있다. 그 중 하나가 다음에 따라 객체의 기능을 제공하는 것이다.

  • 데이터를 달라고 하지 않고, 메소드를 통해 처리를 부탁하기!
  • 데이터 조회 기능은 필요한 경우에 한정해서 제공한다.

위 규칙에 따라 객체를 설계하다보면 자연스럽게 객체들 사이로 데이터가 흘러다니는 것을 줄이고, 객체가 내부 내장을 드러내지 않고 (즉, 캡슐화하고) 알맞은 기능을 제공하도록 만들 확률을 높일 수 있게 된다.
내용 정리
간단하게 내용을 정리해 보자.

  • 객체는 기능을 제공하는 역할을 수행하며, 객체의 내부가 어떻게 구현되었는지는 숨긴다.
  • 각 객체는 메시지를 주고 받으며 협업하며, 이를 통해 하나의 완성된 기능을 제공한다.
  • 객체 지향은 변화의 영향이 주변으로 퍼져나가는 것을 감소시켜 유지보수 비용을 줄여준다.

출처 :http://javacan.tistory.com/entry/OO-Basic-1-Object

반응형