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

카테고리

분류 전체보기 (161)
Blog srart (16)
Dev Center (94)
Real Life (13)
Mac life (21)
Naver life (17)
Total659,142
Today25
Yesterday31

'class'에 해당되는 글 2건

  1. 2010.08.10 세상의 모든 데이터형, 클래스로 만들다!!
  2. 2010.07.13 클래스를 만들고 사용하기. (2)
클래스가 존재하는 이유는 무엇일까? 이미 알고 있는 지식들로 이야기하자면, 객체를 만들어 사용하기 위해서이고, 다양한 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

댓글을 달아 주세요

자바에 있어서 클래스는 자바의 모든것이라고 할 수 있다. 자바를 시작하게 되면 다양한 기능을 가진 명령어들을 볼 수 있는데 이것들은 모드 클래스로 이미 만들어진 것이다. 그 형태에 따라서 우리가 알맞게 사용을 하고 있는 것이다. 클래스는 어떤 모양새를 가지고 있는지 알아볼 필요가 있다.


클래스의 모습.
클래스의 형태는 매우 간단하다. 맴버 필드와 메소드의 형태이다. 어떠한 클래스 파일을 보더라도 이것은 동일하다. 만일 개발자가 강아지라는 클래스를 만들고자 한다. 강아지는 얼굴, 다리, 몸통, 꼬리, 털의 색 등의 다양한 외형적인 모습을 가지고 있는데 단편적인 정보를 가지고 있으므로 맴버 필드로 표현하는 것이 가능하다. 그리고 이것은 모든 강아지들에게 동일하게 적용된다. 물론 가끔은 다리를 다쳤다거나 꼬리가 없는 등의 특별한 경우가 있겠지만, 기본적인 경우에는 모두 꼭 가지고 있는 것이 강아지들으 일반적인 모습이다.  강아지는 먹기, 짖기, 달리기 등의 다양한 행동을 할 수 있다. 이러한 행동들은 움직임, 변화를 나타내기 때문에 메소드로의 표현 할 수 있다. 강아지에 따라서 짖는 형태나 달리는 모습들은 달라질 수 있겠지만, 그런것들은 좀더 나중에 오버로딩과 오버라이딩을 통해서 변경하는 것이 가능하다. 맴버 필드와 메소드로 다양한 형태의 강아지라는 객체를 만들어 낼 수 있는 것이다.


public class 강아지 {
    private 얼굴 = 둥글둥글;
    private int 다리 갯수 = 4;
    private 몸통 = 홀쭉;
    private boolean 꼬리 = true;
    private 털의 색 = brown;
    public void 짖기() {
    }
    public void 먹기() {
    }
    public void 달리기() {
    }
}


클래스 사용하기.
강아지 클래스를 실제로 코디아면 위와 같은 형태를 갖게 될 것이다. 이 클래스를 만들어 놓은 후 이것을 사용하기 위해서는 다음과 같이 입력할 수 있다.

강아지 dog = new 강아지();

이것은 dog 라는 이름을 가진 강아지 객체를 만드는 것이다. 자세하게 풀어서 설명을 하면, 강아지라는 이름을 가진 클래스의 복사본을 dog 라는 이름으로 새롭게 만들어 저장한다는 뜻이다. 이렇게 강아지 객체는 만들어내면 dog 는 강아지 클래스가 갖는 모든 정보와 기능을 사용하는 것이 가능하다. dog 는 강아지 클래스가 가지고 있는 얼굴, 몸통 등의 정보를 가지고 있으며, 짖기, 먹기, 달리기 등의 행동을 메소드를 통해서 할 수 있게 되는 것이다. 만일 dog 를 달리게 하고 싶다면 dog.달리기(); 라고 호출하는 것 만으로 달리게 하는 것이 가능하다.


클래스 파일.
자바 프로그래밍을 하면 가장 먼저 main 메소드가 포함된 클래스를 만들게 된다. 그리고 필요에 따라 정보와 기능을 가지고 있는 클래스를 만들게 되는데, 이 클래스들은 컴파일을 실행함과 동시에 하나의 클래스 파일로 생성된다. 하나의 자바 파일에 여러개의 클래스를 만들었다면 컴파일을 하고 난 후에는 여러개의 클래스 파일들이 클래스 명으로 만들어지는 것이다. 하나의 프로그램을 하나의 자바 파일에 만드는 것도 괜찮은 방법이기는 하지만, 하나의 자바 파일에 하나의 클래스를 선언하는 것을 추천한다. 그래야 나중에 유지 보수를 하는데도 좀더 수월하게 할 수 있다.

Posted by seanhigher

댓글을 달아 주세요

  1. 2010.07.16 10:16 닉쑤  댓글주소  수정/삭제  댓글쓰기

    요즘 블로그 스킨 자꾸 건드리느라 테이블 태그도 써보고 HTML코드 건드려보고 있는데요.ㅎ
    스킨 코드를 볼때마다 조금은 다르지만..
    자바나 C++, C 언어 다루던?때가 생각나네요.
    잘 안풀릴땐 짜증만빵이지만 생각한데로 코딩해서 잘 돌아가면 완전 기분 좋았던.. ㅋㅋㅋ
    잘 봤습니다. 하지만 다시 돌아가고 싶지 않은... ㅡㅡ; ㅋ

최근에 달린 댓글

글 보관함