Android 앱개발 공부/TIL(Today I Learned)

[Android] TIL 18일차

bunny code 2024. 6. 14. 21:06

과제 : 키오스크


문제 : 클래스 간의 상속 관계를 추가하고 리스트 변수를 만들어 리스트로 모든 메뉴를 관리하고 수정해라

 

(메인 함수 코드 내용은 어제와 같은 내용이라 작성 생략)

 

* 클래스 코드(상속 관계)

open class MainMenu(){
    fun menu() {
        println("[SHAKESHACK MENU]")
        println("1.Burgers")
        println("2.Ice Cream")
        println("3.Drinks")
        println("0.종료")
    }

    open fun burgers(){
        println("[Burgers MENU]")
        println("1.ShackBurger")
        println("2.SmokeShack")
        println("3.Shroom Burger")
        println("4.Cheeseburger")
        println("0.뒤로가기")
    }

    open fun iceCream() {
        println("[Ice Cream MENU]")
        println("1.Chocolate Ice Cream")
        println("2.Vanila Ice Cream")
        println("3.Strawberry Ice Cream")
        println("4.Melon Ice Cream")
        println("0.뒤로가기")
    }

    open fun drink(){
        println("[Drinks MENU]")
        println("1.Coffee")
        println("2.Black Tea")
        println("3.Lemonade")
        println("4.Banana Juice")
        println("0.뒤로가기")
    }
}

class Burgers : MainMenu() {

    fun shackburger(){
        var name = "ShackBurger"
        var price = 5500

        println("${name}의 가격은 ${price}입니다.")
    }

    fun smokeshack(){
        var name = "SmokeShack"
        var price = 6500

        println("${name}의 가격은 ${price}입니다.")
    }

    fun shroom(){
        var name = "Shroom Burger"
        var price = 7000

        println("${name}의 가격은 ${price}입니다.")
    }

    fun cheese(){
        var name = "Cheese Burger"
        var price = 5700

        println("${name}의 가격은 ${price}입니다.")
    }
}

class IceCream : MainMenu() {

        fun chocolate() {
            var name = "Chocolate Ice Cream"
            var price = 5000

            println("${name}의 가격은 ${price}입니다.")
        }

        fun vanila() {
            var name = "Vanila Ice Cream"
            var price = 6000

            println("${name}의 가격은 ${price}입니다.")
        }

        fun strawberry() {
            var name = "Strawberry Ice Cream"
            var price = 6000

            println("${name}의 가격은 ${price}입니다.")
        }

        fun melon() {
            var name = "Melon Ice Cream"
            var price = 5500

            println("${name}의 가격은 ${price}입니다.")
        }
    }

class Drink : MainMenu() {

    fun coffee() {
        var name = "Coffee"
        var price = 4500

        println("${name}의 가격은 ${price}입니다.")
    }

    fun black() {
        var name = "Black Tea"
        var price = 5000

        println("${name}의 가격은 ${price}입니다.")
    }

    fun lemonade() {
        var name = "Lemonade"
        var price = 4500

        println("${name}의 가격은 ${price}입니다.")
    }

    fun banana() {
        var name = "Banana Juice"
        var price = 5500

        println("${name}의 가격은 ${price}입니다.")
    }
}

 

* 코드 내용 요약

1. MainMenu 클래스를 부모 클래스로 지정하기 위해 open 키워드 사용(기존에는 Menu 클래스를 MainMenu로 명칭 변경)
2. burgers, icecream, drinks 함수를 MainMenu로 옮기고 open 키워드를 작성해서 다른 클래스들도 사용할 수 있도록 설정
3. Burger, IceCream, Drink 클래스 정의부 옆에 : MainMenu()를 작성하여 자식 클래스임을 설정

 

 

* 막히는 부분(List 작성)

문제 : 하나의 리스트 객체로 모든 메뉴들을 관리하도록 수정하고 실행하면 메인에서 intest 메소드를 실행하여 메뉴들을 객체화하고 리스트에 담아둡니다.(ArrayList 사용)

val list : MutableList<Burgers> = ArrayList()
-> ??

 

-> 튜터님이 리스트 변수 선언 시 MutableList<클래스명> = ArrayList()를 사용해 보라고 조언을 해주셔서 해당 코드 내용 작성

 

Q. 그런데 MainMenu 클래스에 있는 정보들은 어떻게 선언해야 하는지?

Q. intest 메소드에는 특정 객체(Burgers의 객체)를 추가하는 로직을 작성하고 어떻게 list에 add 해야 오류가 없이 버거 메뉴에 추가되어 출력될지?

 

ArrayList 사용 방식 자체를 이해 못 하고 있어서 강의도 다시 듣고 구글링을 통해서 어떤 구조인지도 찾아봤지만 아직도 잘 이해가 되질 않는다.. 주말에 좀 더 찾아보고 그래도 이해를 못 한다면 이 부분은 다음 주에 따로 개인 피드백을 받아봐야 할 거 같다. 

 

 

* 참고 자료


https://zladnrms.tistory.com/140

 

[Android/kotlin] List vs MutableList vs ArrayList vs LinkedList

📌 List vs MutableList vs LinkedList vs ArrayList 🐳 List와 MutableList의 차이 Kotlin은 많은 변수들을 Mutable 여부로 나누고 있다는 것을 잊지말자. List Collcection에서도 List와 MutableList의 차이는 Read-Only인지 아

zladnrms.tistory.com

https://velog.io/@dear_jjwim/안드로이드-코틀린-공부-일지-3

 

ArrayList vs MutableList, 직렬화(serialization), GSON, Shared Preference

📝 ArrayList, MutableList, 직렬화(serialization), GSON, Shared Preference

velog.io

 

'Android 앱개발 공부 > TIL(Today I Learned)' 카테고리의 다른 글

[Android] TIL 20일차  (0) 2024.06.18
[Android] TIL 19일차  (0) 2024.06.17
[Android] TIL 17일차  (2) 2024.06.13
[Android] TIL 16일차  (2) 2024.06.12
[Android] TIL 15일차  (0) 2024.06.11