lminsu / MovieTrailer

0 stars 0 forks source link

PagerFragment와 MainFragment lifecycle 콜백 함수 로깅 추가 #9

Closed lminsu closed 3 weeks ago

lminsu commented 3 weeks ago
lminsu commented 3 weeks ago

fun main() { // Car 타입의 인스턴스 생성 val myCar = Car("Toyota", "Camry") myCar.accelerate(20) // 속도를 20만큼 올리는 메소드 호출(0에서 20으로 변경됨) // named parameter를 사용하여 함수 호출, myCar.updateSpeed(60)와 동읾 myCar.updateSpeed(speed = 60) // 속도를 60으로 변경하는 메소드 호출(20에서 60으로 변경됨)

val carInfo = myCar.getCarInfo() // 리턴 타입이 있는 함수 호출
println(carInfo)

val otherCar = Car.createTeslaModelX() // companion object에 정의된 함수는 "Car."으로 호출 가능
myCar.compareSpeedWith(otherCar)  // 다른 인스턴스와 spped를 비교하는 함수 호출

}


- 출력 로그

A Toyota Camry has been created. The Camry accelerates to 20 km/h. Updated speed of Camry to 60 km/h. Car Info: Model = Camry, Speed = 60 km/h A Tesla Model X has been created. This Camry is faster than the Model X.



- 개념 설명:
  - Class
    - `Car`는 class 예시
    - 클래스를 보고 인스턴스를 생성할 수 있음
    - 클래스는 `클래스로부터 생성된 인스턴스`를 설명하는 프로퍼티(멤버 변수)와 메소드(멤버 함수)들이 정의되어 있음
  - Instance(object(객체)랑 같은 말)
    - myCar는 Car 클래스의 인스턴스. 각각의 인스턴스는 각각의 상태를 가지고 있고, Car에 정의된 메소드들을 호출할 수 있음
  - Constructor Parameter(생성자 파라미터)
    - company와 model은 생성자 파라미터, 이것들은 Car 인스턴스가 생성될 때 필요한 것들임
    - company와 다르게 model은 프로퍼티로도 사용됨(앞에 val이 붙어 있음), 클래스 내부 전체에서 사용 가능
    - company는 model과 다르게 프로퍼티가 아님(앞에 val이 없음), init 블록 내에서만 사용 가능함
  - init 블록
    - init 블록은 인스턴스가 생성된 직후 바로 수행됨
    - 여기서는 Log를 찍고 있음
    - 생성자 파라미터랑 프로퍼티들을 사용할 수 있음(여기서는 companyk model, speed)
      - ⚠️ 만약 speed가 init 블록 밑에 정의되어 있었으면 init 블록 안에서 사용 못함, init 블록 위에 정의된 프로퍼티들만 init 블록에서 사용 가능
  - Property(member variable, 멤버 함수)
    - model: val(value)로 선언된 프로퍼티, class 안, 밖에서 전부 사용 가능, 값은 못 바꿈
    - speed: private var(variable)로 선언되 프로퍼티, 클래스 안에서만 사용 가능, 값 바꿀 수 있음
  - Method(member function)
    - accelerate(increment: Int)
      - 자동차의 스피드를 주어진 숫자만큼 증가시키는 함수
    - updateSpeed(speed: Int)
      - 주어진 파라미터로 받은 speed를 자신의 speed로 업데이트하는 함수(파라미터와 프로퍼티를 구분하기 위해 this를 사용함)
    - compareSpeedWith(otherCar: Car)
      - 파라미터로 받은 Car 인스턴스의 speed와 자신의 speed를 비교하는 함수
    - getCarInfo(): String 
      - 리턴 타입이 있는 함수
      - 자신의 프로퍼티들의 값들을 설명하는 String을 리턴함
    - Companion Object
      - Car 인스턴스가 아닌 Car 클래스에 속해 있는 함수
      - createTeslaModelX() 함수는 Car 인스턴스를 생성하지 않아도 호출될 수 있음
      - createTeslaModelX()는 테슬라 모델 X의 정보를 가지고 있는 Car 인스턴스를 생성 후 리턴