클래스와 객체, 그리고 인스턴스는 무엇일까?

|

개인적인 연습 내용을 정리한 글입니다.
잘못된 내용이 있다면 편하게 댓글 남겨주세요!


프로그래밍을 공부하다보면, 프로그래밍 용어가 참 어려울때가 많다. 어떤 때는 인스턴스 어떤 때는 객체, 처음 공부를 시작할떄 제대로 머리에 정리를 안하고 지나가니 계속해서 발목을 잡는것 같아 이제서라도 하나하나 정리해보려고 한다.

그리고 덧붙여 나는 이 개념들이 자바를 공부하면서 좀 더 확실하게 알게 된 것 같다.

클래스?

  • 개념
    • 객체를 만들어내기 위한 설계도 혹은 틀 (ex. 붕어빵 틀)
    • 연관되어있는 변수(속성)과 메서드의 집합

객체?

  • 개념
    • 클래스에 선언된 모양 그대로 생성된 실체
  • 특징
    • ‘클래스의 인스턴스’
    • 객체는 모든 인스턴스를 대표하는 포괄적인 의미를 갖는다.
    • oop 관점에서 클래스의 타입으로 선언되면 그것을 객체로 부른다.

인스턴스?

  • 개념
    • 설계도를 바탕으로 구현된 구체적인 실체
    • 즉, 객체를 소프트웨어에 실체화하면 그것을 인스턴스라고 부른다
    • 실체화된 인스턴스는 메모리에 할당된다.
  • 특징
    • 인스턴스는 객체에 포함됨
    • oop 관점에서 객체가 메모리에 할당되어 실제 사용될때 인스턴스라고 부른다
## 막간 지식으로 oop란 무엇인가?

OOP: Object Oriented Programming(객체지향프로그래밍)
객체지향 프로그래밍(이하 OOP)는 컴퓨터 프로그램을 객체들의 모임으로 파악하고자하는 프로그래밍의 패러다임 중 하나이다. OOP의 장점은 프로그램을 유연하고 변경이 용이하게 만들며 개발과 보수를 간편하게 만든다.

- 강한 응집력
- 약한 결합력

프로그램의 한 요소가 특정 목적을 위해 밀접하게 연관된 기능들로 모여 구현되어있고 그 요소요소가 다른 요소들과 관계를 크게 맺고있지 않은 것을 볼 수 있다. OOP의 경우 클래스 하나에 문제 해결을 위한 데이터를 모아놓은 객체를 활용함으로써 응집력을 강화하면서도 클래스 간 독립적인 디자인을 함으로써 결합력을 약하게 하고 있다.

클래스와 객체

클래스는 설계도, 객체는 설계도로 구현한 모든 대상을 의미

객체와 인스턴스

  • 클래스 타입으로 선언되었을 때 객체라고 부르며, 그 객체가 메모리에 할당되어 실제 사용될때 인스턴스라고 함
  • 객체는 현실 세계에 가깝고, 인스턴스는 소프트웨어 세계에 가깝다.
  • 객체는 ‘실제’, 인스턴스는 ‘관계’에 초점을 맞춤

참고>