분류 전체보기 133

Kotlin : Polymorphie (ft.오버라이딩)

1. Polymorphie 란? 다형성(Polymorphie)은 공통 인터페이스를 통해 다양한 클래스의 구현에 액세스 할 수 있게 해준다. Polymorphie는 그리스어에서 유래했으며 대략, "다양한 형태"를 의미하며 객체 지향 프로그레밍의 중심 개념 중 하나이다. 이는 우리가 같은 방식으로 매우 다르게 설계된 객체를 사용할 수 있게 해준다. 저번의 클래스 계층 구조의 예시로 들었던 것이다. 탈것 클래스 내에 ' 출발하다()' 라는 메서드가 있다고 가정해보자. 그러면 자전거 클래스와 차 클래스의 출발하다()라는 메서드의 구조는 서로 당연히 다를 것이다. (출발하다() 메서드의 어떤 구현이 선택되는지에 대한 결정은 런타임에서 발생한다고 한다.) 2. Overriding 오버라이딩 Super Class의 ..

언어/Kotlin 2022.10.30

Kotlin : 상속 (inheritance) 적용해보기

https://bruders.tistory.com/41 에서 썼던 코드에 상속을 적용해보자. [코드] import kotlin.random.Random import kotlin.math.round class Actor(val firstName: String, val lastName: String, val genre: List){ var salary = round(Random.nextDouble(100000.0, 2000000.0)) val skill : Skill = Skill() fun movieSuccessfullyProduced(){ skill.currentSkill += skill.learningSpeed } } class Director(val firstName: String, val lastN..

언어/Kotlin 2022.10.28

Kotlin : 상속 (inheritance)

1. 상속이란? 객체지향 프로그래밍에서 상속은 굉장히 중요한 개념 중 하나이다. '상속'을 통해 반복되는 코드의 양을 줄일수도 있고, 다른 클래스가 가지고 있는 기능(속성, 함수 등)들을 상속받아 그대로 사용할 수 있기 때문이다. 상속하는 쪽을 Super Class, (엄마클래스, 아빠클래스라 부르기도 한다고 한다) 상속받는 쪽을 Sub Class (자식클래스라고도 부름) 라 한다. 왼쪽 그림을 보자. Super Class 에는 var1,var2 이렇게 두개의 변수와 methodeA,methodeB 두개의 메서드를 가기고 있는 반면, Super Class 를 상속받은 Sub Class 는 Super Class 가 가지고 있던, 기존의 두 변수와 두 메서드 뿐만이 아니라, 새로운 속성과 메서드를 가지고 있..

언어/Kotlin 2022.10.20

Kotlin : Movie Maker produce() 함수

지난번에 쓴 Movie 클래스 코드다. 이번에 produce() 함수를 완성시켜 보자. 먼저, 영화가 제작이 될 때 어떤 일들이 일어나야하는지를 적어본다. => 1. 영화수익이 생긴다. (예상수익: 1000000~2000000) 2. 영화가 평가된다. ( = 평점이 부여된다.) 3. 평점에서 수익이 발생한다. 4. 이런 부분수익은 전체 수익에 더해진다. 5. 계산된 총 수익은 Movie 의 속성 revenue 에 저장된다. 6. 총 손실과 이익을 계산 후 출력한다. 7. 감독과 배우에게 영화가 제작되었음을 알려야 한다. [ 전체코드 ] import kotlin.random.Random import kotlin.math.round class Actor(val firstName: String, val las..

언어/Kotlin 2022.10.19

Kotlin : Movie Maker 일단 클래스부터

이제 어느정도 틀은 잡아두었으니, 본격적으로 프로젝트를 생성해보자. 1. enum Class Genre 구현하기 먼저 가장 간단한 Genre 를 위한 enum 클래스를 만들어보자. 코틀린데이터 생성 후 생각해둔 장르를 넣어주면 된다. enum class Genre { ACTION, COMEDY, DRAMA, FANTASY, HORROR, THRILLER } 2. Actor와 Director 클래스 구현하기 영화가 하나 성공적으로 제작될때마다, 감독과 배우 모두 그만큼 능력치가 올려가야하니, 각자 배우는 속도에 따라 능력치가 올라가게 해준다. 개개인의 능력치 한계치가 존재하니, 그 한계치를 넘지 않도록 제한도 두고. ++ 저번글에서 객체들은 또 다른 객체들로 구성되어 있다는 얘기를 했다. 그건 우리가 사는..

언어/Kotlin 2022.10.19

Kotlin : Movie Maker 시물레이션, 구상

지금까지 공부해 온 코틀린 기본적인 내용들로, 좀 더 큰 예시를 연습해보자. " 플레이어가 영화 제작자의 역할을 하는 작은 게임을 만든다고 생각해보자 " ------- 게임 내용 구상 ------- 1) 영화 기획하기 : 플레이어는 영화 하나를 기획합니다. => 감독, 장르, 예산, 주연 배우 등을 고려해 2) 영화 제작하기 : 고려된 내용을 바탕으로 영화 하나가 제작됩니다. => 영화 제작 비용( 감독, 배우등 의 급여) 이 플레이어의 계좌에서 삭감됩니다. 3) 영화의 평점 계산하기 : 영화의 평점이 아래 사항에 맞춰 계산됩니다. => 주연배우에게 맞는 장르였는가? => 감독이 선호하는 주연배우 중 하나였는가? => 주연배우와 감독은 많은 경험을 가지고 있는가? 4) 경험값 모으기 : 배우와 감독은 작..

언어/Kotlin 2022.10.18

Kotlin : 간단한 for 과 while, do..While 문의 이용

1. for 문의 이용 2. While문의 이용 while(조건) : 이 조건이 충족되는 한 계속 while문을 실행한다는 것. : 800ml 의 물이 들은 병을 새로 생성한 잔에 붓는다. 이 행동은 그 물의 양이 0 초과일때까지 반복된다. 즉, 병 내에 물의 양이 모두 없어지면, 그만둔다는 것. 3. do.. While문의 이용 while(조건)문이 충족되지 않는 이상 do문을 시행한다. : 내가 인풋으로 아니오를 쓰면 do문이 더 이상 시행되지 않는 다는 얘기. 4. 실행 fun main(){ val bottle = Bottle(800) val glasses = mutableListOf() while(bottle.content > 0){ val newGlass = Glass(0,150) bottle...

언어/Kotlin 2022.10.13

Kotlin : 리스트 (list)

Glass 클래스와 그 오브젝트들을 만들어봤으니, 이번에는 그 오브젝트들이 들어가있는 일종의 집합을 만들어보자. 'listOf'를 통해 리스트 생성이 가능하다. - 안에는 리스트 안에는 넣을 자료형을 입력하면 된다. 우리의 경우 클래스 Glass - 이미 만들어둔 오브젝트들을 넣어도 되지만 즉석해서 만들어 넣을 수도 있다. => Glass(65,120) 당연히 Glass 클래스 내부에 정의한 함수들도 쓸 수 있다. 정의된 리스트는 변경이 불가능한 리스트라 변경을 시도할 경우 에러가 뜬다. val가 아닌 가변변수 var로 리스트를 정의했을 경우, 마찬가지로 리스트 내부 오브젝트의 속성값들을 변경할 수는 없지만, 새 리스트를 만들어 그 리스트를 참조할 수 있다. 즉, 이랬던 상황에서 이렇게 참조하고 있던 리..

언어/Kotlin 2022.10.12

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