본문 바로가기
모바일/Kotlin

[Kotlin] 클래스(Class) 실습 TV 만들기

by drCode 2021. 4. 9.
728x90
반응형

안녕하세요

 

이번 포스팅은 코틀린 클래스를 이용하여 TV 만들기를 해보도록 하겠습니다.

 

3개의 채널이 존재하는 TV입니다.

 

fun main(args: Array<String>) {
    val tv = TV(listOf<String>("K", "M", "S"))
    tv.channelDown()
    println(tv.checkCurrentChannel())
    tv.channelDown()
    println(tv.checkCurrentChannel())
    tv.channelDown()
    println(tv.checkCurrentChannel())
    tv.channelDown()
    println(tv.checkCurrentChannel())
}

 

set 함수는 어떤 값을 넣거나 변경될 때마다 호출되는 함수입니다.

field 함수를 쓰면 무한루프가 되지 않게 막을 수 있습니다.

class TV(val channels : List<String>) {
    var onOrOff : Boolean = false
    var currentChannelNumber = 0
        set(value) {
            field = value
            if(field > 2) {
                field = 0
            }
            if(field < 0) {
                field = 2
            }
        }
        get() {
            println("호출되었습니다")
            return field
        }
    // set함수는 어떤 값을 넣을때마다 호출됨
    // field를 쓰면 무한루프가 안되게 막을 수 있게 된다

    fun switch() {
        onOrOff = !onOrOff
    }

    fun checkCurrentChannel() : String {
        return channels[currentChannelNumber]
    }

    fun channelUp() {
        currentChannelNumber = currentChannelNumber + 1
//        channels.forEachIndexed { index, value ->
//            if(currentChannelNumber == index) {
//                currentChannelNumber = currentChannelNumber + 1
//                return
//            }
//        }
    }

    fun channelDown() {
        currentChannelNumber = currentChannelNumber - 1
//        channels.forEachIndexed { index, value ->
//            if(currentChannelNumber == index) {
//                currentChannelNumber = currentChannelNumber - 1
//                return
//            }
//        }
    }
}
728x90
반응형

댓글