본문 바로가기

Study/Kotlin

(23)
Kotlin / 파일 입출력과 스레드 처리 1. 파일 I/O 처리 파일 처리는 Input과 Output에 대한 데이터 처리 -> 데이터가 계속 처리되어 흐르는 것과 같아서 스트림(Stream)이라고 한다. 바이트나 텍스트 단위로 처리해서 사람이 인식할 수 있게 만들어야 한다. - 버퍼(Buffer) : I/O 처리의 성능을 향상하기 위해 중간에 저장공간을 두고 처리하는 방식 가장 기본으로 파일을 읽고 쓰는 기반 : InputSteram, OutputStream => 이를 기반으로 바이트 단위로 처리하도록 지원 : ByteArrayInputStream, ByteArrayOutputStream 바이트 스트림은 기본적으로 데이터를 읽고 쓰는 것이다. - read 메서드로 바이트 단위 읽기 (순환하면서 모든 바이트 읽음) - write 메서드로 한 바이..
Kotlin / 제네릭 알아보기 1. 제네릭 알아보기 제네릭은 타입 매개변수를 지정해서 임의로 작성하고 호출할 때 타입 인자를 전달해서 처리하는 방식이다. 1. 제네릭 처리 기준 자료형을 특정 문자로 지정 -> 타입 매개변수와 타입 인자로 사용 타입 매개변수(Type Parameter) : 클래스나 함수의 자료형을 임의의 문자로 지정해서 컴파일 타임에 자료형 점검을 할 때 사용 타입 인자(Type Argument) : 객체 생성, 함수 호출할 때 실제 자료형을 지정해서 정해진 임의의 타입을 실제 타입으로 변경 제네릭 구성 가능 여부 함수, 클래스, 추상 클래스, 인터페이스, 확장함수, 확장 속성 하나의 객체만 만드는 object 정의, 동반 객체, object 표현식은 제네릭을 구성할 수 없다. 타입 매개변수와 타입 인자를 지정하는 위..
Kotlin / 위임(delegation) 알아보기 모든 객체지향 프로그래밍 언어에서는 클래스 간의 상속관계를 기본 문법으로 제공한다. 코틀린 역시 위임관계를 문법으로 제공해서 다양한 클래스의 관계를 쉽게 처리할 수 있도록 지원한다. 1. 클래스 위임 알아보기 클래스 위임 : 특정 클래스에 자기 클래스가 할 일을 다른 클래스에게 맡겨 처리하는 것 코틀린에서 위임 관계를 by를 사용해서 쉽게 구성할 수 있다. 보통 하나의 클래스에는 하나의 책임을 부여해서 설계하는 방식을 사용한다. 위임은 2개의 클래스가 동일한 책임을 가지고 나눠서 처리한다. 좋은점 : 다양한 기능을 하나의 클래스를 통해서 받고 처리할 수 있도록 구조화할 수 있다. interface Base { // 인터페이스 정의 fun say() } class BaseImpl(val x: Int) : ..
Kotlin / 함수 추가사항 알아보기 1. 함수형 프로그래밍이란 순수함수와 일급 객체 함수 함수는 참조 투명성(지역변수만 사용)을 갖춰야 항상 동일한 입력에 동일한 결과를 반환하는 순수 함수를 만들 수 있다. 순수 함수(pure function)의 조건 동일한 인자로 실행하면 항상 동일한 값 반환 함수 내부에서 반환값 이외의 결과로 부수효과가 발생하지 않는다 부수효과(side effect) 함수가 실행되는 과정에서 함수 외부의 데이터를 사용 및 수정하거나 외부의 다른 기능을 사용하는 것을 말한다 함수가 전역변수를 사용하거나 수정하는 것 함수가 표준 입출력을 사용해서 키보드 입력과 화면 등에 출력 함수가 파일을 읽고 쓰는 작업을 수행 함수를 사용해서 데이터베이스에 연결 fun purefunc(a:Int, b:Int):Int{ return a+..
Kotlin / 추상클래스, 인터페이스 알아보기 1. 추상클래스 추상클래스는 abstract 예약어로 지정한 클래스이다. 직접 객체를 생성할 수 없고, 항상 다른 클래스에서 상속해서 추상 메서드를 구현해야 한다. abstract class Person { // 추상 클래스 정의 abstract val name: String // 추상 속성 정의 abstract fun displayName() // 추상 메서드 정의 } class Woman : Person() { // 구현 클래스 정의 override val name: String = "은정" // 추상 속성 오버라이딩 override fun displayName() { // 추상 메서드 오버라이딩 println("이름 : $name") } } val woman = Woman() woman.displa..
Kotlin / 컬렉션 알아보기 1. 리스트, 세트, 맵 알아보기 컬렉션의 가변과 불변 가변(mutable) : 보통 컬렉션 객체는 추가, 수정, 삭제를 할 수 있다 불변(immutable) : 컬렉션 객체 중에 한 번 만들어지면 추가, 수정, 삭제를 할 수 없다. 리스트 클래스 ArrayList : 고정 길이로 리스트를 만든다. listOf, mutableListOf로 객체 생성 LinkedList : 가변 길이로 리스트를 만든다. 각 원소가 가지는 주소를 별도로 보관. LinkedList 클래스로 리스트 객체 생성 val list1 = listOf(1,2,3) // 불변 리스트 객체 생성 val list2 = mutableListOf(1,2,3) // 가변 리스트 객체 만들기 list2.add(10) // 원소 추가 list2.re..
Kotlin / 클래스 관계 등 추가사항 알아보기 1. 클래스 연관관계 알아보기 클래스 관계 상속관계 (is a) : 클래스를 상속해서 하나의 클래스처럼 사용한다. 연관관계 (has a) : 클래스를 상속하지 않고 내부적인 속성에 객체를 만들어서 사용한다. 결합관계 (약한 has a) : 연관관계를 구성하는 방식 중에 클래스 간의 주종관계 없이 단순하게 사용하는 관계를 말한다. 조합관계 (강한 has a) : 연관관계를 구성하는 방식 중에 클래스 간의 주종관계가 있어서 따로 분해해서 사용할 수 없는 관계를 말한다. 의존관계 (사용 has a) : 필요한 클래스를 매개변수 등으로 받아 필요한 시점에 사용하는 관계를 말한다. 결합(Aggregation) 관계 단순하게 사용하는 클래스에서 사용된 클래스의 객체를 속성으로 만들어서 사용 보통 주 생성자에 객체를..
Kotlin / 내장 자료형 알아보기 1. 내장 자료형 알아보기 클래스를 만들 때는 항상 기본적인 최상위 클래스가 필요하다. 코틀린에서는 최상위 클래스로 Any 클래스를 제공한다. 이렇게 코틀린이 기본으로 제공하는 클래스를 내장 자료형이라고 한다. 숫자 클래스 코틀린에서 숫자클래스의 상위클래스를 Number로 정의했다. - NaN (not a number) 실수는 숫자를 정확히 모를 때는 무한대를 사용하고, 숫자가 아닌 경우에는 NaN을 사용한다. NaN은 계산도 비교도 안된다. 어떤 숫자와 계산해도 항상 NaN이다. (자기 자신과도 비교 x) // NaN과의 연산은 항상 NaN println(Double.NaN + 100.0) // NaN // NaN은 비교할 수 없다 println(Double.NaN == Double.NaN) // fa..

반응형