'2010/11/06'에 해당되는 글 1건

  1. 2010.11.06 20101106 안드로이드 application 개발 과정 강의 by 대절님

- android 개발할땐 캡슐화 하지말아라~~
- 관련있는것은 inner Class로 ~


1. 안드로이드 개발환경 구축
  1-1 자바 개발환경 구축(jdk1.5이상)
  1-2 설정
    - JAVA_HOME 환경변수 생성
    - Path 환경변수 편집
        %JAVA_HOME%\BIN; 추가
    - CLASSPATH 환경 변수 생성
  1-3 이클립스 IDE 3.4이상
  1-4 Android SDK 설치
    - http://developer.android.com/index.html - SDK - Windows version download
    - SDK manager 눌러서 전체 install
  1-5 Android Eclipse Plugin(ADT) 0.97 설치

2. JAVA
  - Compile & interpreter
    java : o/s > jvm > App(*.class)
    android : o/s > dalvik > App(*.dex)

3. OOP
  3-1. Encapsulation
    - Data(information) Hiding
      속성을 private으로 지정하여 접근제한.
      Public한 getter, setter 지원
    - Android 에서는 지양한다.
  3-2. Inheritance
    - 코드의 재사용성
    - 너무 깊은 상속트리는 피하는게 좋다.
  3-3. Polymorphism
    - 상속이 전제조건
      - 구현 상속(class상속) : Generalization(일반화)
      - 인터페이스 상속(Interface 상속) : Realization(실현)
    - 상속트리에 기반
    - big = small

4. Method Overriding
  - 메소드 재정의
  - 상속받은 부모의 메소드와 프로토타입은 동일하게 하면서 구현부를 변경하는것

5. Virtual Method Invocation
  - 메소드의 동적 바인딩

  ex) Employee <-- Engineer, 둘다 printInfo()라는 메소드를 가지고 있을경우
      Engineer eg = new Engineer();
      eg.printInfo(); // 정적 바인딩
      Employee eg = new Engineer();
      eg.printInfo(); // 동적 바인딩,
                         컴파일은 Employee것이 되지만 Engineer에서 printInfo()가 재정의 되었을경우 Engineer것이 실행됨.
    다형성을 쓸경우 하위클래스에서 메소드가 재정의 되었는지 판단하는 시간이 추가됨.

6. Heterogeneous Collection
  배열 --> 동형집합
  다형성 적용 --> 이형집합
  ex) arr[0] = new Engineer();
      arr[1] = new Manager();
      --> 타입은하나로만 설정할수 있음. 그렇기 때문에 두타입을 포함할수있는
      Employee arr[] = new Employee[2];

7. Polymorphic Argument
  매개변수의 다형성
  ex) increaseSalary(Engineer eg){
        eg.salary += 10000000;
      }
      이경우 Engineer 만 salary를 조정할수있음 --> 매개 변수를 Employee로 변경하면 Manager도 사용

8. Polymorphic Return Type
  리턴타입의 다형성
  ex) Employee createEmployee(){
        if(){
          return new Engineer();
        }else if(){
          return new Manager();
        }
      }

      Employee e = factory.createEmployee();  // Employee 타입으로 return 받음.

9. Inner Class
  특정 클래스 안에 정의되는 또 다른 클래스
  ex) Class Outer{
        Class Inner{
        }
      }
     
  Inner class는 상속없이 Outer Class의 자원을 쓸수있음.
  Inner class는 method 처럼 취급 접근지정자 4가지를 모두 사용가능. private로 설정하면 캡슐화가 됨.

10. instance Inner Class
  Static을 붙이지 않은 inner Class
  Instance 멤버의 성격을 띤다.
  Outer의 모든 기능을 사용할수 있다.
  Outer의 객체 생성이 요구된다.
  이곳에서는 static 멤버는 만들수가 없음.

11. Static Inner Class
  Static을 붙인 Inner Class
  Static 멤버의 성격을 띤다.
  Outer의 static 멤버만 사용할수 있다.
  Outer의 객체 생성이 요구되지 않는다.

12. Local Inner Class
  블럭 안에 선언된 클래스
  지역변수의 성격을 띤다.
  ex) Class Outer{
        void methodA(){
          Class Inner{
          }
        }
      }
  Outer 멤버와 블럭안의 상수만 사용할수 있다.

13. Annoymous inner Class
  이름이 없는 inner Class
  반드시 상속받을 클래스나 인터페이스가 존재하는 상황에만 가능
  new 상속받을 클래스나 인터페이스 이름(){
    클래스 정의
  }

14. Static Final
  변수앞에 final --> 상수
  Class Data{
    static final int COUNT = 10; // 모든객체가 똑같은 상수값을 가질때는 static 키워드를 붙이는것이 좋음.
    final int COUNT2;      //생성자에서 초기화 할수 있음. 이런경우 static X
  }

15. ANR
  Android Not Responding
  - Activity, Service가 5초이내 응답이 없는경우
  - BroadcastReceiver가 10초이내 응답이 없는 경우
  시간이 걸리는작업의 경우, 네트웍에 관련되작업은 시간이 많이 걸린다고 가정 등 이런경우 thread이용

16. Thread
  한 프로세스 내에서의 여러 개별적인 실행 흐름
  Thread는 개별적인 stack을 부여 받는다.

17. Thread LifeCycle
                                 ┌----- 'Blocking' ←---┐  키보드 입력을 대기 하는 경우 등, 입력이 들어올경우 runnable상태로     
                                 │                      │
                                 ↓                      │
    'new'  ---start()--->  'runnable'  <-------------> 'running'  ---run()종료---> 'dead'
                            우선순위에 따라 실행과 대기를 반복
    자원의 공유 문제가 발생이 되기 때문에 syncronize 하여 lock을 걸게함.
    wait() 는 강제로 blocking 상태로 보냄. 그것은 자동으로 깨어나지 않음. notify()를 호출하여 깨워줘야함.

18. XML
  마크업 언어의 구성요소 : element
  <tag attribute="value">
    content(body)
  </tag>
  <tag attribute="value" />

19. Well-fromed 규칙
  반드시 1개이상의 엘리먼트를 가져야 한다.
  루트 엘리먼트는 반드시 1개이어야 한다.
  시작태그와 종료태그는 1쌍으로 이루어져야 한다.
  속성은 시작태그에만 올수 있다.
  속성의 값은 '', "" 로 감싸야 한다.
  속성의 이름은 한 태그 내에서 유일해야 한다.
  case sensitive
  주석은 xml선언부 이후에만 와야 한다.
  태그는 nesting 가능, overlap 불가능
  엘리먼트 이름, 속성 이름 w3c 이름규칙을 따라야 한다.

20. Parser의 유형
  1. Well-formed Parser
  2. Validition Parser

21. Namespace
  이름의 충돌을 방지하기 위한 논리적인 공간
  xmlns="http:/www.jurib.com/"  //default namespace
  xmlns:movie="http://www.jurib.com/movie/"
  xmlns:song="http://www.jurib.com/song/"
  <song:title>돌이킬수 없는</song:title>
  <movie:title>초능력자</movie:title>
  <title>아저씨</title>   //default namespace

22. DOM
  DOM Tree를 생성해주는 파싱방식
  문서의 내용을 탐색, 변경, 삽입, 삭제, 삭제
  메모리의 사용량이 xml 문서의 크기에 비례 -- 이 문제때문에 사용하기는 편리하나 SAX를 사용하여 성능향상

23. SAX
  Simple API for XML
  Tree X, 이벤트 기반의 파싱(문서 시작, 문서끝, 시작태그...) - 콜백메소드
  탐색만 가능, 속도가 빠름
  재탐색 불가능
  메모리 사용량이 일정

 

 

 

저작자 표시 비영리 동일 조건 변경 허락
신고

'programing > ETC' 카테고리의 다른 글

20101113 안드로이드 application 개발 과정 강의  (0) 2010.11.13
20101106 안드로이드 application 개발 과정 강의  (0) 2010.11.06
mimetype 목록  (3) 2010.11.02
MS 워드 대문자 자동완성 해제하는 법  (0) 2009.09.11
power point 2007강좌  (0) 2009.08.19
인코딩  (0) 2009.08.14
Posted by 대절님

댓글을 달아 주세요



티스토리 툴바