본문 바로가기

안드로이드/Kotlin13

[Kotlin] Enum class, Sealed class Enum class상수값의 타입 안전성을 보장하며, when 문에서 상수에 정의된 값에 대한 처리를 반드시 하도록 강제한다.상수 값에 대한 특정한 동작이 필요할 때 특정 상수값에 대한 동작을 빼먹는 것을 방지할 수 있다.각 상수는 단 하나의 인스턴스만 가질 수 있다. (싱글톤)상수의 속성값은 정의 후 변경할 수 없다.다른 클래스를 상속할 수 없고, 다른 클래스에게 상속받을 수도 없다. 그러나 interface 를 구현할 수 있다.상수와 연관된 변수를 상수에 저장할 수 있다.서브 클래스를 생성할 수 없다.private 생성자만 갖는다. BEFORE문제점 : state 의 종류가 늘어날 경우, 처리 로직을 빼먹거나 처리되지 말아야 할 상수값(Int)이 포함될 수 있습니다. 또한, Int 값이 상수값이므로 s.. 2024. 12. 10.
[Kotlin] 객체 선언(Object Declaration) , 동반 객체(Companion Object) 코틀린 클래스 안에는 정적인 멤버가 없다. 자바 static 키워드를 지원하지 않는다.그 대신 코틀린에서는 패키지 수준의 최상위 함수와 객체 선언을 활용한다.대부분의 경우 최상위 함수를 활용하는 편을 더 권장한다. 그러나 최상위 함수는 특정 클래스의 private 멤버에 접근할 수 없기 때문에, 클래스 내부에 정의된 static 멤버가 다른 클래스 멤버와 상호작용해야 하는 경우에는 적합하지 않다.static 을 최상위 함수로 대체할 수 없는 경우에는 object 를 고려한다. 객체 선언(Object Declaration) : 싱글톤클래스 선언과 그 클래스에 속한 단일 인스턴스의 생성을 동시에 처리해주기 때문에, 싱글톤에 사용하기 적합하다.클래스 전체가 하나의 싱글톤 객체로 선언되고, 처음 사용될 때까지 .. 2024. 12. 9.
[Kotlin] 범위 지정 함수(Scope function) Scope function객체의 이름을 사용하지 않고, 객체에 접근이 가능하게 하는 함수특정 객체에 대한 작업을 블록 안에 넣어 실행할 수 있도록 하는 함수 (feat. kotlinworld)FunctionObject referenceReturn valueIs extension functionletitLambda resultYesrunthisLambda resultYesrun-Lambda resultNo: called without the context objectwiththisLambda resultNo: takes the context object as an argumentapplythisObject referenceYesalsoitObject referenceYes it람다식 내부에서 사용되는 암시.. 2024. 12. 9.
[Kotlin] 타입 연산자(is, as), 널 처리 연산자 타입여러 종류의 데이터를 식별하는 분류로, 어떤 값이 가능한지와 그 타입에 대해 수행할 수 있는 연산의 종류를 결정한다. 타입 체크is와 !is 연산자를 사용하여 런타임에 객체가 주어진 타입인지 확인할 수 있다.스마트 캐스트(Smart Cast) : 컴파일러가 불변 값에 대해 is 검사를 추적하여 필요할 때 자동으로 (안전하게) 캐스팅을 수행하는 기능 타입 캐스팅as 연산자를 사용하여 데이터 타입을 다른 데이터 타입으로 변환할 수 있다.캐스팅은 주로 상속 관계에 있는 클래스들 간에 사용된다.상위 클래스의 객체를 하위 클래스 타입으로 변환하거나, 하위 클래스의 객체를 상위 클래스 타입으로 변환하는 데 활용된다. 업캐스팅하위 클래스의 인스턴스를 상위 클래스 타입으로 변환하는 것항상 안전하며, 명시적으로 캐스.. 2024. 12. 8.
[Kotlin] Kotlin 이란 Kotlin자바 플랫폼에서 돌아가는 새로운 프로그래밍 언어간결하고 실용적이며, 자바 코드와의 *상호운용성을 중시한다.상호운용성 : 하나의 시스템이 동일 또는 이기종의 다른 시스템과 아무런 제약이 없이 서로 호환되어 사용할 수 있는 성질목적 : 현재 자바가 사용되고 있는 모든 용도에 적합하면서도 더 간결하고 생산적이며 안전한 대체 언어를 제공하는 것자바와 마찬가지로 코틀린도 정적 타입 지정 언어다.널이 될 수 있는 타입을 지원함에 따라 *컴파일 시점에 널 포인터 예외(NullPointerException)가 발생할 수 있는지 여부를 검사할 수 있어서 좀 더 프로그램의 신뢰성을 높일 수 있다.컴파일 시점(Compile Time) : 사람이 읽을 수 있는 형태의 소스 코드를 컴퓨터가 읽을 수 있는 형태의 기계.. 2024. 12. 8.
[Kotlin] 객체 지향 프로그래밍(Object-Oriented Programming) 프로그래밍 방식1. 명령형 프로그래밍(Imperative Programming, IP)프로그래밍의 상태와 상태를 변경하는 구문의 관점에서 연산을 설명하는 방식무엇(What)을 ‘어떻게(How)’ 할 것인지에 집중한다.1-1. 절차지향 프로그래밍(Procedural Programming, PP) : 문제를 순차적으로 처리하여 프로그램을 만드는 방식 (C, C++)절차지향 프로그래밍은 함수를 구조화할 뿐 데이터 자체를 구조화하지 못하기 때문에, 소프트웨어의 규모가 커지거나 변화가 생기면 각각의 함수에 의존하는 부분을 매번 고쳐야 하는 등 작업이 복잡해져 스파게티 코드를 유지보수하는 데 어려움을 겪는다.1-2. 객체지향 프로그래밍(Object-Oriented Programming, OOP) : 객체들 간의 상.. 2024. 12. 8.
[Kotlin] 추상 클래스(abstract class), 인터페이스(interface) 추상 클래스(abstract class)클래스 : 구체적으로 데이터를 담아 인스턴스화하여 직접 다루는 클래스구체적이지 않은 추상적인 데이터를 담고 있는 클래스하위 클래스들의 공통점을 모아 추상화하여 만든 클래스자바에서는 extends 키워드를 사용해서 자신의 기능을 하위 클래스로 확장시키는 느낌을 준다.클래스 간의 연관 관계를 구축하는 것에 초점을 둔다. 하나 이상의 추상 메소드를 포함할 수 있는 클래스로, 일반 클래스와 같이 필드, 메서드, 생성자를 가질 수 있다.이러한 특징으로, 추상 클래스는 추상화(추상 메서드)를 하면서 중복되는 클래스 멤버들을 통합 및 확장할 수 있다.인스턴스를 생성할 수 없으며, 구현부를 만들어주는 클래스에 구현(상속) 되어야 한다.단일 상속만 허용한다.public 이외의 접근.. 2024. 12. 8.