TodayILearned/Android&Kotlin

2023.07.17 TIL (내배캠 Kotlin강의 3주차-1)

YJ_ILY 2023. 7. 17. 15:34

1. 메소드 설계

  • 특정한 로직을 가지는 소스코드에 이름을 붙일 수 있음
  • 이름이 붙은 로직을 메소드라고 부름
fun 메소드이름(변수명:자료형, 변수명:자료형 ....) : 반환자료형 {
		소스코드 로직
}

변수명:자료형 => 파라미터라고 부름
반환자료형이 없을때는 Unit으로 명시하거나 생략할 수 있음

메소드 사용

  • 로직을 추상화해놓고 상황에 맞게 실행
  • 코드의 재사용성을 높임

 

활용 예시

  • 두 개의 숫자를 더하는 메소드를 만들고, 전달하는 숫자에 따라 덧셈결과를 알려줌
  • 매일 오전 10시, 5만원 이상의 주식 정보를 출력 후 메일로 전송

2. 클래스 설계

객체지향 프로그래밍

  •  코틀린은 모든것이 클래스 형태이기 때문에 객체화 가능
  • 프로그램에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만듦
  • 객체들간의 적절한 결합을 통해 유지보수를 쉽게 함
  • 5대 키워드 : 클래스, 추상화, 캡슐화, 상속, 다형성

클래스

  • 프로그램의 각 요소별 설계도
  • class 키워드를 활용해서 클래스를 만듦
  • 정보(프로퍼티)와 행위(메소드) 작성
  • 보통 하나의 파일은 한개의 클래스를 의미하지만, 하나의 파일안에 여러개의 클래스가 있을수도 있음
class 클래스이름 {
	  정보1
		정보2

		행위1
		행위2
}

특별한 클래스(데이터 클래스, 실드 클래스, 오브젝트 클래스)

데이터 클래스

  • 개발을 하다보면 프로퍼티만 가지고 있는 클래스 필요
  • data class 사용시 간편해짐
  • 기본 생성자에 1개 이상의 매개변수가 변수나 상수로 존재해야
  • 유용한 메소드를 자동 생성해줌
hashCode() 객체를 구분하기 위한 고유값을 리턴
eqauals() 동일한 객체인지 비교해서 true/false 리턴
copy() 현재 객체의 모든 정보를 복사해서 새로운 객체 리턴
toString() 현재 객체의 모든 정보를 출력해줌
getXXX() / setXXX(매개변수) 변수의 값을 리턴하거나 설정해줌
data class 클래스이름 {
			정보1
			정보2
}

실드 클래스

  • 상속받을 수 있는 자식클래스들을 미리 정의 가능
  • 무분별한 상속 방지 가능
sealed class 부모클래스 {
	class 자식클래스1 : 부모클래스생성자
	class 자식클래스2 : 부모클래스생성자
}

오브젝트 클래스

  • Java의 static 대신 사용하는 키워드
  • 프로그램을 실행하는 동시에 인스턴스화

 

클래스 사용 예시

  • 신규 게임 캐릭터의 머리색상(정보), 스킬(행위)를 클래스에 작성
  • 게임 배경에 배치할 나무의 높이, 색상 등(정보)를 클래스에 작성
  • 어떤 요소의 설계를 하는 것
클래스의 예시
fun main() {
    
}

class Character {
    var name:String = ""
    var hairColor:String = ""
    var height:Double = 0.0

    fun fireBall() {
        println("파이어볼!")
    }
    fun compositing(device1:String, device2:String): String {
        var device3 = device1 + device2
        println("새로운 무기인 ${device3}입니다")
        return device3
    }
}

3. 생성자 (notion-생성자 정리 참고)

  • 기본 생성자와 명시적 생성자 존재
  • 기본 생성자는 클래스를 만들던 행위와 차이가 없음
  • 명시적 생성자 : 주생성자와 부생성자로 구분
  • 주생성자와 부생성자의 차이는 클래스 옆에 붙냐, 클래스 안에 있냐의 차이
  • 한 가지의 형태로 클래스를 실체화할때에는 주생성자 활용
  • 여러 형태로 클래스를 실체화 할때는 부생성자 활용

 

생성자 활용 예시

  • 항상 <이름, 머리, 키>만 생성자에서 최초로 코드를 실행할 때는 주생성자 사용
  • <이름,머리색상,키> 또는 <이름, 머리색상,키,나이,성별>처럼 여러개 생성자를 통해 최초로 코드를 실행할 때는 부생성자 사용

4. 객체(Object)

  • 모든 인스턴스를 포함
  • 클래스 타입으로 선언된 것들

 

인스턴스

  • 클래스를 이용해서 만들어 내는 서로 다른 속성의 객체를 지칭하는 용어
  • 클래스 타입으로 선언된 객체를 실체화해서 메모리에 올린 것
  • 메모리 공간을 차지 
Person A instance "박보영", 1990
Person B instance "전정국", 1997
Person C instance "장원영", 2004