콘텐츠로 건너뛰기

자바의 클래스와 메소드

  자바를 처음 접할때 클래스가 무엇이고 메소드가 무엇인지 잘 구별이 되질 않는다. 어떤 형태로 이해를 하면 될까?
  나의 경우엔 학교에서 교수님이 붕어빵 틀과 붕어빵, 자동차 차체와 엔진, 이런 것들을 예로 들며 설명 해 주셨다. 사실 교수님껜 죄송한 일이지만, 그 설명이 잘 와닿질 않았다. 너무나 추상적이어서 이해하기 힘들었었다….OTL

  그래서 이번에 블로그를 통해 내가 이해하고 있는 방식으로 클래스와 메소드를 설명 해 볼까 한다.

  자바에 관심을 가지고 공부를 하고 있는 사람들이라면 컴퓨터에 관심이 많을 테니까 컴퓨터를 기준으로 한번 설명 해 보려한다.

★클래스와 메소드

자바의 클래스와 메소드
복잡한 컴퓨터이지만 우선 모니터랑 키보드만..
  모니터와 본체, 키보드로 이루어져 있는 자바로 만들어져 있는 간단한 컴퓨터가 있다고 생각해 보자. 본체에는 모니터와 키보드가 연결되어 있고 본체가 하는 일은 키보드에서 입력된 내용을 모니터로 보내주는 일을 한다. 모니터는 본체가 키보드로부터 받은 입력내용을 보내주면 화면에 출력하는 역할을 한다.

  모니터와 키보드, 본체라는 케이스가 있다. 그 케이스가 바로 Class. 그리고 그 케이스 안에서 작동되는 모든 행위가 메소드를 뜻한다. 간략하게 자바 문법으로 보면,

//모니터
class Monitor{
  void OutScreen(String input){
  //input을 화면에 그려주는 내용
  }
  void OutScreen(그림 input){
   //input그림을 화면에 그려주는 내용
  }
}

//키보드
class Keyboard{
  String GetKey(){
  return 입력내용;
  //키보드 입력내용이 무엇인지 알아내는 내용
  }
}

//본체
class Main{
  public static void main(String[] args){
  Monitor 모니터 = new Monitor();  //본체에모니터 연결
   Keyboard 키보드 = new Keyboard();  //본체에 키보드 연결
  모니터.OutScreen(키보드.GetKey());
  //키보드에서 입력되는 내용을 받아서 모니터 출력부에 넣어준다.
  }
}

  물론 세세한 매커니즘은 다르겠지만 대략적인 내용은 이렇다는걸 설명하고 싶었다. 키보드 틀 안에는 입력받은 키값을 문자로 보내주는 행위를 하는 메소드가 들어있다. 본체 안에는 모니터와 키보드를 연결하고, 키보드의 입력값을 알아내는 메소드로 문자를 받아 그 받은 문자를 모니터의 화면출력을 하는 메소드 안으로 보내주는 역할을 한다. 모니터라는 틀 안에는 입력값을 받아서 모니터 화면에 뿌려주는 행위를 하는 메소드가 화면에 문자를 뿌려주는 행위를 하는 간단한 구조를 짜 보았다. 다시 한번 정리하면 모니터, 키보드, 본체 이렇게 3개의 틀이 각각의 클래스이고 그 안에서 어떠한 행위를 하는 것이 메소드 이다.

  쉬울꺼라 생각 했는데 일단 내가 써 놓고도 조금 복잡한 내용이 되어버렸지만 여러번 읽어보면 어떻게든 이해가 되지 않을까 싶다.

★클래스의 재활용

자바의 클래스와 메소드
복잡한 비디오도 내맘대로 간단하게..ㅎㅎ
  자바는 객체지향 언어이다. 객체지향 언어의 장점은 만들어 놓은 객체(클래스)의 재활용성이 있다는 것이다. 한번 만들어 둔 객체는 다른 곳에서도 활용이 가능 하다는 것이다. 그래서 이번엔 만들어 놓은 모니터를 다른 부분에다 붙여서 쓰는 방법을 설명해 보겠다.

  자, 컴퓨터를 만드느라 만들어 둔 모니터를 VTR에 가져다 붙여보겠다. 실 생활에서도 컴퓨터 모니터로 출력이 가능한 연결부가 붙어있는 VTR이라면 일반 TV를 대신해 비디오화면을 출력할 수 있지 않을까 생각된다. 그래서 컴퓨터 모니터를 VTR에 붙여서 사용하는 자바코드를 한번 만들어 보겠다.

//VTR
class VTR{
  public static void main(String[] args){
  Monitor 모니터 = new Monitor();  //모니터를 VTR에다가 연결한다.
  그림 a = 테입으로로부터 읽어온 영상;
    //비디오테입으로부터 영상을 받아 그림형태의 a 변수에 대입한다.
  모니터.OutScreen(a);
  //테입의 영상이 들어있는 그림을 모니터의 출력메소드에 넣는다.
  }
}

  비디오를 만드는데 모니터를 새로 설계 할 필요가 없다. 컴퓨터에서 쓰던 모니터를 연결하면 되는 것이니까. 모니터는 쓰던걸 가져다 연결해 사용하면 되니깐 우리는 VTR틀과 내용물만 설계 해 주면 되는것이다. VTR에 있어야 하는것은 비디오 테입을 읽는것과 읽어온 영상을 모니터로 보내주는 내용만 들어가면 된다.

★오버로딩(Overloading)

  모니터 클래스에는 같은 이름의 메소드가 2개나 들어가 있다. 같은 이름의 메소드가 2개 있을때 들어가는 인수에 따라서 사용되는 메소드는 각각 다르다. 들어가는 인수가 문자열의 형태라면 첫번째 메소드가 사용되는 것이고, 그림의 형태라면 두번째 메소드가 사용되는 것이다.
  이것을 바로 오버로딩(Overloading)이라고 하는 것인데, 같은 이름의 메소드를 여러개 만들어서 메소드가 사용될 때 들어오는 인수의 갯수나 형태에 의해서 메소드 사용이 결정되는 것이다.

  에고고, 일단 글이 너무 길어져서 쓰다 지쳐버렸다. 다음에 또 이런 글을 쓸 기회가 올때 오버로딩에 대해서는 다시한번 자세히 적어봐야 하겠다. 오늘은 힘들어서 여기까지..S


2 개의 댓글

  1. 이야아……저도 이렇게 가르쳐주는 분이 계셨으면 자바를 좀 더 열심히 했을건데
    초기에 자바 배울 때 정말 -_-; 이게 뭔 개소리인지…..

    “선생님 우리 자바 때려치우고 C하면 안될까요?” 이런 소리까지 했었죠.
    하하하하하하하.

    1. 전 C++을 정말 재미있게 가르쳐 주시는 교수님이 계셨는데 그분이 학교를 그만 두시는 바람에 C++을 제대로 배울 기회를 잃어버려서 자바에 올인하게 되어버렸습니다.

      처음엔 자바보다 C++이 더 재미있게 느껴졌었거든요. 자바를 가르쳐주시는 교수님은 쭈욱 학교에 계시다 보니 자바를 더 할수밖에 없는 환경이 되어서이기도 하겠지만, 지금은 C++보다 자바가 더 재미있다고 느끼게 되어버렸습니다.

      스승이라는 존재는 확실히 영향력이 큰것 같습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다