Kotlin

    [RxJava] 반응형 프로그래밍 이해하기

    예제 링크: https://github.com/seyoungcho2/RxJavaExample 경로 : example/example1 명령형 프로그래밍과 반응형 프로그래밍 명령형 프로그래밍 명령형 프로그래밍은 컴퓨터에게 무엇을 하라고 명령하는 것이다. 예를 들어 1, 2, 3을 출력하는 명령형 프로그램을 만든다고 해보자. 그럴 경우 우리는 다음과 같이 컴퓨터에 명령을 내린다. println("count : 1") println("count : 2") println("count : 3") 명령을 받은 컴퓨터는 명령을 받아 순서대로 출력값을 내어놓는다. 반응형 프로그래밍 그렇다면 이것을 반응형 프로그래밍으로 만들어보면 어떻게 될까? 먼저 다음과 같은 PublishSubject을 이용한 데이터 발행자(Publi..

    [List 자료구조] 2. ArrayList

    목표 ArrayList의 특징을 이해한다. 접근, 검색, 추가, 삭제를 위한 시간 복잡도가 어떻게 도출되는지 이해한다. ArrayList ArrayList는 내부가 배열(Array)형태로 된 List이다. ArrayList는 List인데 연속된 메모리 공간을 차지하는 Array의 형태를 가지고 있다. 따라서 특정원소에 Index를 이용해 접근이 가능하다. ArrayList는 List의 성질인 가변성을 위해서 ArrayList는 과 같이 처음부터 일정량의 메모리 공간을 잡고 들어간다. 만약 같이 List에 인스턴스가 더해져 메모리 공간이 모두 찬다면 다시 해당 메모리 공간보다 더 큰 메모리 공간을 잡아 기존 객체를 복사한 다음 연산을 이어간다. 예를 들면 하나의 메모리 공간만 필요한데 향후 값이 추가될 것..

    [List 자료구조] 1. 코틀린의 리스트(List) 자료구조

    목표 리스트의 특징을 이해한다. 코틀린에서 리스트가 구현된 방식을 안다. 리스트(List) 리스트(List)란 하나의 변수에 여러 값을 저장하기 위해 불연속적인 메모리 공간을 차지하는 동적(Dynamic)인 자료구조이다. 개요 리스트는 여러 값을 저장하기 위해 메모리의 불연속적인 공간을 차지하고 있다. 불연속적인 공간을 차지하고 있으므로, 다음 값을 넣기 위해서는 비어있는 메모리 공간 어느 곳에나 변수를 넣으면 된다. 해당 주소값을 리스트에 추가 함으로써 리스트에 값 인스턴스의 추가가 완료된다. Kotlin에서 사용하는 List는 두가지 관점에서 나눌 수 있다. 하나는 가변성이고 다른 하나는 자료구조이다. 가변성은 변화 가능(Mutable)한지 아니면, 불가능한지(Immutable)에 대한 성질이며, K..

    [Delegate Pattern] 2. by 키워드를 이용하여 Delegate Pattern 구현하기

    목표 by 키워드를 이용하여 Delegate Pattern을 구현하는 방법을 안다. 개요 Kotlin에서는 Delegate Pattern을 구현하기 위한 키워드인 by 키워드를 제공한다. 클래스 선언부의 by 키워드를 먼저 살펴보자 클래스 선언부의 by 키워드 클래스 선언부에는 interface가 implement되거나 다른 클래스가 상속될 수 있다. 위임 패턴은 인터페이스 구현부를 다른 클래스에 위임하는 것이기 때문에 인터페이스 구현에만 사용될 수 있다. 따라서 Kotlin의 위임패턴을 도와주는 by키워드는 다음과 같은 제한을 가진다. by 키워드는 interface가 implement되는 경우에만 사용될 수 있다. 클래스 상속에는 by 키워드 사용이 불가능하다. 변수(val, var)와 메서드(fun..

    [Delegate Pattern] 1. Delegate Pattern이란?

    목표 Delegate Pattern에 대해 이해한다. Delegate Pattern이란 Delegate란 한국말로 위임이라는 뜻이다. 우리가 계약서 등을 작성할 때 대리인에게 결정 권한을 위임한다고 하면, 대리인은 우리의 결정 권한을 가지게 된다. 대리인은 우리와 다른 사람임에도 결정 권한이라는 행동에 대해 우리와 똑같이 행동할 수 있게 되는 것이다. 코틀린의 Delegate Pattern 또한 같다. 코틀린의 Delegate Pattern은 한 객체에의 함수(행동) 혹은 프로퍼티(속성)의 구현을 다른 객체에 위임한다. 예를 들어 객체1과 객체2가 있다고 해보자. 이러한 객체1의 행동을 객체2에 위임한다고 했을 때 객체2는 객체1의 함수와 프로퍼티를 위임 받는다. 예를 들어 다음과 같은 부동산계약을 위한..