컴퓨터 언어/코틀린 26

[Kotlin] 코틀린 다형성의 개념과 사용방법 is, as 연산자

안녕하세요. 훈츠 입니다. 오늘은 다형성의 개념과 Downcasting 할때 사용되는 is와 as 연산자에 대해 알아보도록 하겠습니다. 다형성 (Polymorphism) 클래스를 상속하다보면 하위 클래스에서 상위 클래스와 똑같은 이름의 프로퍼티나 메서드를 지정 할일이 생깁니다. 하위 클래스에서 이름은 같지만 호출 매개변수가 다르거나 전혀 다른 동작의 메서드를 정의할 필요가 있습니다. 이렇게 이름은 같지만 매개변수가 다르거나 다른 동작을 하도록 하는것을 다형성(Polymorphism) 이라고 합니다. 다형성에 대해 클래스로 예를 들어 보겠습니다. Class Animal : super class Class Tiger : sub class (eat 함수를 override 하고, tiger 클래스만의 shout..

[Kotlin] 코틀린 옵저버 패턴 리스너

안녕하세요. 훈츠 입니다. 오늘은 코틀린에서 광범위하게 사용되는 옵저버 패턴을 구현 하는 방법에 대해 설명 드리겠습니다. 옵저버 패턴을 구현하는 방법은 두가지 입니다. 한가지는 인터페이스를 상속하는 방법과, 두번째는 익명 함수를 통해서 익명 클래스를 구현하는 방법입니다. 옵저버 패턴 키의 입력, 터치의 발생 같은 시스템 또는 루틴에 의해 발생되는 동작들을 이벤트라고 부릅니다. 이벤트가 발생 했을때 상호 작용 할수있는 패턴을 옵저버 패턴이라고 합니다. 코틀린에서는 리스너라고 부르기도 합니다. 옵저버 패턴을 구현하는 방법 [class A - - class B ] 인터페이스 구현 두개의 클래스 class A, class B class A : 인터페이스를 속성값으로 받는 펑션 클래스 class B : 인터페이스..

[Kotlin] 코틀린 오브젝트 싱글톤 패턴 object

안녕하세요. 훈츠 입니다. 오늘은 오브젝트 object 에 대해 이야기 해 보겠습니다. 여러 인스턴스를 생성할 필요 없이 하나의 객체만으로 공통적인 속성과 함수를 사용해야 할때는 class 가 아닌 object로 선언하여 사용 할수 있습니다. 오브젝트 Object 클래스 대신 object 라는 키워드를 사용합니다. 생성자는 허용하지 않습니다. 싱글톤 패턴 : Singleton Pattern 싱글톤 패턴 : 클래스의 인스턴스를 단하나만 만들어 사용하도록 하는 코딩 아키텍쳐 패턴 object Calculator{ fun add(a:Int,b:Int) = a + b fun sub(a:Int,b:Int) = a - b fun multiply(a:Int,b:Int) = a * b fun divide(a:Int,b..

[Kotlin] 코틀린 스코프 함수 [apply, also, run, let,]

안녕하세요. 훈츠 입니다. 오늘은 스코프 함수에 대해 이야기 해 보겠습니다. 코틀린에서 함수형 언어의 특징을 좀더 쉽게 사용할수 있도록 제공 하는것입니다. 스코프 함수 .{ 변수 혹은 함수 } (apply 참조연산자 없이 사용/ also "it"을 이용) 처리가 끝나면 인스턴스를 반환 합니다. (run 참조연산자 없이 사용 / let "it"을 이용) 처리가 끝나면 최종값을 반환 합니다. with(a){...} run과 완전 동일하며 함수 사용하는 형식 만 다릅니다. 함수형 언어의 특징을 좀더 쉽게 사용하도록 제공 합니다. 인스턴스의 속성이나 함수를 좀더 깔끔하게 사용 가능합니다. apply / also 처리가 끝나면 인스턴스를 반환, apply 는 참조연산자 없이 also 는 it 연산자 사용 clas..

[Kotlin] 코틀린 고차 함수와 람다 함수

안녕하세요. 훈츠 입니다. 오늘은 고차 함수와 람다 함수에 대해 이야기 해 보겠습니다. 고차 함수 함수를 마치 클래스에서 만들어낸 인스턴스 처럼 취급 하는 방법 입니다. 코틀린에서는 모든 함수를 고차함수로 사용 가능 하여, 함수를 파라메터로 넘겨 줄수도 있고, 결과값으로 반환 받을 수도 있습니다. fun main() { b(::a) //고차함수 출력할때 사용 } fun a(string: String){ println("$string 함수 a") } //고차함수 예시 fun b(fc : (String) -> Unit){ //fun b(function : (자료형) -> 반환형 fc("b 가 호출한") } //출력 b 가 호출한 함수 a 함수의 형식(자료형, 자료형...) -> 함수의 반환형 //반환형이 없..

[Kotlin] 코틀린 변수 함수 클래스의 스코프 접근 제한자

안녕하세요. 훈츠 입니다. 오늘은 클래스의 스코프 접근 제한자에 대해 알아 보겠습니다. 스코프 : 범위 같은 스코프내에 동일 변수가 있으면 같은 스코프 변수를 사용 합니다. 하나의 패키지에서 다른 패키지 사용할때 동일 스코프 내에서는 공유 할수 있습니다. 같은 스코프에서 같은 멤버이름을 허용 하지 않습니다. var a = "패키지" fun main() { println(a) var a = "사람" println(a) show() } fun show(){ var a = "인간" println(a) } //출력 화면 패키지 사람 인간 접근 제한자 패키지 스코프 public : 기본값 internal : 같은 모듈 내에서만 접근 가능 private : 같은 파일 내에서만 접근 가능 클래스 스코프 public ..

[Kotlin] 코틀린 클래스 2 상속 & 기능 확장

안녕하세요. 훈츠 입니다. 오늘은 코틀린 클래스 1편에 이어 2편을 이어갈 예정인데요. 아직 클래스에 대해 감이 없으신분들은 다음 글을 한번 읽어보시는게 도움이 될것 같습니다. 이번 시간에는 코틀린에서 어떻게 상속 가능하게 만들고 상속할수 있는지 설명 드리겠습니다. https://rain2002kr.tistory.com/72 [Kotlin] 코틀린 클래스 1 안녕하세요. 훈츠 입니다. 이번 시간에는 객체 지향에서 이야기 하는 클래스에 대해 이야기 해보려고 합니다. 사실 코틀린은 객체 지향 언어 + 함수형 언어의 장점을 흡수한 언어 입니다. 그럼 코틀린에서는 어떤.. rain2002kr.tistory.com 상속 (inheritance) 상속이 필요한 경우와 상속에 관한 내용을 정리 해보자면 다음과 같습니..

[Kotlin] 코틀린 클래스 1

안녕하세요. 훈츠 입니다. 이번 시간에는 객체 지향에서 이야기 하는 클래스에 대해 이야기 해보려고 합니다. 사실 코틀린은 객체 지향 언어 + 함수형 언어의 장점을 흡수한 언어 입니다. 그럼 코틀린에서는 어떤 부분이 다른지 한번 들어가 보시죠. 클래스 구성 속성 : 고유의 값 함수 : 기능 구현 클래스란 값과 함수의 묶음 입니다. 코틀린 클래스 종류 class : 아무 것도 붙이지 않으면 일반 class data class : 앞에 data 를 선언하면 data class가 됩니다. 데이터 클래스의 생성자는 1개 이상의 속성 값을 가져야 합니다. 데이터 클래스의 속성을 선언 할때는 var 또는 val으로 선언 해야합니다. 데이터 클래스는 abstract, open, sealed, inner 를 붙일수 없습..

[Kotlin] 코틀린 코드 흐름제어 및 논리 연산자

안녕하세요. 훈츠 입니다. 오늘은 코드 흐름제어를 위한 키워드 및 논리 연산자에 대해 설명 드리겠습니다. 금일 설명 드릴 항목 입니다. RETURN : 함수를 종료하고 값을 반환 하는 역활을 합니다. BREAK : 주로 반복문 안에서 break 조건문이 참일 경우, 그 즉시 반복문을 종료 합니다. CONTINUE : 주로 반복문 안에서 contiune 조건문이 참일 경우, 그 조건을 건너띄고 다음 조건문을 실행합니다. loop@for lable : 다중 반복문 안에서 @loop@ for lable 조건문이 참일 경우, 그 즉시 반복문을 종료 합니다. 논리 연산자 &&, ||, ! BREAK 와 CONTINUE //BRAEK 문 for (i 1..10) { if(i == 3) break //2까지 찍히고 ..

[Kotiln] 코틀린 반복문과 증감 연산자

안녕하세요. 훈츠 입니다. 오늘은 프로그래밍 할때 아주 많이 사용되는 반복문에 대해 이야기 해보겠습니다. 반복문은 최신 언어들이 제공하는 기능들을 제공하고 있어 조금더 사람이 이해하기 쉽게 되어 있는것 같습니다. 반복문의 종류 조건형 반복문 : while , do whild 범위형 반복문 : for While 문 var a = 0 while(a < 5){ print (a++) //전위 연산자 : 연산후 값 체크 } 출력내용 //0,1,2,3,4 while(a < 5){ print (++a) //후위 연산자 :다음구문에서 사용 } 출력내용 //1,2,3,4,5 a++ 전위 연산자 : 연산후 값 체크, ++a 후위 연산자 :다음구문에서 사용 Do while 문 do{ println (a++) }while (..