본문 바로가기
Java/Java

[Java] Chapter 1-4. Java의 Class, 사용자 정의 자료형

by Kangworld 2022. 1. 24.
반응형

 

 

✍️ 기본 자료형 VS 사용자 정의 자료형

여기 문제가 하나 있다.

"정수 한 개를 저장하기 위한 변수 a를 선언하세요."

int a;

"정수형 변수 a를 선언했으면 a가 가진 메모리 공간에 10을 할당하세요."

a = 10;

 

또 문제가 주어졌다.

"책 한 권을 저장하기 위한 변수를 선언하세요."

Book book; // ???

 

Book이라는 자료형이 담고 있을 정보는 무수히 많다.

책의 제목, 가격, 출판사, 저자, 페이지 수 등 한 개의 기본 자료형으로는 책을 표현할 수 없다.

프로그래밍으로 책을 표현하기 위해선 책이 가지는 여러 정보를 담고 있을 한 묶음의 기억 공간이 필요하며 책이 가지는 속성(제목, 가격, 출판사...)이 무엇인가 고민하고 정의하는 것을 '설계'한다고 한다.

여기서 어떤 사물을 설계하기 위한 도구가 바로 class이다.

 

class라는 개념을 이용해 Book을 설계해 보자.

 

Book이라는 이름을 가진 Class 파일을 하나 추가하자.

 

책을 설계해 보자, 책에 필요한 상태 정보는 제목, 가격, 출판사, 저자, 페이지 수로 정의할 수 있다.

앞으로 책과 같은 현실 세계의 사물을 '객체'라고 부를 것이고 책이 가지는 상태 정보를 '속성'이라 부를것이다. 나아가 객체에는 행위가 포함되는데 이를 '메서드'라고 부를 것이다.

 

Book을 class의 형태로 설계하면 아래와 같고 이제부터 Book을 사용자 정의 자료형이라고 부를 수 있다. 

참고로 String은 문자열을 저장하는 자료형이다.

public class Book {
	public String title; //String : 문자열을 저장하는 자료형
	public int price;
	public String publisher;
	public String author;
	public int page;
}

 

설계가 끝났으니 Book의 변수를 만들어보자.

그전에 정수형 변수를 살펴보고 넘어가자. 정수형 변수 a는 선언 시 정수를 위한 메모리 공간이 할당된다. 그렇기에 변수 a에 10을 바로 넣을 수 있는 것이다.

int a;
a = 10;

 

반면 Book은 여러 변수들의 집합으로 이루어진 자료형이다. 본디 하나의 변수엔 하나의 값만 저장할 수 있는데 어떻게 변수 book에 title이며 price며 여러 값들을 저장할 수 있을까?

Book book; //title, price, publisher... 여러 값들을 어떻게 book 하나에 넣지?

 

후에 다루겠지만 메모리 공간 어딘가에 변수 book이 가지는 속성(제목, 가격, 출판사)을 저장하고 있고, 변수 book은 그 메모리 공간을 참조하는 구조이기에 book은 자신이 가진 속성과 메서드에 접근할 수 있다.

예를 들어 100번지에 속성값들이 저장되어 있으면 변수 book은 100번지를 가리키는 형태이다. 

 

몇 가지 더 설명하면, 다음과 같이 Book book; 변수 book을 선언하면 book을 '객체'라고 부르며 book에 실제 메모리 공간을 할당하면 book은 Book 클래스의 '인스턴스'라고 한다.

 

🍊 정리

세상에 존재하는 모든 사물은 객체로 만들 수 있으므로 class를 잘 설계하는 것이 객체지향 프로그래밍의 시작점이다.

 

다음 포스팅에선 객체를 생성하는 방법을 다룰 예정입니다.

 

반응형

댓글