Developing Myself Everyday
article thumbnail
[Kotlin] 제네릭, 리플렉션, 애노테이션 - week 12
스터디/코틀린 언어 2023. 10. 18. 11:26

제네릭의 정의 제네릭이란 자료형의 타입을 일반화하는 것을 의미합니다. 이는 내부에서 타입을 지정하는 것이 아니라, 외부에서 사용 시점에 자료형을 지정하게끔 일반화시켜 두는 방법입니다. 제네릭을 사용하면 함수나 클래스 등을 일반화시켜 재사용하기 쉽게 만들 수 있습니다. 제네릭은 object 같은 싱글톤 패턴을 사용하는 상황에서는 사용할 수 없습니다. 오직 하나의 객체만 생성하기에 굳이 일반화할 필요가 없기 때문입니다. 타입 매개변수(Type Parameter) 클래스나 함수의 자료형을 임의의 문자로 지정해서 컴파일 다임에 자료형 점검을 할 때 사용합니다. 타입 매개변수는 영어 대문자로 표시하며 아래와 같이 사용될 수 있습니다. 다만 이에 대한 규칙이 존재하는 것은 아닙니다. 그렇기에 유형에 더 구체적인 이..

[Kotlin] 위임 확장 - week 11
스터디/코틀린 언어 2023. 9. 20. 20:27

클래스 위임(delegation) 클래스 위임은 다른 클래스에 자기 클래스가 할 일을 다른 클래스에 맡겨 처리하는 것을 말합니다. 보통 하나의 클래스에는 하나의 책임을 부여해서 설계하는 방식을 사용합니다. 하지만 위임은 2개의 클래스가 동일한 책임을 가지고 나눠서 처리합니다. 이는 구현 상속에 대한 좋은 대안으로 입증되었으며 코틀린에서는 by를 사용하여 쉽게 구성할 수 있습니다. 클래스 위임을 위해서는 위탁자 클래스(delegator), 수탁자 클래스(delegate), 두 클래스가 상속하는 인터페이스로 구성합니다. 인터페이스 동일한 일을 나눠서 처리하라면 일단 두 클래스 사이의 공통된 인터페이스가 필요합니다. interface Base { fun print() } 수탁자 클래스 수탁자 클래스는 실제 기..

article thumbnail
[Kotlin] 함수 추가사항 알아보기 - week 10
스터디/코틀린 언어 2023. 9. 10. 12:28

함수형 프로그래밍 함수형 프로그래밍은 프로그램의 주요 구성요소로 함수를 사용하며, 함수의 조합으로 프로그램을 작성하는 것을 강조합니다. 기본적으로 함수형 프로그래밍은 선언형 프로그래밍 의 특성을 함수들의 조합을 사용하여 구현하는 패러다임입니다. 그럼 선언형 프로그래밍은 뭘까요? 이를 위해서는 명령형 프로그래밍을 함께 이야기해야 합니다. 선언형 프로그래밍 vs 명령형 프로그래밍 선언형과 명령형의 차이는 무엇(What)을 할 것인지, 어떻게(How) 할 것인지를 설명하는 방식에 차이가 있습니다. 개발자는 먼저 명령형 프로그래밍을 기반으로 개발해 왔습니다. 다만 복잡하게 엉켜있는 코드를 관리하는 것은 매우 힘든 일이었습니다. 그렇기에 큰 문제를 작은 순수 함수로 나눠서 해결하는 기법인 함수형 프로그래밍 을 사..

[Kotlin] 추상 클래스, 인터페이스, Sealed 클래스 - week 9
스터디/코틀린 언어 2023. 9. 7. 13:45

추상 클래스(Abstract Class) 추상 클래스는 직접 인스턴스화 할 수 없고 다른 클래스의 상위 역할만 할 수 있는 클래스를 말합니다. 클래스를 추상 클래스로 만들기 위해서는 abstract라는 변경자 키워드를 붙여야 합니다. 좀 더 쉽게 말하자면 기본 함수를 강제하고 기본 속성을 가질 때 사용합니다. 아래의 예시를 보겠습니다. abstract class Animal { abstract val species: String abstract fun makeSound() } class Dog : Animal() { override val species: String = "개" override fun makeSound() { println("멍멍!") } } fun main() { val dog = Do..

article thumbnail
[Kotlin] 코틀린 컬렉션 - week 8
스터디/코틀린 언어 2023. 9. 3. 17:09

Collection 컬렉션은 일련의 객체를 담는 컨테이너로 사용됩니다. 컬렉션은 여러 객체를 저장하고 관리하며, 필요에 따라 데이터를 추가, 삭제, 검색, 정렬하는 등의 작업을 수행할 수 있습니다. Java와 Kotlin에서 제공하는 컬렉션 인터페이스와 클래스는 다양한 형태의 컬렉션을 다룰 수 있도록 다양한 기능을 제공합니다.컬렉션은 크게 List, Set, Map로 분류될 수 있습니다 이 3가지 Collection은 중복을 허용하는지, 순서가 보장되는지에 따라 구분할 수 있습니다. Mutable(가변) vs Immutable(불변) 변수에서의 가변과 불변은 해당 값이 변경될 수 있는가에 따라 나뉩니다. 쉽게 말하자면 ‘read-only’와 ‘read&write’로 보면 됩니다. 컬렉션도 마찬가지입니다...

[Kotlin] 클래스 추가 사항 - week 7
스터디/코틀린 언어 2023. 8. 24. 12:09

클래스 관계 클래스 간의 관계는 아래와 같습니다. 상속관계(is a): 클래스를 상속해서 하나의 클래스처럼 사용 연관관계(has a): 클래스를 상속하지 않고 내부적인 속성에 객체를 만들어서 사용 결합관계(약한 has a): 연관관계를 구성하는 방식 중에 클래스 간의 주종관계 없이 단순하게 사용하는 관계 조합관계(강한 has a): 연관관계를 구성하는 방식 중에 클래스 간의 주종관계가 있어서 분리할 수 없는 관계 의존관계(사용 has a): 필요한 클래스를 매개변수로 받아 필요한 시점에 사용하는 관계 상속관계 (is-a) open class Animal(val name: String) class Dog(name: String) : Animal(name) class Cat(name: String) : An..

article thumbnail
[Kotlin] 내장 자료형 - week 6
스터디/코틀린 언어 2023. 8. 16. 13:59

내장 자료형 코틀린에서 기본으로 제공하는 클래스를 내장 자료형이라고 합니다. Number(숫자) 클래스 아래는 코틀린에서 제공하는 숫자 클래스의 상위 클래스인 Number 클래스입니다. public abstract class Number { /** * Returns the value of this number as a [Double], which may involve rounding. */ public abstract fun toDouble(): Double /** * Returns the value of this number as a [Float], which may involve rounding. */ public abstract fun toFloat(): Float /** * Returns the ..

[Kotlin] 클래스 (2) - week 5
스터디/코틀린 언어 2023. 8. 8. 15:43

이 게시글은 아래의 게시글와 이어집니다. [Kotlin] 클래스 (1) - week 5 클래스(Class)란? 클래스는 객체지향에서 가장 중요한 도구입니다. 클래스는 유사한 특성과 동작을 가진 객체들을 만들기 위한 템플릿 역할을 합니다. 클래스는 객체의 속성(Attribute)과 메서드(meth everyday-develop-myself.tistory.com 특수한 기능을 수행하는 클래스 내포 클래스(Nested Class) 내포 클래스는 내부의 클래스가 외부의 클래스와 연결되지 않는 정적 클래스입니다. 외부 클래스의 멤버에 접근할 수 없다는 특징이 있습니다. class Outer { private val outerProperty: Int = 10 class Nested { fun nestedMethod..