반응형

# 버전 선택 : 버전마다 지원되는 요소가 다 다르지만 다 숙지하는 데는 어려움이 있다. -> 점유율을 참고할 수 있다.

 

프로젝트 구조

manifests : 환경설정 파일 및 메타 정보 파일

  • allowBackup : 앱 데이터 백업, 복원 여부 (Default : true)
  • icon : 앱 아이콘과 구성 요소에 대한 기본 아이콘
  • label : 사용자가 읽을 수 있는 레이블과 구성 요소에 대한 기본 레이블
  • roundIcon : 원형 아이콘이 적합한 경우 원형 아이콘 사용
  • supportsRtl : 오른쪽에서 왼쪽으로 레이아웃을 지원할지 여부 ( Default : false)
  • theme : 기본 테마 스타일, Activity 마다 다르게 설정 가능

java : 실제 코드 부분, 유닛 테스트(기능별 테스트)를 지원하기 때문에 3가지

res : layout : 화면의 UI를 담당하는 레이아웃 리소스

  • layout : 화면의 UI를 담당하는 레이아웃 리소스
  • mipmap : 애플리케이션 아이콘 등 이미지
  • values : 문자열, 컬러

Gradle Scripts : 앱의 설정 정보, 기타 앱이 의존하는 라이브러리 정보

 

# import 과정에서 매번 [ Alt + Enter ]로 진행하는 것이 불편하기 때문에 Settings에서 Auto Import를 활성화한다.

 

컴파일 vs 빌드

  • 컴파일 : 통역
  • 빌드 : 컴파일 + 링킹 + 로드

  - 링킹 : 여러 개의 코드로 분리된 기능들을 취합하는 과정

  - 로드 : 실제로 메모리에 올리는 것

 

주석

  • java 주석 : 한 줄 - "//", 여러 줄 - "/*" ~ "*/"
  • javaDoc 형식의 주석 : "/*" ~ "*/", 도움말로 참조 가능
  • XML 주석 : "<!--" ~ "-->"

 

진입점

안드로이드는 단일 진입점이 없다. cf) Java, C, C#의 main

4대 컴포넌트가 진입점 역할

  • Activity :화면에 포커싱 되어 사용자와 상호 작용
  • Service : 백그라운드에서 실행되는 구성 요소, 사용자 UI 제공 X
  • BroadCast Receiver : 시스템 변경 사항 알림
  • Content Provider : 데이터 공유

 

#안드로이드 런처 : 안드로이드의 홈 화면을 담당하는 특수한 앱, 'Home' 키를 누르면 복귀하는 앱

 

코드의 재사용성과 유지/보수

클래스 vs 인스턴스

  • 클래스 : 객체를 위한 설계도
  • 인스턴스 : 설계도(Class)를 통해 생성된 실제 객체

 

 

 

캡슐화

  - 객체의 내부 정보를 외부로부터 은닉하는 것

  • 내부의 복잡한 로직을 숨겨 외부에서 기능을 사용에 용이하게 한다.
  • 내부의 주요 속성들을 외부로부터 보호

 

* 접근 지시자 : 캡슐화를 지원하기 위해 존재

  • public : 프로그램의 모든 위치에서 액세스 가능
  • protected : 동일한 패키지 또는 다른 패키지의 서브 클래스에서만 액세스 가능
  • default : 동일한 패키지에서만 액세스 가능
  • private : 자신의 클래스에서만 액세스 가능, 클래스나 인터페이스는 불가

  필드에서도 public을 사용하여 외부에서 접근할 수 있지만 외부에서 객체의 속성에 직접 접근 가능해지기 때문에 캡슐화 원칙이 지켜지기 어렵다. -> 외부와의 상호 작용은 public 메소드 사용을 권장

 

상속

  - 다른 클래스의 기능을 그대로 사용하면서 자신만의 기능을 추가하는 확장의 개념

  • 메소드 오버 로딩 : 같은 기능을 하지만 입력받는 파라미터의 자료형이 다를 때 사용
  • 메소드 오버 라이딩 : 상속에서 부모가 제공한 기능을 그대로 쓰지 않고 바꿔서 사용하는 것

 

라이브러리

  - 개발의 생산성 향상을 위하여 자주 사용하는 기능을 여러 곳에서 사용할 수 있도록 묶은 것

  - bulid.gradle에서 dependencies에 의존성이 있는 라이브러리를 적는다.

프레임워크

  - 라이브러리처럼 자주 사용하는 기능을 묶어 개발 생산성 향상을 목적으로 한다.

  - 공통적인 부분은 상위 클래스에서 구현, 추가 구현 부분은 하위 클래스의 Callback을 호출

 

라이브러리 vs 프레임워크 : 코드 흐름의 제어권

  •   라이브러리 : 앱 흐름을 직접 제어
  •   프레임워크 : 앱 코드가 프레임워크에 의해 사용된다.

Callback 함수

  - 외부에서 불려지는 함수 (직접 호출 X)

반응형

+ Recent posts