Kotlin

반응형

    [Kotlin] abstract class 란 무엇인가?

    abstract class란 무엇인가? abstract class는 그 자체로 인스턴스화 될 수 없는 클래스이다. abstract class는 abstract class를 여러 클래스에서 공통으로 쓰는 프로퍼티와 메서드를 모아놓는 용도로 쓴다. abstract class란여러 클래스의 추상적인 부분(=공통적인 부분)을 모아놓은 클래스인데 그 자체로는 인스턴스화 할 수 없는 클래스이다. 프로그래밍 언어들에서는 abstract class를 abstract type을 가진다고 하고 abstract type은 그 자체로 인스턴스화(객체를 만드는 작업)를 할 수 없는 타입이다. 반대의 단어로는 concrete type이 있는데 concrete type은 그 자체로 인스턴스화 할 수 있는 타입을 뜻한다. Kotli..

    [Kotlin] var과 val의 차이는 무엇인가?

    변수란 무엇인가? 변수는 값(데이터)을 저장하는 메모리 공간에 붙은 이름이다. 이름처럼 고전적인 변수는 값을 읽고 쓰는 것을 모두 지원한다. 실제로 다른 프로그래밍 언어인 Java나 Python등에서는 변수를 만들면 값을 쓰고 읽을 수 있다. 하지만 변수의 값이 바뀔 수 있는 부분이 많아진다는 것은 프로그램에 오류가 일어날 수 있는 부분이 많아진다는 것을 뜻한다. 때문에 최근 함수형 프로그래밍 패러다임에서는 값의 불변성을 중요하게 다룬다. 이에 대해 코틀린은 값이 변할 수 있는 가변 변수인 변수(var)와 값이 변할 수 없는 불변 변수(val) 두가지의 변수를 지원한다. 코틀린에서 지원하는 변수의 종류 : var, val 코틀린에서 지원하는 변수의 종류는 다음과 같다. val: 불변(Immutable) ..

    [Kotlin] apply, run, with, let, also 차이 한 번에 정리하기

    범위 지정 함수(Scope function)란? 범위 지정 함수는 특정 객체에 대한 작업을 블록 안에 넣어 실행할 수 있도록 하는 함수이다. 블록은 특정 객체에 대해 할 작업의 범위가 되며, 따라서 범위 지정 함수라 부른다. 특정 객체에 대한 작업을 블록안에 넣게 되면 가독성이 증가하여 유지 보수가 쉬워진다. 코틀린에서는 let. run, apply. also, with 총 5가지 기본적인 범위 지정함수를 지원한다. 코틀린의 범위 지정 함수 1. apply 2. run 3. with 4. let 5. also 범위 지정함수와 수신객체 지정 람다(함수) 범위 지정함수는 다른 말로 수신객체 지정 람다(함수)라고도 부른다. 이유는 수신객체를 명시하지 않거나 it을 호출하는 것만으로 람다 안에서 수신객체의 메서..

    [Kotlin] Kotlin object 이용한 무명 객체(Anonymous Object) 생성 : 익명 클래스(Anonymous Class)의 구현과 활용 방법

    무명 객체란 무엇인가? 무명 객체란 익명 클래스로부터 생성되는 객체를 뜻한다. 익명 클래스는 다른 클래스들과 달리 이름을 가지지 않는 클래스다. 정리하면 이름을 가지지 않는 익명 클래스로부터 무명 객체를 생성할 수 있다. Kotlin에서는 이를 object라는 하나의 키워드를 통해 구현할 수 있다. 먼저 무명 객체가 왜 필요한지 살펴본 후, 무명 객체를 어떻게 구현하는지 확인하도록 하자. 무명 객체가 필요한 이유 무명 객체는 클래스가 한 번만 활용되어야 하는 경우에 매우 유용하다. 만약 한 번만 활용되어야 하는데 매번 클래스를 생성하면 너무 클래스가 많아지는 불편함이 있기 때문이다. 예를 들어 아래와 같은 인터페이스가 있다. interface ButtonClickListener { fun onButton..

    [코틀린과 객체지향] 2. 자율적인 객체

    실제 세계의 객체와 객체지향 세계의 객체의 차이 앞선 글에서 객체를 실제 세계에 비유하니 객체가 무엇인지 한 번에 이해를 했을 것이다. 이러한 이유 때문에 흔히들 객체를 실제 세계에 비유해 설명한다. 하지만, 실제 세계의 객체는 프로그래밍 상의 객체와 다른 점이 있다. 실제 세계에서는 대부분의 객체들은 수동적이며, 사람이나 고양이 혹은 강아지 같은 자율적인 객체들에 의해 수동적으로 행동한다. 하지만 객체지향 세계의 객체는 수동적으로 행동하지 않는다. 예를 들어보자. 사람들이 사용하는 조명, 펜, 가위 등은 사람에 의해 수동적으로 행동한다. 조명은 사람에 의해 켜지고, 펜과 가위는 사람에 의해 사용된다. 그렇다면 이러한 수동적인 객체들은 프로그래밍 상의 객체가 될 수 없는걸까? 당연히 될 수 있다. 수동적..

    [코틀린과 객체지향] 1. 객체지향 패러다임이란 무엇인가?

    Kotlin은 객체지향 프로그래밍 패러다임을 지원하는 프로그래밍 언어이다. 따라서 Kotlin을 알기 위해서는 객체지향이 무엇인지에 대한 이해가 필수적이다. 이 장에서는 객체 지향 프로그래밍에 대한 간단한 이야기를 하고 넘어가고자 한다. 객체 지향에 대한 깊은 내용은 뒤에서 다룰 내용이니 가볍게 읽고 가도록 하자. 객체지향이란 무엇인가? 객체지향은 객체를 중심으로 프로그래밍을 하는 프로그래밍 패러다임을 뜻한다. 쉽게 설명하면 우리가 코딩을 통해 하나의 세계를 창조한다고 보고 해당 세계 안에는 객체들이 존재한다고 보는 프로그래밍 방식이다. 여기서의 객체란 상태를 저장할 수 있는 자율적으로 행동하는 주체를 뜻한다. 한 번 객체지향적으로 우리가 하나의 세계를 창조하고 사람과 고양이 강아지가 존재한다고 해보자...

    Kotlin의 val은 왜 엄밀한 의미의 불변 변수가 아닌가?

    Kotlin에서는 var을 읽기와 쓰기가 모두 가능한 가변 변수로 val을 읽기만 가능하면 불변 변수로 정의한다. 하지만, 실제로는 var은 물론 val 또한 엄밀한 의미의 불변이 아니다. 지금부터 이유를 알아보도록 하자. 변수에 값을 할당하는 것은 정확히 말하면 메모리 공간을 할당하는 것이다. 다음의 코드를 예시로 들어보자. val blogName = "Kotlin World" var date = "2021-10-02" 위의 코드를 실행하면 blogName이라는 변수값이 정해지고 해당 변수값을 참조했을 때 "Kotlin World"가 저장된 메모리 공간을 반환한다. date라는 변수값은 "2021-10-02"가 저장된 메모리 공간을 반환한다. var date = "2021-10-02" date = "2..

    [Kotlin] object 를 이용한 싱글톤 패턴 구현

    개발을 하다보면 객체에 대한 하나의 인스턴스만 필요할 때, 하나의 인스턴스를 재사용하기 위해 싱글톤 패턴을 구현해야 할 일이 생긴다. *싱글톤 패턴 : 객체의 인스턴스를 1개만 생성하여 계속 재사용 하는 패턴 Java에서의 싱글톤 기존 자바에서는 싱글톤 패턴을 구현하기 위해 많은 코드를 작성해야 했다. 보통은 다음과 같은 방식으로 싱글톤 패턴을 구현하였다. public class SingletonClass { // 1. static으로 선언된 객체를 담는 변수(instance) private static SingletonClass instance; public String sampleString = "Sample String"; // 싱글톤에 집중하기 위해 public으로 설정 private Single..

    [Kotlin] Kotlin sealed class란 무엇인가?

    sealed class의 등장 배경 여러 자식 Class들이 하나의 부모 Class를 상속 받았다고 했을 때 컴파일러는 부모 Class를 상속 받은 자식 Class들이 있는지 알지 못한다. 예를 들어보자. 우리가 사용자의 런닝 운동을 기록해주는 앱을 만들고 있다. 이때 우리는 사람의 상태를 클래스로 만들고자 한다. 상태의 종류는 3가지로 뛰는 상태(Running), 걷는 상태(Walking), 쉬는 상태(Idle)가 있다. 이는 다음과 같이 코드로 만들어질 수 있다. abstract class PersonState class Running : PersonState() class Walking : PersonState() class Idle : PersonState() 코드1. class 상속 예제 각 P..

    [Kotlin Collection] 5. Kotlin reduce 를 알아보자 : 재귀적으로 수행된 결과값으로 반환 값을 만드는 함수

    목차로 돌아가기 [Kotlin Collection] Kotlin에서 확장함수를 이용해 Collection 조작하기 목표 Collection 확장함수가 하는 일을 이해한다. 자유롭게 확장 함수를 이용해 데이터를 조작한다. 개요 Kotlin에서는 일반 컬렉션에도 함수형 프로그래밍을 위한 확장 함수를 제공하여, 데이터를 kotlinworld.com 목표 reduce의 개념을 이해한다. reduce를 사용하는 방법을 익힌다. reduce() 개요 reduce는 순서가 있는 데이터(CharSequence, Iterable 등)에 대해 각 데이터에 대해 연산을 재귀적으로 수행해 반환해주는 함수이다. 시작 값은 맨 앞의 데이터이며, 반환 데이터 타입은 맨 앞의 데이터 타입을 따른다. 예를 들어 아래와 같은 sampl..

반응형