Kotlin

목표 by 키워드를 이용하여 Delegate Pattern을 구현하는 방법을 안다. 개요 Kotlin에서는 Delegate Pattern을 구현하기 위한 키워드인 by 키워드를 제공한다. 클래스 선언부의 by 키워드를 먼저 살펴보자 클래스 선언부의 by 키워드 클래스 선언부에는 interface가 implement되거나 다른 클래스가 상속될 수 있다. 위임 패턴은 인터페이스 구현부를 다른 클래스에 위임하는 것이기 때문에 인터페이스 구현에만 사용될 수 있다. 따라서 Kotlin의 위임패턴을 도와주는 by키워드는 다음과 같은 제한을 가진다. by 키워드는 interface가 implement되는 경우에만 사용될 수 있다. 클래스 상속에는 by 키워드 사용이 불가능하다. 변수(val, var)와 메서드(fun..
목표 Delegate Pattern에 대해 이해한다. Delegate Pattern이란 Delegate란 한국말로 위임이라는 뜻이다. 우리가 계약서 등을 작성할 때 대리인에게 결정 권한을 위임한다고 하면, 대리인은 우리의 결정 권한을 가지게 된다. 대리인은 우리와 다른 사람임에도 결정 권한이라는 행동에 대해 우리와 똑같이 행동할 수 있게 되는 것이다. 코틀린의 Delegate Pattern 또한 같다. 코틀린의 Delegate Pattern은 한 객체에의 함수(행동) 혹은 프로퍼티(속성)의 구현을 다른 객체에 위임한다. 예를 들어 객체1과 객체2가 있다고 해보자. 이러한 객체1의 행동을 객체2에 위임한다고 했을 때 객체2는 객체1의 함수와 프로퍼티를 위임 받는다. 예를 들어 다음과 같은 부동산계약을 위한..
목표 string.xml 을 사용해 다국어 문자열을 만드는 방법을 안다. 개요 세계에는 한국어, 영어, 일본어, 중국어, 스페인어 등 다양한 언어가 있다. 사용자에 따라 자신에게 편한 언어가 다를 수 있다. 앱을 사용할 경우에도 마찬가지이다. 사용자 별로 자신이 편한 언어가 다를 수 있는데, 이는 주로 자신이 속한 국가에 영향을 받는다. 안드로이드에서는 국가에 따라 다르게 문자열을 표현할 수 있는 방법을 제공한다. 우리는 이를 다국어 문자열을 지원한다고 한다. 그렇다면 어떻게 지원을 할까? 바로 res(리소스) 폴더 내에 있는 values 폴더 내부의 strings.xml 파일을 통해 다국어 문자열을 지원한다. strings.xml 이란? 여기서 strings.xml 파일 내부에서 string은 key-..
목표 enum class의 사용법을 이해한다. enum class에 대한 함수 만들기 class Task { var state: State = State.WAITING fun printState() = when(state){ State.WAITING -> println("Waiting..") State.PROCESSING -> println("Processing..") State.DONE -> println("Task done") } enum class State { WAITING, PROCESSING, DONE } } 앞의 글에서 위의 코드를 보았다. 하지만, 이 코드는 문제가 있다. 특정한 state가 추가될 때마다 when의 분기에 무조건 print를 위한 처리 로직을 넣어주어야 한다. 공통 함수 ..
목표 enum class가 무엇인지 이해한다. enum class가 사용되어야 하는 곳을 이해한다. enum class를 왜 사용해야 하는가? 변수의 상태 별로 다른 결과값을 출력하는 코드를 짜야한다면 어떻게 짜야할까? 직관적으로 떠오르는 방법은 변수의 상태를 상수로 정의한다음 상태 별로 동작을 정의하는 것이다. 예를 들어 Task라는 작업 단위가 있고 해당 작업 단위의 상태값이 state를 출력해주는 클래스를 설계한다고 해보자. 그러면 해당 클래스는 아래와 같이 만들어질 수 있다. class Task { var state: Int = WAITING fun printState() = when (state) { WAITING -> println("Waiting..") PROCESSING -> println..
Dev.Cho
'Kotlin' 태그의 글 목록 (23 Page)