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 라는 값이 리턴된 것을 확인할 수 있었다.
'스파르타 > Kotlin' 카테고리의 다른 글
[Kotlin/코틀린] 6. 생성자(Constructor), 객체(Object) (0) | 2023.12.11 |
---|---|
[Kotlin/코틀린] 5. 클래스(Class), 객체 지향 프로그래밍(Object-Oriented Programming, OOP) (0) | 2023.12.11 |
[Kotlin/코틀린] 3. 연산자의 종류, 조건문 사용, 반복문 사용 (0) | 2023.12.10 |
[Kotlin/코틀린] 2. 코딩 컨벤션(Coding Conventions), 입력(Input)과 출력(Output), 자료형, 변수(var)와 상수(val) (0) | 2023.12.10 |
[Kotlin/코틀린] 1. Kotlin 개념, 개발 환경 설정, 유용한 단축키 모음 (0) | 2023.12.10 |