1. 객체란 무엇인가?
•
객체는 객체지향 프로그램의 핵심 개념 중 하나이다.
•
객체는 실세계의 개체이다.
•
객체는 상태(필드)와 동작(메서드)를 가진다.
•
객체는 클래스와 인스턴스를 나타낸다.
•
객체는 메모리에서 공간을 차지한다.
•
객체는 다른 객체와 소통할 수 있다.
정리
객체는 객체지향 프로그래밍의 핵심 개념 중 하나이다. 객체는 차, 탁자, 고양이와 같은 실세계의 개체와 같다. 수명주기 동안 객체는 상태와 동작을 가진다. 예를 들어 고양이의 상태는 색, 이름, 품종이 될 수 있고 고양이의 동작은 놀고, 먹고, 자고, 야옹 소리를 내는 것이다. 자바에서 객체는 new 키워드를 통해 만들어진 클래스의 인스턴스로 필드에 상태를 저장하고 메서드로 동작을 표현한다.
각 인스턴스는 메모리 공간을 차지하며 다른 객체와 소통할 수 있다. 예를 들어 다른 객체에 해당하는 ‘소년’은 역시 객체에 해당하는 고양이를 어루만지거나 잠을 재울 수 있다.
2. 클래스란 무엇인가?
•
클래스는 객체지향 프로그래밍의 핵심 개념 중 하나이다.
•
클래스는 객체를 생성하기 위한 템플릿 또는 청사진이다.
•
클래스는 인스턴스화하기 전까지는 메모리의 힙 영역을 소모하지 않는다.
•
클래스는 여러 번 인스턴스화할 수 있다.
•
하나의 클래스는 하나의 작업만 한다.
정리
클래스는 객체지향 프로그래밍의 핵심 개념 중 하나이다. 클래스는 특정 타입의 객체를 만드는 데 필요한 지침의 집합이다. 클래스는 템플릿, 청사진 또는 객체를 만드는 방법을 알려주는 레시피이다. 객체를 만드는 과정을 ‘인스턴스화 한다’고 하며 new 키워드로 수행할 수 있다. 클래스는 여러 번 인스턴스화하여 원하는 만큼 많은 객체를 만들 수 있다. 클래스의 정의는 파일 형태로 하드 드라이브에 저장될 뿐 메모리의 힙 영역을 소모하지 않는다.
클래스를 인스턴스화 하면 생성된 객체는 메모리의 힙 영역에 할당된다. 클래스가 따라야 하는 중요한 원칙 가운데 하나는 단일 책임 원칙(SRP)이다. 클래스는 이 원칙을 따르면서 단 하나의 일을 할 수 있도록 설계 및 작성되어야 한다.