[Kotlin] 3일차 - 함수, 객체

Functions

Kotlin의 함수는 다음와 같이 정의되고 사용할 수 있다.

 

fun main() {
    //call Function
    makeCoffe()
}

// Define Function
fun makeCoffe(){
    println("Buy beans")
    println("grind Beans")
}

 

Parameters

함수는 다음의 방식으로 파라미터를 가질 수 있다

 

fun main() {
    //call Function
    makeCoffe(1)
    makeCoffe(2)
    makeCoffe(3)
}

// Define Function
fun makeCoffe(sugerCount : Int){
    println("Coffe with $sugerCount spoon")
}

//other Parameter
fun main() {
    println("Who is this coffe for?")
    val name = readln()
    println("How many pieces of sugar?")
    val sugarCount = readln().toInt()
    //call Function
    makeCoffe(sugarCount,name)
}

// Define Function
fun makeCoffe(sugerCount : Int, name:String){
    if(sugerCount == 1) {
        println("Coffee with $sugerCount spoon for $name")
    }
    else {
        println("Coffe with $sugerCount for $name")
    }
}

 

 

그리고 다음과 같이 함수의 값을 return할 수 있다

 

fun main() {
    println("Enter Number 1")
    val num1Str = readln()
    val num1Int = num1Str.toInt()
    println("Enter Number 2")
    val num2Str = readln()
    val num2Int = num2Str.toInt()
    val myResult = add(num1Int,num2Int)
    println(myResult)
}

//Return Funtion
fun add(num1:Int,num2:Int):Int {
    val result = num1+num2
    return result
}
//different type
fun divide(num1: Int,num2: Int):Double {
    val result = num1/num2.toDouble()
    return result
}

 

Classes

클래스란?

 

객체를 생성하기 위한 설계도 또는 틀 

클래스는 객체의 속성과 동작을 정의하며 이를 통해 유사한 객체들을 쉽게 생성하고 관리할 수 있다

즉, 클래스는 객체의 청사진이다

 

그리고 class를 생성하기 위해선 initializer가 있어야 한다

initializer는 객체가 생성될때 실행되는 코드이다

 

package com.example.kotlinbasics

class Dog {
    init {
        bark()
    }
    fun bark(){
        println("bark! bark!")
    }
}

 

Class Dog 이라는 class를 정의하고

 

fun main() {
    // Creating an object/instance of the class Dog
    var Daisy = Dog()
}

 

이를 Daisy라는 변수에  Dog Class로 만들어진 object가 할당되게 된다

 

property

이는 객체의 속성이며 다음과 같이 표현할 수 있다

 

package com.example.kotlinbasics

class Dog (val name:String, val breed: String) {
    init {
        bark()
    }
    fun bark(){
        println("bark! bark!")
    }
}

 

fun main() {
    // Creating an object/instance of the class Dog
    var Daisy = Dog("Daisy","poodle")
    println("${Daisy.name} is a ${Daisy.breed}")
}

다음과 같이 Dog Class에 속성을 부여하고, 이를 접근이 가능하다

Data classes

데이터 클래스는 주로 데이터를 저장하는 데 사용된다

각 데이터 클래스에 대해 컴파일러는 인스턴스를 읽을 수 있는 출력으로 출력하고, 인스턴스를 비교하고, 인스턴스를 복사하는 등의 작업을 수행할 수 있는 추가 멤버 함수를 자동으로 생성한다

 

//define data class
data class  CoffeDetails(
    val sugerCount: Int,
    val name: String,
    val size : String,
    val creamAmount : Int
)

fun main() {
    val coffeeForDenis = CoffeDetails(0,"denis","xxl",0)
    makeCoffe(coffeeForDenis)
}


// Define Function
fun makeCoffe(CoffeDetails: CoffeDetails){
    if(CoffeDetails.sugerCount == 1) {
        println("Coffee with ${CoffeDetails.sugerCount} spoon for ${CoffeDetails.name}")
    }
    else {
        println("Coffe with ${CoffeDetails.sugerCount} for ${CoffeDetails.name}")
    }
}

 

다음과 같이 dataclass에서 속성을 정의하고, 이 dataclass를 instance로 사용한뒤 함수의 매게변수로 사용할 수 있다