[Kotlin/코틀린] 4. 메소드(Method)

2023. 12. 10. 16:55스파르타/Kotlin

3주차 '객체 지향 프로그래밍의 기초' 강의 내용 정리

4. 메소드 (Method) 선언하기

 

 

 

코틀린 메소드 구조를 살펴보자.

fun 메소드이름(변수명:자료형, 변수명:자료형 ....) : 반환자료형 {

    소스코드 로직

 

코틀린에서는 메소드를 선언할 때 fun이라는 키워드를 사용한다.

아래 3가지 예시를 통해서 더 자세히 알아볼 수 있었다.

 

 

 

 

 


 

 

 

 

 

예시 코드 1

두 개의 숫자를 더하는 메소드를 만들고, 전달하는 숫자에 따라 덧셈결과를 알려줘요

- sum 메소드는 매개변수 num1과 num2를 요구한다.

- 필수로 매개변수를 넣어줘야 호출할 수 있다.

 

fun main() {
    var num1 = readLine()!!.toInt()
    var num2 = readLine()!!.toInt()

    // sum이라는 이름의 메소드를 호출!
    sum(num1, num2)
}

fun sum(num1:Int, num2:Int) {
    var result = num1 + num2
    println("num1과 num2의 덧셈결과는 ${result}입니다.")
}

 

 

 

 

예시코드 설명

fun main() {

 

fun main() 이라는 메인 함수를 선언한다.

 

var num1 = readLine()!!.toInt()
var num2 = readLine()!!.toInt()

 

num 이라는 변수 안에는 내가 키보드로 입력한 숫자한 숫자가 들어가는데

숫자로 변환된 입력 값은 변수로 각각 num1 과 num2에 들어가게 된다.

 

 

// sum이라는 이름의 메소드를 호출!
    sum(num1, num2)
}

 

 

여기서 말하는 sum이란 더하는 코드를 넣을 메소드를 말한다.

호출한 sum 메소드 안에는 num1, num2를 넣는다.

 

 

 

fun sum(num1:Int, num2:Int) {

 

sum이라는 함수를 선언한다. 함수 이름은 변경해도 된다.

외부에서 받아온 num1:Int, num2:Int 에 값을 넣어서 호출하라는 의미다.

 

var result = num1 + num2

 

 

외부에서 num1 값과 num2 값을 주면,

num1 과 num2 를 더하는 num1 + num2 을 var result 라는 변수에 넣는다.

 

 

 println("num1과 num2의 덧셈결과는 ${result}입니다.")
}

 

 

마지막으로 result 변수를 출력한다.

 

 

 

예시코드 실행 결과

 

num1 에는 10 을 입력했다.

num2 에는 20 을 입력했다.

num1 과 num2의 합

즉, 두 수의 합은 30이라는 덧셈 결과를 알려준다.

 

 


 

 

 

반환자료형이 없는 경우

fun 메소드이름(변수명:자료형, 변수명:자료형 ....) : 반환자료형 {

    소스코드 로직

 

메소드의 구조에는 반환자료형이 있으나

아래 예시 코드2처럼 반환자료형이 없는 경우에는 Unit으로 명시하거나 생략할 수 있다.

 

 

 

예시 코드 2

 

오늘의 정보를 알려주는 메소드를 만들어요

 

fun main() {
    // displayInfo라는 이름의 메소드를 호출!
    displayInfo()
}

fun displayInfo() : Unit {
    println("오늘의 날씨는 화창합니다")
    println("오늘은 검정색을 조심하세요")
}

 

 

 

예시코드 설명

fun main() {

 

fun main() 메인 함수를 지정해주고

 

// displayInfo라는 이름의 메소드를 호출!
displayInfo()

 

displayInfo라는 메소드를 호출한다.

 

fun displayInfo() : Unit {

 

 

displayInfo라는 함수를 만들고

 

println("오늘의 날씨는 화창합니다")
println("오늘은 검정색을 조심하세요")

 

위 코드를 실행한다.

 

메소드 실행 후의 결과를 메인 함수로 리턴하기 위해서 Unit 을 사용한다.

여기서 Unit 은 생략 가능하다.

 

 

 

예시코드 실행 결과

 

 

displayInfo 함수 안에 있는 코드가 실행된 것을 볼 수 있다.

 

 

 

 

 

 

 

 


 

 

예시 코드 3

수학점수를 입력받아 등급을 출력해주는 프로그램을 학생들에게 전달했어요

- checkRank메소드는 매개변수로 score를 요구해요

 

fun main() {
    var myMathScore = readLine()!!.toInt()

    var myRank = checkRank(myMathScore)
    println("나의 등급은 : ${myRank}")
}

fun checkRank(score:Int) : String {
    return when(score) {
        in 90..100 ->  return "A"
        in 80..89 -> return "B"
        in 70..79 -> return "C"
        else -> return "D"
    }
}
//    Kotlin 컨벤션을 따르지 않은 형태
//    if(score >= 90) {
//        return "A"
//    } else if(score >= 80) {
//        return "B"
//    } else if(score >= 70) {
//        return "C"
//    } else {
//        return "D"
//    }
// }

 

 

 

예시코드 설명

fun main() {
    var myMathScore = readLine()!!.toInt()

 

메인함수를 선언하고,

myMathScore 에는 입력한 숫자 값이 변수로 들어간다.

 

 var myRank = checkRank(myMathScore)
    println("나의 등급은 : ${myRank}")
}

 

checkRank(myMathScore) 라는 결과를 myRank로 대입한다.

checkRank(myMathScore) 가 결과값이 되기 위해서는 

 

 

fun checkRank(score:Int) : String {

 

checkRank 라는 메소드를 호출하고

파라미터(score:Int)  score 점수를 checkRank(myMathScore) 로 넘겨준다.

 

 

   return when(score) {
        in 90..100 ->  return "A"
        in 80..89 -> return "B"
        in 70..79 -> return "C"
        else -> return "D"
    }
}

 

myRank 에는 실행 후에 return 값이 들어가게 된다.

기존에 사용하던 if 문을 코틀린에서는 when 으로 바꾸었다.

90..100 일 때는 A 값을 리턴하고,

80..89 일 때 는 B 값을 리턴하고,

70..79 일 때는 C 값을 리턴하고,

나머지는 D 값을 리턴한다.

 

 

 

 

예시코드 실행 결과

 

89 라는 숫자를 입력했더니

B 라는 값이 리턴된 것을 확인할 수 있었다.