kotlin #코틀린 21

Kotlin : Setter 와 Getter

먼저, 몇가지 알아둬야할 것들을 적어보자면, * Kotlin에서는 자바와 달리 변수를 만들면 자동적으로 getter와 setter가 내부적으로 생성이 된다. * 불변변수인 val 의 경우 (그 값이 변경되서는 안되니) getter만 내부적으로 생성이 된다. 자, 그럼 만들었던 Glass 클래스 코드를 다시 보자. class Glass(var content: Int, val capacity: Int) content 의 특정상 가변변수(var)로 쓰여있는데 이 경우, 마음대로 그 값을 변경해도 허용이 되는 일이 일어나게 된다. fun main(){ val glass1 = Glass(90,150) glass1.content = 250 glass1.content = -180 } 이런식으로 마이너스값까지 아무 제..

언어/Kotlin 2022.10.12

Kotlin : ArrayList (배열 + 리스트)

ArrayList 는 이름 그대로 Array 와 List의 콤비네이션으로 생각하면 된다. (내부가 배열/Array 의 형태인 리스트라고 보면 된다.) 간단하게 Array와 List에 대해 표현하자면, Array : 같은 자료형을 지진 값들의 집합 List : 순서가 있는 것들의 집합 (Sequence) | 자료형이 다른 값도 넣을 수가 있다. 지난번에 Glass 클래스를 만들어 인스턴스를 생성해 보았는데, 이번에는 한두개 잔이 아닌 잔들의 모임(?)을 위해 ArrayList를 간단하게 활용해 볼 것이다. 위 그림같은 느낌으로 생각하면 된다. Array 처럼 초기화와 같이 그 크기가 결정되지 않기 때문에 크기가 자유롭다. 그래서 array의 경우 불가능하지만 ArrayList는 add 함수 사용이 가능하다..

언어/Kotlin 2022.09.07

Kotlin : 클래스 (Class)

1. 클래스 Class var currentGlass1Content = 40 val glass1Capacity = 150 var currentGlass2Content = 90 val glass2Capacity = 200 지금까지 잔의 필요한 데이터들을 변수에 저장해 왔다. (참고: https://bruders.tistory.com/19)변수 currentGlass1Content 와 glass1Capacity는 첫번째 잔에 속해있으며 curentGlass2Content와 glass2Capacity는 두번째 잔에 속해있는 변수들이다. 이런 하나의 범주에 속해있는 값들을 별도의 데이터 유형으로 정의하는 것이 더 현명할 것이다. 이는 클래스를 통해 해결이 가능하다. 코틀린의 Class는 해당 클래스의 객체에 대..

언어/Kotlin 2022.09.02

Kotlin : 객체 (Object)

코틀린은 자바처럼 객체 지향 언어이다. 그럼, 당연히 우리는 이 '객체'가 무엇인지 알아야 할 필요가 있다. 보통 우리가 보거나 만질 수 있는, 실세계의 존재하는 것들을 객체라 한다. 예로 책상, 의자, 컵, 연필 등의 흔히 보이는 물건들. 따라서 객체 지향 프로그래밍은 우리가 매일 인지하고 있는 것들과 가깝다고 보면 된다. 실세계에는 객체가 존재한다. (예: 컵) 이러한 객체는 속성을 가지고 있다. (예: 재질, 색상, 내용물, 크기) 객체에는 다양한 상태가 있다. (예: 컵이 차있다, 비어있다, 가득 차있다, 들어있는 음료가 뜨겁다, 차갑다) 객체는 서로 연관되어 있다. (예: 음료(객체)가 컵(객체)에 들어있다. 사람(객체)이 컵(객체)으로 음료(객체)를 마신다.) 객체 사이에는 상호작용이 있다. ..

언어/Kotlin 2022.06.24

Kotlin : 제어문 if 와 when

1. If 저번에 쓰여진 코드를 다시 보자. var currentBottleContent = 600 var currentGlassContent = 50 val maxGlassContent = 130 val toBeFilled = maxGlassContent - currentGlassContent //채워져야 할 양 currentGlassContent += toBeFilled currentBottleContent -= toBeFilled 여기서 눈치챘겠지만 이 코드엔 문제가 있다. 코드를 보면 무조건 잔은 채워지고, 그 채워진 만큼 병 속의 물의 양이 줄어드는데, 만일 병에 있던 물의 양이 그 채워져야 할 양보다 적다면, 성립할 수가 없게 된다. 병에 있던 물의 양이 50ml 였다면.. 결과는 다음과 같을..

언어/Kotlin 2022.06.17

Kotlin : 변수 var 과 val

1. 변수의 필요성 물론 변수가 없이도 우리는 예를 들어 어떤 수학적인 계산을 이어갈 수가 있다. PI * pow(5.0,2.0) 그냥 위와 같은 값을 얻고 싶다 가정한다면, 변수가 필요없겠지만 여기서 생각해 봐야할 점이 있다. 값을 얻으면 그대로 끝이라는 것이다. 무슨 말이냐면, 이 얻은 값을 결과로 다른 연산들을 이어가고 싶어질 시, 같은 코드를 다시 그대로 써야 한다는 것이다. 5가지 정도만의 연산을 이어서 한다고 해도 코드는 길어질대로 길어져 읽기가 불가능해 질 것이다. 그렇게 쓰여진 코드는 시간이 지나서 다시 보게 될 때, 이 코드가 무엇을 의미했었는지 다시 생각해나가야 한다. 그러니 표현식을 쓸 때 이 식이 의미하는 게 무엇인지 생각해보고, 그 의미를 이름에 나타내야 한다. 이는 변수를 통해 ..

언어/Kotlin 2022.06.16

Kotlin 기초 : 자료형 (Data type)

Int, Boolean, String 등의 모든 자료형은 허용되는 값과 해당 유형의 값으로 가능한 함수 및 연산을 정한다. 이는 컴파일러가 프로그래밍할 때 조기에 우리를 오류로부터 보호할 수 있는 유일한 방법이기에 중요하다. 컴파일러가 컴파일 중에 자료형을 인지하고 함수와 연산이 자료형에 맞게 쓰였는지 확인한다 (코틀린은 자료형이 정적으로 지정되기 때문에). 동적으로 지정된 언어같은 경우 자료형 검사가 프로그램 실행(런타임)에 일어난다. 자료형은 Typ에 대한 데이터가 인코딩(사용자가 입력한 문자나 기호들을 컴퓨터가 이용할 수 있는 신호로 만드는 것 -위키백과)되는 방법도 서술한다. 이는 프로그램이 컴퓨터의 메모리에 값을 저장하기 때문에 중요하다. 메모리 내 모든 것이 비트(0과 1)로 구성되기 때문에 ..

언어/Kotlin 2022.06.15

Kotlin 기초 : 표현식 (Expression)과 문 (Statement)

Expression : 표현식은 유형(Typ)의 값으로 '평가' 될 수 있는 모든 것, 즉 어떠한 값을 반환하는 것들. (kotlin에서 모든 함수들은 최소 unit을 반환하므로 표현식이다) 가장 간단한 표현식의 예) 36.5 28 "Hello World" 각 줄이 하나의 표현식이다. Expression Typ 허용 값 허용되는 연산자 36.5 Double 실수 +, -, *, / ... 28 Int 정수 +, -, *, / ... "Hello World" String 문자열 +, == ++ 15 * 89 47 + 12 두 식 모두 Int의 값으로 평가되니(Int값을 반환하니) expression 이다. 표현식 안에는 다른 표현식이 포함 될 수 있다. fun sumOf(a: Int, b: Int): In..

언어/Kotlin 2022.06.12