반응형

코틀린 33

코틀린 16. 추상화

이번 글에서는 추상화에 대해서 알아보도록 하겠습니다. 추상화 저희는 지금까지 클래스라는 게 무엇인지, 그리고 클래스를 중심으로 한 여러 가지 개념에 대해 알아보았습니다. 추상화는 이 중에서 상속과 overriding에 관련된 개념이라고 할 수 있는데, 어떤 것일지 알아봅시다. 저번 글에서 알아본 overriding은 슈퍼클래스에 구현된 함수를 서브클래스에서 '재정의'한다는 개념이었습니다. 하지만 추상화는 슈퍼클래스에서는 함수의 선언만 한 뒤 구체적인 내용은 구현하지 않습니다. 다만, 해당 함수가 슈퍼클래스를 상속하는 모든 서브클래스에 필수적으로 존재해야 한다는 부분만 명시하고, 서브클래스 내에서 어떤 동작을 하는지에 따라 맞춰서 구현하도록 되어있습니다. 이러한 함수들을 '추상함수'라고 부르며, 추상함수를..

코틀린 15. 오버라이딩과 오버로딩

이번 글에서는 오버라이딩과 오버로딩에 대해서 알아보도록 하겠습니다. 오버라이딩(overriding) 먼저 오버라이딩(overriding)에 대해서 알아볼 텐데, 이 단어의 사전적 의미를 생각해봅시다. overriding의 뜻을 찾아보면 '재정의하다, 우선하다'라는 뜻을 가지고 있습니다. 그렇다면, 말 그대로 무언가를 재정의하거나 다른 것보다 우선한다는 의미일 것 같은데, 과연 무슨 뜻일까요? 프로그래밍 언어에서 overriding은 슈퍼클래스를 상속받은 서브클래스에서 슈퍼클래스에 정의되어있는 함수를 '재정의'하는 것을 의미합니다. 중요한 것은 overriding을 하려면 서브클래스에서 선언하려는 함수가 슈퍼클래스에 있는 함수와 이름과 형태가 동일해야 하며, 함수가 open되어있어야 한다는 점입니다. 여기..

코틀린 13. 생성자

이번 글에서는 클래스의 생성자에 대해서 알아보도록 하겠습니다. 생성자 저번 글에서 클래스의 기본적인 구조에 대해서 알아봤었습니다. 생성자는 클래스의 인스턴스를 생성할 때 호출하게 되는 특수한 함수를 말합니다. 따라서 클래스를 통해 객체를 생성할 때에 무조건 이 생성자를 호출하여 내부의 코드를 실행하게 되어있으며, 이를 통해 객체 생성 시 수행해야 하는 코드들을 이곳에 입력하게 됩니다. 예를 들어 baby라는 클래스를 만들어서 객체를 생성한다고 생각해봅시다. 이때 생성자를 사용해서 아기가 태어날 때 "응애"하며 우는 텍스트가 가장 먼저 출력되도록 할 수 있습니다. 그렇다면 생성자는 어떻게 사용하는 걸까요? 먼저, 클래스의 속성들만 초기화할 때에는 다음과 같이 사용할 수 있습니다. fun main() { v..

코틀린 12. 클래스

이번 글에서는 클래스에 대해서 알아보도록 하겠습니다. 클래스 클래스는 간단하게 말하면 어떠한 기능을 가진 '실체'를 만들기 위한 '설계도'라고 할 수 있습니다. 흔히들 붕어빵 틀을 많이 이야기하는데, 붕어빵 모양으로 만들어져있는 틀을 '클래스' 이를 사용해 만들어지는 실체인 붕어빵을 '객체'또는 '클래스의 인스턴스'라고 말합니다. 말로 설명하기보단 직접 클래스를 만들어가면서 클래스란 무엇인가에 대해 알아봅시다. class TV(){ var width = 100 var height = 100 var power = false var channel = 1 var volume = 0 } 위와 같이 TV를 만들기 위한 설계도인 TV클래스를 하나 만들어봅시다. 클래스는 기본적으로 속성(변수)와 함수(기능)을 가질 ..

코틀린 11. 입출력

오늘은 코틀린에서 사용하는 입출력 함수들에 대해서 알아보도록 하겠습니다. 입출력 입출력은 말 그대로 데이터를 입력하고, 출력하는 것을 말합니다. 우리가 프로그램 실행중에 변수등에 값을 넣는것을 입력, 변수나 데이터를 화면에 띄우는것을 출력이라고 할 수 있겠네요. 그렇다면, 이런 입출력을 도와주는 함수는 어떤것들이 있을까요? 일단, 대표적으로 우리가 알고 있는 함수는 print라는 함수가 있습니다. 데이터를 우리가 보는 화면에 직접적으로 출력시켜주는 함수인데, 이외에도 여러가지 함수에 대해 알아봅시다. 입력 자, 먼저 입력함수로는 기본적으로 readLine이라는 함수가 있습니다. readLine은 말 그대로 한 줄의 텍스트를 입력시키는 함수입니다. 해당 함수는 REPL환경에선 제대로 작동하지 않아서 IDE..

코틀린 10. 흐름제어

이번 글에서는 코틀린의 흐름제어에 대해서 알아보도록 하겠습니다. 흐름제어 코틀린에서 흐름제어가 가능하도록 해주는 키워드는 return, continue, break이 있습니다. return에 대해서는 함수를 설명할 때 이야기했었는데요. 함수 내에서 return을 만나면 프로그램은 뒤에 더 실행할 코드가 있든 없든 즉시 함수를 종료시킵니다. 그리고 return을 제외한 두 가지(continue, break)은 사실 반복문 내에서만 사용됩니다. 즉, 반복문의 흐름을 제어한다는 뜻이죠. 그럼 두 흐름제어문이 각각 어떤 역할을 하는지 알아봅시다. continue 먼저 continue입니다. continue에 대해 알아보기 전에 continue의 사전적 의미에 대해 생각해보고 어떤 역할을 하는지 한 번 생각해봅시..

코틀린 9. 반복문

이번 글에서는 코틀린에서 사용하는 반복문에 대해서 알아보도록 하겠습니다. 반복문 반복문은 조건문과 마찬가지로 프로그래밍에서 빼놓으면 안 되는 기본 문법 중 하나입니다. 반복문이란 말 그대로 어떠한 작업을 반복해서 수행하는 것을 이야기합니다. 예를 들어 여러분이 1~5까지 더하는 코드를 작성한다고 생각해봅시다. fun main() { var a = 0 a = 1 + 2 + 3 + 4 + 5 } 이 정도야 이런 간단한 코드만으로 쉽게 해결할 수 있을것입니다. 하지만, 1~5까지가 아닌 1~10000을 더해야 한다면 어떡할까요? 또는 단순한 덧셈이 아닌 복잡한 작업을 반복해야 한다면 어떡할까요? 이런 때 모든 코드를 일일이 써야 한다면 매우 지루하고 비효율적인 작업이 되어 능률이 현저히 떨어지겠죠. 때문에 사..

코틀린 8. 조건문

이번 글에서는 코틀린의 조건문에 대해서 알아보도록 하겠습니다. 조건문 조건문이란 특정한 조건에 따라서 프로그램의 흐름을 제어하는 문법입니다. 예를 들어 도어락을 생각해봅시다. 이 도어락은 출입자가 맞는 비밀번호를 입력하면 문을 열고, 틀린 번호를 입력하면 문을 열지 않습니다. 여기서 출입자가 입력한 비밀번호가 맞는 비밀번호인가? 가 조건이 되는 것이고, 참일 때 행하는 것이 문을 연다. 거짓일 때 행하는 것이 문을 열지 않는다.이며 이 전체를 조건문이라고 하는 것입니다. 이렇게 간단한 예를 듣기만 해도 프로그래밍에서 조건문이 얼마나 중요한 역할을 하는지 바로 와 닿지 않나요? 조건문이 없다면 도어락이라는 기계 자체를 설계할 수가 없을 테니 말이죠. 그렇다면 이제 조건문이 무엇인지 알았으니 코틀린에서 사용..

코틀린 7. Nullable변수

이번 글에서는 Nullable변수에 대해서 알아보도록 하겠습니다. Nullable 코틀린의 장점을 몇 가지 나열했을 때, null에 대한 안전성을 가진다고 말했던 적이 있습니다. 이에 대해 말해보려고 하는데, 예를 들어 아래와 같은 코드가 있다고 생각해봅시다. fun main() { var a:Int } 보통 이렇게 변수를 선언함과 동시에 초기화하지 않으면 대부분의 프로그래밍 언어의 경우 Int형의 기본값인 0이나 null로 변수가 자동적으로 초기화됩니다. 하지만 코틀린에서는 이렇게 변수가 처음에 null로 초기화되는 것을 기본적으로 금지하고 있습니다. 때문에 위의 코드의 경우 a를 출력시키려고 하면 반드시 a를 초기화해야 한다고 오류 메시지가 출력될 것입니다. 이렇게 변수 선언 시 null값이 들어가는..

코틀린 6. 함수

이번 글에서는 함수에 대해서 알아보도록 하겠습니다. 함수 함수란 무엇일까요? 함수는 영어로 function이라고 하는데, 어떠한 정해진 작업을 수행하기 위해서 만들어진 코드들의 집합, 즉 프로그램 내의 작은 프로그램 이라고도 말할 수 있습니다. 사실 우리들은 지금까지도 계속해서 함수들을 사용해왔습니다. 우리가 출력할 때 사용한 println, 형변환시 사용한 toXXXX등이 모두 함수에 속합니다. 이렇게 코틀린에서 기본적으로 사용할 수 있도록 만들어져 있는 함수들을 '라이브러리 함수'라고 부릅니다. 함수를 왜 써야하는가? 그렇다면 이런 함수는 왜 사용할까요? 예를 들어 여러분이 어떠한 계산을 수행해야 한다고 생각해봅시다. 여기서는 간단하게 두 수를 곱한 뒤, 이 값을 다른 수로 나누고, 그 결과를 다시 ..

반응형