블로그 이미지
'무른모'란 부드럽다라는 뜻을 가진 '무르다'라는 말과 도구, 연장을 뜻하는 '연모'라는 순 우리말의 합성어로 소프트웨어를 말합니다. seanhigher

카테고리

분류 전체보기 (161)
Blog srart (16)
Dev Center (94)
Real Life (13)
Mac life (21)
Naver life (17)
Total659,138
Today21
Yesterday31
클래스가 존재하는 이유는 무엇일까? 이미 알고 있는 지식들로 이야기하자면, 객체를 만들어 사용하기 위해서이고, 다양한 API로 사용을 하기 위해서라고 할 수 있다. 하지만, 그런것들은 우리가 쉽게 접근할 수 없는 부분이기도 하다. 우리에게 클래스가 존재하는 가장 큰 이유는 나만의 '로봇' 들을 만들기 위해서이다.


기본형 데이터, 레퍼런스형 데이터.
자바에서는 기본적으로 쓰이는 데이터 형에는 byte, short, int, long, float, double, char, boolean 의 여덟가지가 있다. 혹시나 센스있는 사람이라면, String 이 빠져있는것에 대해서 의구심을 갖게 될 것이다. String 이 빠져있는 이유는 String 은 기본 데이터 형이 아닌, 클래스이기 때문이다. 하지만, '문자열' 이라는 데이터는 워낙에 많이 사용되는 것이라 무의식중에 기본 데이터 형이 되어버린 것이다. 그렇다면 String 이 클래스라는 소리는 무엇일까? String 이 클래스라는 이야기는 우리가 만들 수 있는 모든 클래스들이 String 처럼 데이터형으로 사용될 수 있다는 이야기가 된다.


더욱 확장된 데이터형.
하지만, 우리가 일반적으로 사용하는 데이터형 외에도 일부러 클래스를 만들어 데이터형으로 사용할 필요가 있을까? 다음과 같은 경우를 생각해 볼 수 있다. 한 반에 있는 학생들의 데이터를 저장하고자 한다. 각 학생들에게는 국어, 영어, 수학, 과학 등의 점수와 합계, 평균등이 포함되어 있다. 기본 데이터 형으로 표현을 하고자 하면, 변수를 선언하는 것만으로도 엄청나게 많은 양의 메모리를 소모하게 된다. 배열로 묶어서 표현을 하고자 한다고 해도, 평균과 같이 소수의 수를 사용하는 경우에는 데이터 형이 달라서 묶을 수가 없다. 클래스를 사용한다면 쉽게 묶을 수 있다.

class 학생 {
    int 국어;
    int 영어;
    int 수학;
    int 합계;
    float 평균;
}



클래스 데이터형을 사용하기.
클래스로 만들어 놓은 데이터 형은 어떻게 사용할 수 있을까? 새로운 클래스 객체를 선언하고, 그 안에 데이터를 넣는 형식으로 사용하는 것이 가능하다.

학생 홍길동 = new 학생();

국어, 영어, 수학등의 점수를 넣기 위해서 '.' 연산자를 통해 클래스의 맴버 변수에 접근을 하는 것이 가능하다.

홍길동.국어 = 80;
홍길동.영어 = 70;
홍길동.수학 = 90;
홍길동.합계 = 홍길동.국어 + 홍길동.영어 + 홍길동.수학;

이 클래스의 데이터 형을 배열에 넣어서 사용을 하게 될 경우에는 더욱 더 다양한 사용이 가능하다. 수백명이나 되는 학생들을 한꺼번에 관리하는 것이 가능한 것이다. 클래스형의 데이터를 가지고 배열을 선언해 사용할 경우에는 한가지 주의해야 할 점이 있는데, 배열을 선언한 후에, 객체를 생성해 주어야 한다는 것이다.

학생[] 우리반 = new 학생[30];
학생[0].국어 = 80;

위와 같은 방법으로 배열을 생성하고, 데이터를 넣으려고 하면 에러가 발생한다. 클래스형의 데이터를 가지고 배열을 생성한다는 것은 단지 그만큼의 공간을 준비하는 작업뿐이기 때문에, 그 안에는 아무런 정보가 들어가 있지 않다. '학생[0].국어' 라는 이름으로 데이터에 접근해서 값을 대입하려고 해도, '학생[0].국어'라는 변수가 없기 때문에 접근을 할 수 없는 것이다.

학생[] 우리반 = new 학생[30];
학생[0] = new 학생();
학생[0].국어 = 80;

위와 같이 객체를 생성하는 과정을 거친 후에야 아무런 오류 없이 데이터를 사용할 수 있는 것이다.


기본데이터형과 레퍼런스 타입의 차이점.
이 두가지 데이터의 차이는 데이터를 어떻게 가지고 있느냐이다. 기본 데이터형은 그 변수 자체에 데이터를 가지고 있지만, 레퍼런스 타입은 데이터값을 가지고 있는 위치의 주소값을 가지고 있다. 그래서 포함된 데이터에 접근하기 위해서는 이차이상의 접근을 통해서 데이터 값을 갖게 되는 것이다.

Posted by seanhigher

댓글을 달아 주세요

최근에 달린 댓글

글 보관함