Kotlin 16

[Kotlin] 스코프 함수(Scope Function)

🫷들어가기 전필자는 이런 스코프 함수들이 많이 쓰인다는 건 알고 있었는데 생각해보니까 무엇을 의미하고 어떻게 사용하는지 모르겠었다. 그냥 이런 기능들이 존재하구나 정도로만 생각했었는데 막상 Kotlin을 배우다보니까 알고 있어야 두구두구 잘 사용할 것 같아 포스팅해본다.💁 스코프 함수란?스코프 함수는 특정 객체 내에서 특정 동작(프로퍼티 초기화, 활용 등)을 실행하기 위한 목적만 가진 함수이다.스코프 내에서는 객체의 이름을 통해 일일히 참조할 필요 없이 객체에 접근하고 핸들링할 수 있다. Kotlin에서 제공해주는 스코프 함수는 총 5가지로 apply, run, with, also, let이 있다. 하나하나 살펴보자. 1. apply인스턴스를 새로 생성하고 특정 변수에 할당하기 전 초기화 작업을 해줄..

Kotlin 2024.12.06

[Kotlin] Sealed Class란?

개요필자는 코딩하시는 각별님 유튜브를 보고 있는데 거기에 sealed class가 나와 궁금해 포스팅을 한다. 뭔가 알아야 할 것 같아서..Sealed Class란?sealed는 자기 자신이 추상 클래스이며 자신을 상속받는 여러 서브 클래스들을 가질 수 있다. 이는 enum 클래스와는 달리 상속을 지원하기 때문에 상속을 활용한 다양한 작업들을 할 수 있음을 의미한다. 또한 자신을 상속받는 서브 클래스의 종류를 제한할 수 있다.Sealed Class는 여러 가지 특징이 있다. Sealed Class 클래스의 서브 클래스들은 반드시 같은 파일 내에만 선언해야 한다. Sealed Class는 기본적으로 abstract 클래스이며 private 생성자만 갖게 된다. 상태가 바뀌지 않는 경우는 object 사용을..

Kotlin 2024.12.05

[Kotlin] 싱글톤 패턴(Singleton Pattern), @JvmStatic, Object Class

개요Kotlin에서는 자바의 static 키워드와 new 키워드가 없다고 들었다. 그런데 어떻게 static과 같은 기능을 구현할까? 라는 궁금증에 포스팅해본다.싱글톤 패턴이란?싱글톤 패턴은 어떤 클래스의 인스턴스가 오직 하나임을 보장하며 애플리케이션 시작부터 종료까지 고정된 메모리 영역을 가진다. 이로 인해 메모리를 효율적으로 사용할 수 있다. 하위 레이어들이 인스턴스를 참조하여 사용하는 방식이고 하나의 인스턴스만 필요할 때 사용한다. 자, 그럼 이런 싱글톤 패턴은 왜 사용할까? 정해진 메모리 영역을 사용하기 때문에 해당 객체에 접근할 때 메모리 낭비를 방지할 수 있다. 여러 메모리 영역에 똑같은 인스턴스가 생기는 것을 방지할 수 있으며 전역 인스턴스이기 때문에 공유(static)가 쉽다. 즉, 메모리..

Kotlin 2024.12.05

[Kotlin] 초기화(initialize), get() / set(), 열거형 클래스(Enum Class)

개요오늘은 Kotlin에서 초기화는 어떤 방식이 있는지 열거형 클래스는 무엇을 의미하는지 알아보자. (본 글은 자바를 알고 있다고 가정하고 글을 쓰기 때문에 조금 불친절할 수 있습니다.) 초기화(initialize)lateinitKotlin에서 초기화는 기본 초기화랑 늦은 초기화가 있다. 기본 초기화는 변수처럼 선언과 동시에 초깃값을 지정하는 것이고 늦은 초기화는 선언을 먼저 하고 나중에 초깃값을 지정해 주는 거다.lateinit 키워드를 사용할 때는 늦은 초기화이기 때문에 var 키워드도 같이 사용해야 한다.initialize 함수를 호출하면 늦은 초기화가 발생한다. 기본적으로 class는 프로퍼티를 선언할 때 선언과 동시에 초기화까지 해줘야 하는데 lateinit var 키워드를 사용하여 선언만하고..

Kotlin 2024.12.04

[Kotlin] 클래스(Class), 데이터 클래스(Data Class)

개요필자는 Kotlin에 Data Class라는 클래스가 존재한다는 걸 들어서 공부하려고 했더니 클래스(Class)에 대해서 포스팅한 적이 없어 오늘 클래스(Class)와 Data Class에 대해서 포스팅을 해볼까 한다.ClassClass는 객체 지향 프로그래밍에서 가장 기본이 되고 중요한 개념으로 반드시 알아야 할 내용이다.본 필자가 클래스(Class)와 객체(Object)를 처음 배웠을 때 비유 했었던 자동차를 비유 들어서 이해 먼저해보자. Class는 설계도, 객체(Object)는 클래스에 의해 만들어진 완성품이다.자동차라는 객체(Object)가 있다고 해보자. Class는 자동차에 들어갈 부품들이다. 자동차가 만들어지기 위해서는 여러 부품들이 들어가 있다. 이러한 부품들을 모아둔 곳을 클래스(C..

Kotlin 2024.12.04

[Kotlin] 객체 지향 프로그래밍(OOP)

개요필자는 자바에서 객체 지향 프로그래밍을 했지만 정확한 용도와 의미를 모르고 사용했었다. 이번 포스팅을 통해 객체 지향이라는 말이 정확히 무엇인지 알아보고 간단한 예제를 통해서 실습까지 해보는 시간을 가져보도록 하겠다.* 참고로 필자는 Java를 알고 있다고 가정하고 설명하기 때문에 조금 불친절할 수 있습니다.객체 지향 프로그래밍(OOP)이란?소프트웨어를 객체라는 독립적인 단위로 나누고, 이러한 객체들의 상호작용으로 소프트웨어를 구성하는 프로그래밍 패러다임이다.OOP의 중요 장점은 코드 재사용성 향상, 유지보수 향상, 코드 구성의 개념화, 코드의 가독성 향상이며 추상화, 캡슐화, 상속, 다형성이라는 아주 중요한 개념들이 있다. 그럼 객체 지향 프로그래밍 패러다임은 왜 만들어졌을까? 소프트웨어의 규모가 ..

Kotlin 2024.12.03

[Kotlin] 예외(Exception) 처리하기

개요필자는 자바에서 예외 처리를 할 때 try-catch문을 많이 사용했었다. Kotlin에서는 어떻게 예외 처리를 하는지 궁금해서 포스팅을 해본다. 프로그램을 실행할 때 내가 작성한 코드가 제대로 작동되지 않는 현상이 있다. 이 경우를 예외(Exception)라고 한다.우리는 이 예외를 잡기 위해서 예외 처리를 하는데 주로 사용하는 것이 try-catch문, throw문 등이 있다.try-catch자바와 마찬가지로 try-catch문이 제공되며 사용 방법은 똑같다.try { // 예외 발생 가능성이 있는 코드} catch (error: 예외 클래스) { // 예외 처리 코드} finally { // 무조건 실행할 코드}finally 구문은 무조건 사용하는 게 아니라 필요할 때만 사용한다..

Kotlin 2024.12.03

[Kotlin] 함수(Function), 람다(lambda)

개요필자는 람다를 알아보기 위해서 공부를 시작했는데 하다 보니까 함수도 알아야 할 것 같아서 포스팅해 본다. 함수(Function)프로그래밍에서 함수를 수학적으로 생각하면 안 된다.함수는 하나의 특별한 목적의 작업을 수행하기 위해 독립적으로 설계된 코드들의 집합을 말하는데 한마디로 여러 코드들을 한 번에 묶은 것이라고 정리해도 된다.이로 인해 귀찮은 작업들과 중복 코드가 줄어든다. 직접 개발하다 보면 알게 될 거다.😁함수에는 언어에 기본적으로 포함되는 함수가 있고, 사용자 함수가 있다. 그중 사용자 함수에 대해 알아볼 거다.사용자 함수 정의함수를 정의할 때는 fun 키워드를 사용한다.fun 함수명(파라미터: 타입) : 반환타입 { return 반환값}파라미터는 어떤 데이터를 받는 것이며 필수는 아..

Kotlin 2024.12.02

[Kotlin] JVM, Kotlin 컴파일 과정

개요필자는 Kotlin이 어떻게 컴파일되고 어떻게 Java와 100% 상호운영성이 되는지 궁금해서 포스팅을 한다. 😁 요즘들어 개발보다는 원리를 많이 공부하는 것 같다. 우선 Kotlin 실행 과정보다 Java가 어떻게 돌아가는지를 알아보자. 왜냐하면 Java의 실행 과정을 알아야 Kotlin 실행 과정을 이해할 수 있기 때문이다.JDK, JRE, JVM자바를 실행하기 위해서 JDK를 설치하라고 한번쯤은 들어봤을거다. 왜냐하면 JDK는 자바를 위한 모든게 들어 있기 때문이다. 1. JDKJDK는 Java Development Kit의 약자로 자바 애플리케이션을 개발하기 위해 필요한 도구들이 많이 모여 있는 곳이다. JDK를 설치하면 자동적으로 JRE, JVM이 설치된다.기본적으로 자바 컴파일러, 런타임..

Kotlin 2024.12.02

[Kotlin] 컬렉션(List, Set, Map), 관련 함수들

개요필자는 Java에서 Collection이라는 개념을 들어보기만 했지 자세하게 공부는 안해봤다. 대표적인 List, Map도 사용은 해봤지 자세한 용도와 개념은 모르고 사용했었다. 이번 기회를 통해 다시 처음부터 공부하고자 이 글을 쓴다.CollectionCollection은 자료구조를 편하게 다루기 위한 라이브러리이다.자, 여기서 자료구조란 각 원소들이 논리적으로 정의된 규칙에 의해 나열되며 자료에 대한 처리를 효율적으로 수행할 수 있도록 자료를 구분하여 표현한 것으로 한마디로 데이터들의 모임이라고 정리할 수 있다.즉, Collection은 데이터 값의 모임을 잘 정리한 라이브러리이다. Kotlin에서는 Mutable(가변성)과 Immutable(불변성)로 나누어지고 List, Set, Map 등이..

Kotlin 2024.11.18