목차
- 기본 자료형과 객체 자료형
- 객체는 덩어리다
- 객체는 어떻게 할당하지?
- 객체의 다른 이름
핵심
class는 새로운 자료형을 만드는(모델링하는) 도구이다
기본 자료형과 객체 자료형
자바에서 제공하는 기본 자료형만 잘 쓰면 되지. 왜 객체 자료형이 필요할까? 그 이유는 기본 자료형만으로는 프로그램을 제대로 만들 수 없기 때문이다.
간단
예를 들면,
- 정수 1개를 담는 자료형을 선언하세요!
- 책 1개를 담는 자료형을 선언하세요!
정수는 담을 수 있는데 책은 어떻게 담지? 정수는 int라는 자료형이 있어서 메모리의 크기와 종류를 정할 수 있다. 하지만 책이라는 자료형은 없기 때문에 설계해야 한다.
이때 필요한 도구가 Class이다.
객체란 덩어리다.
책을 담기 위해선 'Book'이라는 자료형이 필요하다. 하지만 자바는 제공하지 않기 때문에 우리가 만들어야 한다. Class로 말이다. 책에는 제목, 출판사, 페이지수 등 다양한 속성(상태 정보)이 있다. 이걸 컴퓨터 안에서는 어떻게 표현할까?
바로 아래처럼
public class Book{
public String title;
public int price;
public String company;
public int pages;
}
컴퓨터에서 책은 위에 코드처럼 표현할 수 있다. 마치 여러 변수가 덩어리를 이루고 있다. 이게 객체다.
그러면 이 객체를 컴퓨터에게 알려주려면 메모리에 저장해야 한다. 이 과정을 객체 생성이라고 한다.
객체는 어떻게 할당하지?
그럼 이제 문제는 거의 해결됐다. 책을 넣고 싶어서 'Book'이라는 자료형을 만들었다. 그럼 이제 선언해보자.
Book b; // 책을 담을 수 있는 기억공간(변수) 생성
선언은 완료됐다. 그럼 이제 변수 b에 객체를 넣으면 될까? 안된다. 변수는 하나의 데이터 타입만 넣을 수 있기 때문에 다양한 자료형이 뭉친 덩어리인 객체는 들어갈 수 없다.
1인실 고시원에 10명이 들어가려는 상황
그럼 이 문제를 어떻게 해결할까? 바로 객체의 주소를 변수에 넣는다. 주소를 알면 객체를 찾아갈 수 있으니 객체를 넣지 않고 객체의 주소를 넣는다.
객체의 다른 이름
- VO(Value Object) : 객체가 비록 여러 자료형이 합쳐져 있지만 하나로 인식하기 때문에 Value라고 부른다.
- DTO(Data Transfer Object) : 데이터를 이동시키는 역할을 한다는 의미. 결국 객체는 만드는데서 끝나지 않고 이동해서 사용하는 게 중요하기 때문이다.
객체 생성
그럼 메모리에 우리가 설계한 책의 자료형(Book)으로 어떻게 책을 만들까?
코드를 보자
Book b; // 기억공간(변수)를 만듦. 담기진 않음.
b = new Book(); // 메모리에 객체를 생성함.
아~ new라는 도구를 통해서 객체를 메모리에 생성하는구나. 그럼 메모리가 실체일까? 아니다. 메모리에 담긴 객체가 실체이다. 그래서 메모리에 만들어진 객체를 인스턴스라고 한다.
그리고 이런 인스턴스를 담는 변수 b를 인스턴스 변수, 객체 변수라고 한다.
심지어 b를 객체라고도 함. 왜? 객체를 담고 있으니까.
상태 정보, 속성, 멤버 변수
다 같은 말이다. 영어로는 attributes, member variable이라고 한다. 우리가 만든 class에는 여러 자료형이 섞여있다. int, String, boolean 등등.. 그래서 하나의 class에 속해진 멤버와 같으니 그들을 멤버 변수라 말한다.
또는 객체는 사물이니까 사물의 속성이라고도 말한다.
'프로그래밍 > Java' 카테고리의 다른 글
19.12.19) Java - Calendar 프로젝트 (0) | 2019.12.20 |
---|---|
19.12.19) Java - 변수와 배열 (0) | 2019.12.20 |
19.12.19) Java - 변수와 메서드 (0) | 2019.12.20 |
19.12.18) Java - Calendar 프로젝트 (0) | 2019.12.19 |
19.12.18) Java - 변수, 자료형, 선언 (0) | 2019.12.19 |