본문 바로가기
728x90
반응형

전체 글140

아토믹 코틀린 - 객체 - 패키지 DRY = Don't Repeat Yourself 코드를 재사용하려면 package 키워드를 사용해 패키지를 만들어라. package pythagorean import kotiln.mat.sqrt class RightTriangle( val a: Double, val b: Double ) { fun hypotenuse() = sqrt(a * a + b * b) fun area() = a * b / 2 } 파일이름이 항상 클래스 이름과 같아야하는 자바와 달리, 코틀린에서는 소스 코드 파일 이름으로 아무 이름이나 붙여도 좋다. 패키지 이름도 아무 이름이나 선택할 수 있다. 하지만 패키지 이름과 패키지 파일이 들어있는 디렉토리의 경로를 똑같이 하는 거이 좋은 스타일로 여겨진다. 2023. 10. 2.
아토믹 코틀린 - 객체 - 가시성 제한하기 소프트웨어를 설계할 때 1차적으로 고려해야 할 내용: 변화해야 하는 요소와 동일하게 유지되어야 하는 요소를 분리하라. 가시성을 제어하기 위해 코틀린은 접근 변경자(access modifier)를 제공한다. 예) public, private, protected, internal internal은 그 정의가 포함된 모듈 내부에서만 접근할 수 있다. internal은 private과 public 사이다. 2023. 10. 2.
아토믹 코틀린 - 객체 - 생성자 생성자는 객체를 초기화하는 특별한 멤버 함수와 비슷하다. 코틀린에서는 객체를 생성할 때 new 키워드가 필요없다. class Wombat fun main() { val wombat = Wombat() } 생성자에게 정보를 전달할 때는 파라미터 목록을 사용한다. class Alien(name: String) { val greeting = "Poor $name!" } fun main() { val alien = Alien("Jiyeong") println(alien.greeting) } //출력 Poor Jiyeong! 생성자 밖에서는 파라미터에 접근할 수 없다. (alien.name 안된단 뜻) 생성자 밖에서도 생성자 파라미터에 접근하도록 하고 싶다면, 파라미터 목록에 var/val를 지정하면 된다. cl.. 2023. 10. 2.
아토믹 코틀린 - 객체 - 프로퍼티 프로퍼티를 정의하는 목적 = 클래스 안에서의 상태 유지 var / val 는 객체가 아니라 참조를 제한한다. var를 사용하면 참조가 가르키는 대상을 다른 대상으로 다시 엮을 수 있지만, val을 사용하면 엮을 수 없다. var 프로퍼티는 재대입이 가능하지만, val 프로퍼티는 재대입이 불가능하다. 클래스 안에 정의한 var / val 은 클래스의 일부분이 된다. 따라서 점 표기법을 사용해야만 접근 가능하다. 멤버함수는 점 표기법을 쓰지 않고(=해당 프로퍼티를 한정하지 않고) 자신이 속한 객체의 프로퍼티에 접근할 수 있다. clss Cup2 { var percentFull = 0 val max = 100 fun add(increase: Int): Int { percentful += increase if .. 2023. 10. 2.
아토믹 코틀린 - 객체 - 클래스, 멤버 함수... 코틀린에서의 멤버 함수 = 메서드 이는 코틀린의 함수적 특성을 강조하기 위해서다. 최상위(top-level) 함수 = 클래스에 속하지 않은 함수 보통, 멤버 함수 = 클래스에 속한 함수 멤버 함수를 호출하려면 반드시 객체를 지정해야 한다. 멤버 함수는 클랙스에 속한 다른 요소들을 멤버 이름만 사용하여 접근할 수도 있다. 예) class Hamster { fun speak() = "Squeak! " fun exercise() = this.speak() // this로 한정해도 되고 + speak() // 한정하지 않아도 된다. + "Running on wheel" } fun main() { val hamster = Hamster() println(hamster.exercise()) } // 출력 // Sq.. 2023. 10. 2.
728x90
반응형