언어29 Kotlin : nullable 타입 안전하게 참조하기 (ft.Safe Call) 아래 예시 코드를 보자.물론 nullable 타입인 Movie? 타입의 bestMovie 가 아무 제한 없이 Movie 클래스의 속성에 참조할 수 있다면 위험하다. 아무것도 아닌 객체의 속성 참조는 NullPointerException을 일으킬 수 있기 때문에 (이를 코틀린에서는 런타임 전에 컴파일러를 통해 알려주긴 하다만). 그러면 참조하기 전에 그 객체가 정말 존재하는 객체인지 확인 후, 참조하면 되는 거 아닐까? 1. null 확인하기 bestMovie 가 실제 객체를 참조하는게 확실한 경우, 즉 Movie 타입을 참조하고 있다면 그 타입 속성에 참조하는게 가능하다. => 아래처럼 if 절을 이용해서 확인하면 된다. var bestMovie : Movie? = nullif(bestMovie .. 2022. 11. 9. Kotlin : null 이란? 지금까지 각 변수에는 항상 어떠한 값이 제공되있어야 했다. 즉, 각 변수는 항상 특정한 개체를 참조하는데, 참조변수가 개체를 참조해서는 안되는 경우도 존재한다. 예를 들어 지금까지 만들어진 영화들 중 최고의 영화를 변수에 저장하고 싶다고가정해보자. val bestMovie = TODO() 하지만 아직 제작된 영화가 없다면 과연 이 변수는 어떤 영화 개체를 참조해야 할까? 물론 아무 의미가 없는 Movie 개체를 따로 만들어 둘 수 있지만 우아(?)하지는 않은 방법이다. 어찌됐든 게임(영화만들기 게임)이 막 시작했을 때, 아직 최고의 영화로 지정된 영화는 존재할 수 없는 거니까... 1. Nullable Types 코틀린에서 참조변수가 아무것도 참조하지 않도록 하는 방법이 있다. null 키워드를 이용하면.. 2022. 11. 9. Kotlin : 인터페이스 (Interface) 0.5 인터페이스란 인터페이스는 데이터 구조의 구현을 지정하지 않고 작업을 지정한다. 추상 메서드나 추상 속성(즉, Backing filed가 없음) 등이 인터페이스에 정의된다. 어떠한 특정 작업 세트를 제공하는 데이터 유형을 정의한다고 생각하면 된다. [기능이 구현되는 방식을 결정할 필요가 없는 기능 집합] 1. 인터페이스의 필요성 ( https://bruders.tistory.com/44 ) 에서 사용했던 클래스 계층 구조이다. 이 때 만들어진 영화는 비평가로부터 평가되어야 한다고 가정해보자. 이를 위해 비평 (Rating) 과 비평가 (Reviewer)에 대한 클래스를 추가로 만든다면 클래스 계층 구조는 어떻게 생겨야 할까? 왼쪽과 같은 구조를 생각했다고 가정해보자. 그러면 Reviewer 클래스는.. 2022. 11. 7. Kotlin : 추상클래스 (Abstract class) 1. 추상클래스의 필요성 클래스를 정의할 필요가 없는 고유한 개체 (object 키워드) 가 있듯, 객체가 없는 클래스가 존재한다. 그런 클래스가 과연 유용할까? 클래스는 ( https://bruders.tistory.com/21 ) 에서 얘기했듯 동일한 유형의 객체에 대한 일반적인 구조를 정의한다. 위 코드는 지난번에 코틀린 상속관련 예시로 작성한 코드다. Actor 클래스는 Actor 객체의 구조를, Director 클래스는 Director 클래스만의 구조를 정의했었는데, 두 사이 공통분모가 존재해 이를 따로 빼둘 둘의 상위 클래스인 Person 클래스를 만들었던 것이다. 사실 Actor 클래스와 Director 클래스의 객체만이 필요했을 뿐, Person 클래스의 객체는 따로 필요하지가 않은 상태라.. 2022. 11. 5. Kotlin : Object Composition & Aggregation 이란 1. Aggregation 위와 같이 코드를 작성했다고 생각해보자. 각 변수들이 어떤 객체들이 참조하고 있는지 그림으로 그려보았는데, 보면 참조변수 steven이 참조하는 Director 객체를 두개의 서로 다른 객체로부터 참조되고 있는게 보인다. (Director 객체인 steven이 단 하나의 영화에만 속해있는 게 아니라 여러 영화에 속해 있는 상태) 이렇게 여러개의 객체가 하나의 같은 객체를 참조하고 있는 걸 Aggregation 이라 부른다. 자 그럼 이제, secondMovie 객체를 삭제했다고 가정해보자. secondMovie 객체가 없어지면 당연히 그 객체가 다른 객체를 참조하고 있던 그 관계? 또한 사라진다. 하지만 위 그림을 보면 알 수 있듯, secondMovie 가 삭제되었지만 그 객.. 2022. 11. 3. Kotlin : Movie Maker 에서 Object 키워드 사용해보기 import kotlin.random.Random import kotlin.math.round class Actor(val firstName: String, val lastName: String, val genre: List){ var salary = round(Random.nextDouble(100000.0, 2000000.0)) val skill : Skill = Skill() fun movieSuccessfullyProduced(){ skill.currentSkill += skill.learningSpeed } } class Director(val firstName: String, val lastName: String, val preferredActor: Actor){ var salary = rou.. 2022. 11. 3. 이전 1 2 3 4 5 다음