SW 배움터/자바

자바 문법 핵심만5 : 인스턴스

kusson 2017. 4. 14. 12:37
반응형
728x170

인스턴스란?

 

 

 자바를 공부하다 보면 인스턴스란 말을 종종 접하게 되는데 영어로 되어있어서 무슨 뜻인지

감을 잡기가 어렵다. 그러나 실제의 뜻은 아주 간단한 편이다. 인스턴스란 말이 무슨 뜻인지

알아보고 자바에서 사용하는 몇가지 용어를 더 알아보겠다.

 

1. 클래스로 부터 객체를 만드는 과정을 클래스의 인스턴스화(instantiate)라고 하며, 어떤

 클래스로부터 만들어진 객체를 그 클래스의 인스턴스(instance)라고 한다.

       ※ 객체  = 인스턴스

           클래스 --------> 인스턴스(객체)

객체는 인스턴스를 대표하는 말이며 포괄적인 의미로 쓰이는 말이고 인스턴스란 어떤

클래스로부터 만들어진 것인지를 강조하는 말로 다소 구체적인 의미로 쓰인다.

 

2. 객체는 속성과 기능 두가지의 구성요소로 이루어짐.

  1) 속성(property) : 멤버변수등 객체를 이루는 요소를 말함.

  2) 기능(function) : 메소드(method), 함수(function)등 객체가 수행하는 행위를 말함.

      ※TV의 예를 들어보면

        TV의 속성 : 크기, 길이, 높이, 색상, 볼륨, 채널...

        TV의 기능 : TV켜기, 끄기, 볼륨UP, 볼륨DOWN, 채널변경...... 

 

3. 파싱이란?

 1) 파싱이란 어떠 데이터를 원하는 모양으로 만들어 내는 것을 말한다.

 2) 특정문서(XML 따위)를 읽어 들여서 이를 다른 프로그램이나 서브루틴이 사용할 수 있는

    내부의 표현방식으로 변환시켜 주는 것이다. XML 문서를 보면 HTML 처럼 <> 태그가

    보인다. 사용자가 이렇게 입력하지만 컴퓨터가 알아볼 수 있도록 바꿔주는 과정을 의미한다.

 3) 컴파일러의 일부로써 원시프로그램의 명령문이나 온라인 명령문, HTML 문서내용등에서

    마크업 태그등을 입력으로 받아들여서 구문을 해석할 수 있는 단위로 여러부분으로

    분할해 주는 역할을 한다.

 

4. 파서(Parser)

  1) 파서는 파싱을 하는 프로세서를 말한다. 즉 파서가 파싱작업을 하는 것이다.

  2) 파서란 컴파일러의 일부로서 원시프로그램, 즉 컴파일러나 인터프리터에서

     원시프로그램을 읽어 들여, 그 문장의 구조를 알아내는 구문분석(parsing)을 행하는

     프로그램을 말한다.

 

5. 캐스팅

 프로그래머가 명시적으로 타입을 바꾸어 주는 것을 말한다. 대표적인 경우가 확대변환의

 반대경우인 축소변환이 필요한 경우이며 이때 캐스팅을 해주어야 하는 것이다.

ex)

    int  i = 257 ;

    short   s ;

    byte    b ;

 

      s = i ;                        // 컴파일 오류가 생김!

      s = (short) i;               // OK!

     

      b = s ;                      // 컴파일 오류가 생김!

      b = (byte) s ;              // OK!

 

      System.out.println("s=" +s) ;       // s는 257

      System.out.println("b=" +b) ;      // b는 1

 

   위에서 b = (byte) s; 는 16비트에서 8비트로 변수가 바뀐다. 이와같이 축소변환을 하는

  캐스팅의 경우 원래 데이터의 정보를 잃어버릴 수가 있는데 자바에서는 항상 하위의

  바이트들이 남게 되어있다. 예를 들어 위의 코드에서 컴파일 오류를 발생시키는 두 문장을

  삭제하고 실행 시키면 s는 257이 되나 b는 256이 없어진 1이 된다.

   한편 확대변환의 경우는 명시적인 캐스팅이 없어도 시스템에서 자동으로 변환을 해준다.

  단 프로그램의 편리한 유지보수를 위하여 캐스팅을 해주는 것도 바람직하다.

 

    short      s = 3 ;

    double    x = (double) s ;   // 안해도 되나 보기에는 좋다.

  단순 변수의 캐스팅에는 다음의 법칙이 적용된다.

   - 임의의 non-boolean 변수를 임의의 non-boolean 변수로 캐스팅하는 것이 가능하다.

   -  non-boolean 변수와 boolean 변수간의 캐스팅은 허용되지 않는다.

반응형
그리드형