티스토리 툴바


달력

05

« 2012/05 »

  •  
  •  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  •  
  •  















내부 클래스 

 

내부 클래스(inner class)란?

    - 클래스 내부에 또 다른 클래스가 정의됨

    - 한 클래스를 다른 클래스의 내부 클래스로 선언하여 두 클래스의
      멤버들간에 쉽게 접근이 가능

    - 외부에 불필요한 클래스를 감춤으로써 복잡성을 줄임(캡슐화)

 

     * 캡슐화

        - 객체를 다른 객체가 접근할 수 있는 부분인 노출부와 그렇지
         못한 상세 구현부로 분리하는 것

        - 캡슐화된 메소드의 기능만을 알고
          그 기능만을 사용할 뿐 그 기능에 대해서 알 수 없음

        - 특정 개체가 독립적으로 역할을 제대로 수행하기 위해 필요한 데이터와 기능을 하나로 묶어 관리하는 것

        - 정보의 보호 목적에서 만들어진 개념

 

        ex) '사람'이 있다면 사람에 '코', '눈', '귀'가 있음. 코는 냄새를 맡고 눈은 볼 수 있고, 귀는 듣는 기능이 있음.

            하지만 눈, 코, 귀가 어떻게 기능을 작용하는지에 대한 정보는 알수 없음 

 

내부 클래스의 종류와 특징

    - 내부클래스는 마치 변수를 선언하는 것과 같은 위치에 선언할 수 있음

    - 선언위치에 따라 유효범위와 성질이 변수와 유사

 

    종류

    local 클래스(지역 클래스)

        - 외부 클래스의 메서드나 초기화블럭 안에 선언, 선언된 영역 내부에서만 사용가능

        - 특정 메서드 안에서 정의되는 클래스. 특정 메서드 안에서 선언되는 지역변수와 같은 것. 메서드가 호출될 때

          생성할 수 있으며 메서드의 수행력이 끝나면 지역변수와 같이 자동 소멸


        => 

            class Outer{

                ...

                public void A(){

                    ...

                    class Innner{}

                    ...

                }

            }

 

    Annoymous class (익명 클래스)

        - 클래스의 선언과 객체의 생성을 동시에 하는 이름없는 클래스(일회용)

        - 이름이 없는 것을 의미. 자바의 프로그램적으로 해석하면 정의된 클래스의 이름이 없다는 것

        =>

            class Outer{

                ...

                Inner inner = new Inner(){

                    public void A{

                            ...                        

                    }

                };

            }

 

    Instance클래스(인스턴스 클래스) 

        - 외부클래스의 멤버변수 선언위치에 선언하며, 외부클래스의 인스턴스멤버 변수처럼 다루어짐.

          주로 외부클래스의 인스턴스멤버들과 관련된 작업에 사용된 목적으로 선언

        - 객체를 생성해야만 사용할 수 있는 멤버들과 같은 위치에 정의되어 있는 클래스.
          즉 내부 클래스를 생성하려면 외부 클래스의 객체를 생성한 후에 생성할 수 있음

        - Outer outer = new Outer();

        Outer.Inner inner = outer.new Inner();

        =>

            class Outer{

                ...                        // 구현부

                class Inner{}

                    ...

            }

 

    static nested class(Static class or Nested class)

        - 외부클래스와 멤버변수 선언위치에 선언하며, 외부클래스의 static멤버처럼 다루어짐. 주로 외부 클래스의
          static 멤버, 특히 static 메서드에서 사용될 목적으로 선언

        - static 내부 클래스로 어쩔 수 없이 정의하는 경우가 있는데 내부 클래스 안에 static 변수를 가지고 있다면
          해당 내부 클래스는 static으로 선언해야함.

        => 

            class Outer{

                ...

                static class Inner{}

                ...

            }

 

 

 

    * static nested 클래스와 instance 클래스의 생성 방식이 다름.

        - static nested클래스는 new [Outer 클래스명].[nested 클래스명]으로 바로 생성.

        - instance 클래스는 먼저 Outer 클래스에 대한 인스턴스를 생성한 후 outer.new [Inner 클래스명]()으로 생성

        =>

            Inner Class

            Outer outer = new Outer();

            Outer.Inner = outer.new Inner();

        

            static nested class

            Outer.Inner inner = new Outer.Inner();

Posted by 혼자이지만

댓글을 달아 주세요
















-- 그래픽 처리 메서드 --

drawBitmap(Bitmap bitmap, float left, float top, Paint paint) - 비트맵 출력

drawPoint(float x, float y, Paint paint) - 점 찍기

drawLine(float startX, float startY, float stopX, float stopY, Paint paint) - 선 그리기

drawCircle(float cx, float cy, float radius, Paint paint) - 원 그리기

drawRect(float left, float top, float right, float bottom, Paint paint) - 사각형

drawText(String text, float x, float y, Paint paint) - 글자 찍기

drawColor(int color) - 색칠하기

drawARGB(int a, int r, int g, int b) - 색칠하기

drawPaint(Paint paint) - 색칠하기

drawRoundRect(RectF rect, float rx, float ry, Paint paint) - 둥근 사각형

drawOval(RectF oval, Paint paint) - 원/타원

drawArc(RectF oval, float startAngle, float sweepAngle, boolean useCenter, Paint paint) - 호/부채꼴

drawLines(float[] pts, Paint paint) - 점선

drawPoints(float[] pts, int offset, int count, Paint paint) - 연속적인 점


-- Canvas 변형 메서드 --

translate(float dx, float dy) -  평행이동

skew(float sx, float sy) - 기울임

rotate(float degrees) -  회전

rotate(float defrees, float px, float py) - 회전

scale(float sx, float sy) - 확대/축소

scale(float sx, float sy, float px, float py) - 확대/축소

save() - 현재 상태 저장

restore() - 상태 복구 

'프로그래밍 정리 > 안드로이드' 카테고리의 다른 글

[안드로이드] 그래픽 관련 메소드  (0) 2011/07/28
Posted by 혼자이지만

댓글을 달아 주세요