본문 바로가기

공부 자료/코틀린[Kotlin]

(43)
[Atomic 30] Extension function (feat. 확장 함수) 라이브러리에 멤버 함수를 추가하고 싶다면? 우리에게 거의 완벽한 라이브러리가 있다면? 이 라이브러리를 활용하는 것이 좋을 것이다. 하지만, 이 라이브러리의 주인이 아니기 때문에 소스 코드에 접근하거나 변경 및 제어가 불가능하다. 또한, 수정한 내용을 새로운 버전이 나올때마다 반복 적용하는 것도 힘들기 때문에 우리는 코틀린에서 확장 함수에 대해서 학습해야 한다. [ Extenstion funciton; 확장 함수 ] 확장 함수 : 기존 클래스에 멤버 함수를 추가하는 것과 같은 효과 : static 메서드로 오버라이드 불가능 : fun 수신객체타입.확장함수명():반환타임 {...} 으로 정의 : 클래스의 멤버 함수와 동일한 이름일 경우 우선순위에서 밀려남 : this는 멤버 함수나 다른 확장에 접근이 가능하..
[Atomic 28] 프로퍼티 접근자(feat. getter / setter) 프로퍼티 이름을 사용해 프로퍼티 읽고 쓰기 오늘은 프로퍼티 접근자를 작성해서 프로퍼티를 읽고 쓰는 연산을 커스텀화 하는 학습에 대한 아톰이다. [ 게터(getter) / 세터(setter) ] 게터(getter) : 프로퍼티 값을 얻기 위해 사용하는 접근자 : 프로퍼티 정의 다음에 get() 정의 시 게터 정의 : get() 정의 시 연결된 프로퍼티 보다 안쪽으로 들여씀 : field 이름을 사용해 저장된 값에 직접 접근 가능 세터(setter) : 가변 프로퍼티를 갱신하기 위해 사용하는 접근자 : 프로퍼티 정의 다음에 set() 정의 시 세터 정의 : set() 정의 시 연결된 프로퍼티 보다 안쪽으로 들여씀 : field 이름을 사용해 저장된 값에 직접 접근 가능 import atomictest.* c..
[Atomic 27] 맵 (feat. Map) key(키)와 value(값)을 연결하는 Map 오늘의 아톰은 컬렉션의 마지막으로 예상되는 Map에 대한 아톰이다. 해당 아톰 내용은 자바와 어떻게 다른지, 어떤 함수들이 존재하는지 알아보자! [ Map ] map : 키-값 쌍을 mapOf()를 통해 Map 생성 : 키-값을 연결시켜주기에 연관 배열이라고 불림 : DB에 비해 기능이 제한적이나 DB에 비해 효율적 : 키와 값을 분리할 때에는 to를 사용해 key to value로 사용 : [] 연산자는 키를 사용해 값을 검색할 때 사용 (검색되는 것이 없다면 null 반환) : 원소가 Map에 전달된 순서를 유지해주며 (mapOf()/mutableMapOf()) 다른 Map 타입에서는 순서가 보장되지 않을 수 있음 : 이터레이션을 수행하면 맵 항목으로 ..
[Atomic 26] 집합 (feat. Set) 각각의 값이 오직 하나만 존재하는 컬렉션, Set 집합은 수학에서 배웠던 내용을 거의 그대로 생각하면 되기 때문에 이해가 어려운 아톰은 아니다. 이전 컬렉션들과 어떻게 다르고 어떻게 쓰이는지 알아볼 예정이다. [ 집합, Set ] Set : in, contains()를 이용해 원소 검사가 가능 : 중복이 없음 (즉, 동일한 원소가 있으면 하나의 원소로 취급됨) : 원소의 순서는 중요하지 않음 : 집합간의 포함여부도 containsAll()을 통해 확인 가능 : union(합집합), intersect(교집합), 차집합(subtract, -)은 점 표기법 / 중위 표기법을 사용해 연산이 가능함 : toSet()을 통해 List에서의 중복 제거(distinct()도 가능), 문자열에 대한 문자들의 집합을 얻을..
[Atomic 25] 가변 인자 목록 길이가 변할 수 있는 가변 인자 목록, varag 가변 인자 목록인 varag 키워드는 어떤 것이고, 어떻게 사용되는지 알아볼 수 있는 아톰이다. 지난 아톰인 리스트와의 차이가 헷갈릴 수 있기 때문에 차이점이 존재한다는 것을 알고 학습해 볼 예정이다, [ 가변 인자 목록, varag ] varag : 가변 인자 목록인 variable argument list의 줄임말 : 함수나 메서드에 가변 개수의 인자(임의의 길이로 인자)를 전달할 수 있도록 하는 코틀린의 기능 : 모든 인자는 지정한 타입에 속해야 함 : varag를 통해 함수 호출 시 전달하는 인자의 개수를 동적으로 조절 가능 : 함수 정의 시 varag로 선언된 인자는 최대 하나만 존재해야 하며, 파라미터 이름을 통해 varag 인자에 접근 가능(..
[Atomic 24] 리스트 (feat. List / MutableList) 다른 객체를 담는 객체 컨테이너, List 이번 학습은 리스트에 대한 아톰이다. 자바에서는 리스트 보다는 배열은 우선으로 하여 배웠는데, 코틀린에서는 리스트를 먼저 배운다. 기본적인 컨테이너가 필요할 때 List를 사용한다고 하는데 오늘은 코틀린에서 List는 어떻게 쓰이는지 학습할 예정이다. * 컨테이너 : Spring에서 말했던 컨테이너와는 다른 개념으로 데이터를 담거나 관리하는 객체를 말함 [ List ] List : 표준 코틀린 패키지에 포함되어 있는 것으로 import하지 않아도 사용 가능 : 표준 라이브러리 함수 listOf(), mutableListOf()가 존재 : 자기 자신을 표시할 때 각괄호([])를 사용 : 각 괄호는 인덱스를 사용해 List의 원소를 읽으며, 인덱스는 0부터 시작 (..
[Atomic 23] 예외 (feat. 예외의 기초) I take exception to that(나는 그에 대해 반대한다)의 exception인 예외 상황 예외 발생은 코드가 실행되면서 문제가 발생할 경우 현재 함수나 현재 영역의 진행을 막게 되는데, 우리는 이에 대한 처리와 조치를 취할 수 있어야 한다. 오늘은 이러한 처리와 조치를 알기 전 예외란 무엇인지 알아보고자 한다. [ 예외 상황 ] Exception : 예외가 던져지면(throw 예외명(예외 처리)) 실행 경로가 중단되고, 예외 객체는 현재 문맥을 벗어남 : 프로그래머스가 실수한 코드를 수정해야 한다는 예외에 대한 정보를 표시 : 예외를 잡아내지 않을 경우, 프로그램이 중단되며 스택 트레이스가 출력 : 문제를 처리하기에 충분한 정보가 맥락에 존재하는 일반적인 문제와 구분해야 함 * 스택 트레이..
[Atomic 22] 테스트 프로그램을 빠르게 개발하기 위한 필수 '지속적인 테스트' 우리는 코드를 짰을 때 이 코드를 내가 의도한 대로 잘 짰는지, 내부적으로 실행되었을 때 잘못된 곳은 없는지 확인하는 과정이 필요하다. 우리는 이를 위해 println을 사용하여 올바름을 검증하는 것은 부실한 접근 방법이기에 테스트를 배운다. [ 테스트 ] 테스트 - JUnit : 자바에서 널리 쓰이는 테스트 프레임워크로 코틀린에서도 유용하게 사용 - 코테스트 : 코틀린 전용으로 설계되어 코틀린 언어의 여러 기능을 살려 작성 - 스펙 프레임워크 : 명세 테스트라는 다른 형태의 테스트 제공 * 아래에서 사용하는 테스트의 경우 Atomic Kotlin 책에서 제공하는 테스트 프레임워크로 아래와 같은 특징을 가지고 있음을 참고 - 식의 예상 결과값을 보..