728x90
반응형

전체 글 83

(코틀린) 클래스 계층 이해하기

클래스 상속 개념을 이해하고 하위 클래스를 정의하는 방법을 터득하며 abstract class, interface, 클래스 위임을 통해 복잡한 클래스 계층 구조를 설계하는 방법에 대해서 알아봅니다. 그리고 강력한 스마트 캐스팅을 사용할 수 있는 타입 검사를 가능하게 해주는 대수적 데이터 타입(Alegebraic Data Type, ADT)인 Sealed class에 대해서도 알아봅니다. 상속 객체지향 언어에서 상속은 도메인 개념에 있는 is-a 관계를 표현합니다. is-a는 사람은 동물이고, 자동차는 이동수단과 같은 개념을 의미합니다. 여기서 동물과 이동수단은 상위 클래스(superclass), 기반클래스(base class)라고 부르며 사람과 자동차는 하위 클래스(subclass), 파생클래스(deri..

개발/코틀린 2022.11.06

(코틀린) 컬렉션

컬렉션 요소들을 저장하기 위해 설계된 클래스 입니다. kotlin 표준 라이브러리는 다양한 컬렉션 라이브러리와 컬렉션 안에 데이터를 조작하기 위한 종합적인 api를 제공합니다. 컬렉션을 조작하는 모든 연산이 inline function이라서 함수 호출마다 부가 비용이 들지 않습니다. 컬렉션 타입 컬렉션 타입은 array, iterable, sequence, map으로 4가지로 분류 됩니다. 이터러블 이터러블은 즉시 계산되는 상태가 있는 컬렉션을 표현합니다. 실제로 값을 저장하고 있는 컬렉션 입니다. 원소를 순회할 수 있는 iterator()라는 메소드를 제공하고 for를 이용해서 순회할 수 있습니다. fun main() { val list = listOf("red", "yellow", "green") f..

개발/코틀린 2022.10.30

(코틀린) 특별한 클래스 사용하기

enum class 미리 정의된 상수들로 이뤄진 제한된 집합을 표현하는 클래스 입니다. 보통 enum은 대문자로 정의 합니다. enum class Weekday { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY } fun Weekday.isWorkday() = this in listOf( Weekday.MONDAY, Weekday.TUESDAY, Weekday.WEDNESDAY, Weekday.THURSDAY, ) fun main() { println(Weekday.MONDAY.isWorkday()) // true println(Weekday.SUNDAY.isWorkday()) // false } 빠뜨린 부분이 없는 when 식 when ..

개발/코틀린 2022.10.23

(코틀린) 함수형 프로그래밍

코틀린을 활용한 함수형 프로그래밍 함수형 프로그래밍은 프로그램 코드를 불변 값을 변환하는 함수의 합성으로 구성할 수 있는 아이디어를 바탕으로 합니다. 함수형 언어는 함수를 일급 객체(first class citizen)으로 취급해서 함수를 일반적인 값처럼 취급합니다. 이렇게 때문에 함수를 변수가 대입하거나 함수의 파라미터나 리턴 값으로 전달 할 수 있습니다. 고차 함수 배열 생성자는 람다를 받아서 배열을 생성함과 동시에 초기화를 할 수 있습니다. val squares = IntArray(5) { n -> n * n } // 0, 1, 4, 9, 16 기존에는 함수 내부 구현을 변경하기가 어려웠다면 고차 함수를 사용하면 실제 동작하는 부분만 외부에서 고차함수로 받아서 처리 할 수 있습니다. fun sum(..

개발/코틀린 2022.10.10

(코틀린) 클래스

클래스 정의하기 클래스 내부 구조 코틀린에서 클래스는 class 키워드와 클래스이름으로 정의합니다. 클래스는 내부에서 변수와 함수를 가질 수 있습니다. class Person { var firstName: String = "" var familyName: String = "" var age: Int = 0 fun fullName() = "$firstName $familyName" fun showMe() { println("${fullName()}: $age") } } Person 클래스이고 firstName, familyName, age라는 프로퍼티가 있고 fullName()과 showMe()라는 함수가 있습니다. 클래스 내부에서 본인 자체에 접근할 때는 this라는 키워드를 사용하고 이를 수신객체라고 ..

개발/코틀린 2022.10.03

(코틀린) 예외처리

코드가 동작하는 중간에 Exception이 발생해서 프로그램이 강제종료 되는 케이스가 발생합니다. 이런 경우 예외처리(Exception Handling)을 통해서 강제종료 되지 않고 에러를 처리 할 수 있도록 합니다. 예외 던지기 예외를 던지기 위해서는 throw 키워드를 사용합니다. fun parseIntNumber(s: String): Int { var num = 0 if (s.length !in 1..31) { throw NumberFormatException("Not a number: $s") } for (c in s) { if (c !in '0'..'1') { throw NumberFormatException("Not a number: $s") } num = num * 2 + (c - '0') ..

개발/코틀린 2022.09.25

(코틀린) 조건문, 반복문

조건문 조건 값에 따라 동작을 수행하지 않을 수도 있고 여러 가지 동작중 하나의 동작을 수행할 수 있습니다. if if를 사용하면 Boolean 값에 따라서 동작을 다르게 수행할 수 있습니다. // if를 사용해서 조건에 따른 값을 다르게 전달할 수 있습니다. fun max(a: Int, b: Int): Int { return if (a > b) a else b } {}를 사용해서 여러 줄의 동작을 수행할 수 있습니다. // 반환값이 있는 if는 else가 필수로 구현되어야 합니다. fun max(a: Int, b: Int): Int { return if (a > b) { println("최대값은 a") a } else { println("최대값은 b") b } } 반환 값이 없는 형태의 if문을 작성할..

개발/코틀린 2022.09.25

(코틀린) 함수

함수 파라미터를 받아서 어떤 값을 반환하는 형태를 함수라고 이야기합니다. 파라미터가 없을 수도 있고 반환 값이 없을 수도 있습니다. 함수의 구조 함수는 fun 키워드를 사용해서 정의합니다. fun functionName(param1: Int, param2: String, param3: Boolean): String { return """ 이 함수의 이름은 \`functionName\`이고 함수의 파라미터는 param1은 Int타입이고 값은 $param1, param2은 String타입이고 값은 $param2, param3은 Boolean타입이고 값은 $param3 입니다. """.trimIndent() } fun noParamNoReturnValue() { // 파라미터와 반환값이 없는 함수도 만들 수 ..

개발/코틀린 2022.09.24

(코틀린) 코틀린 기초

기본 문법 주석 코틀린에서는 3가지 형태의 주석이 있습니다. 1줄 주석: // 여러줄 주석: /* */ KDoc 주석: /** */ // 1줄 주석 /* 여러줄 주석 */ /** KDoc 주석 */ KDoc은 Rich Text Documentation을 생성하기 위해 사용합니다. 변수 코틀린에서 변수는 아래와 같이 정의합니다. val name: String = "정석준" // String 타입의 name 변수에 "정석준" 문자열 할당 val name = "정석준" // 초기값이 있다면 타입 선언은 생략 가능 val name: String // 초기값이 없다면 에러 발생 val name = "정석준" // 불변변수 name = "dino" // val은 수정 할 수 없어서 에러 발생 var name = "..

개발/코틀린 2022.09.18

코틀린 기초 스터디

👩🏻‍💻👨🏻‍💻 멤버 정석준 김도연 박규동 이경준 김성훈 이창형 📚 책 코틀린 완벽 가이드 2장 ~ 14장 (총 13장) 👊 목표 Kotlin 심화로 넘어가기 전에 기초를 다지기 ⏰ 시간 매주 일요일 저녁 10시 OT - 2022.09.12(월) 2022.09.18 ~ 2022.12.11 📍 장소 구글밋 진행 🎸 기타 스터디 준비는 각자 편한 형태로 준비해주세요. ex) 블로그, ppt, github 등등 과반수 이상 미출석 시 스터디 진행 하지 않아요. ✍🏻 스터디 결과물 정석준 2주: https://dino-dev.tistory.com/5 3주 https://dino-dev.tistory.com/6 https://dino-dev.tistory.com/7 https://dino-dev.tistory.c..

개발/스터디 2022.09.12
728x90
반응형