[Kotlin 깃북] Ch3 코틀린 사용을 위한 기본 문법 7. 클래스와 설계 (3)

0
post-thumbnail

[Kotlin 깃북] Ch3 코틀린 사용을 위한 기본 문법

7. 클래스와 설계 (3)

설계 도구

  • 객체지향 프로그래밍: 설계 + 구현

패키지

  • 코딩하며 파일을 이름 짓고, 분류하는 것 -> 설계의 일부분
  • 패키지: 클래스와 소스파일을 관리하기 위한 디렉토리 구조의 저장 공간
  • 디렉터리가 계층 구조로 만들어진 경우, 온점(.)으로 구분
//현재 크래스가 어떤 패키지(디렉터리)에 있는지 표시
package 메인 디렉터리.서브 디렉터리
class 클래스 {

}

추상화

  • 프로그래밍 전, 개념 설계하는 단계에서 클래스의 이름과 클래스 안 메서드 이름 나열
    -> 메서드 블록 안에 직접 코드 작성 or 구현 단계에서 구현하도록 메서드 이름만 작성
    -> abstrct 키워드 사용
//추상화된 클래스
abstract class Design {
    //구현 단계에서 구현하도록 메서드 이름만 작성
    abstract fun drawText()
    //구현 단계에서 구현하도록 메서드 이름만 작성
    abstract fun draw()
    
    //메서드 블록 안에 직접 코드 작성
    fun showWindow() {
        // code
    }
}

//추상화된 클래스 상속 -> 아직 구현되지 않은 부분 모두 구현
class Implements: Design(){
    fun drawText() {
        // 구현 코드
    }
    fun draw() {
        // 구현 코드
    }
}
  • 추상 클래스는 인스턴스화 할 수 X

인터페이스

  • 인터페이스: 메서드 이름만 가진 추상 클래스
    -> interface 예약어를 통해 정의
    -> 인터페이스에 정의된 메서드 오버라이드하여 구현
  • 인터페이스의 프로퍼티와 메서드 앞 abstract 키워드 생략
interface InterfaceKotlin{
    //abstarct 키워드 생략!
    var variable: String 
    fun get()
    fun set()
}
  • 인터페이스를 상속하여 클래스로 구현하기
class KotlinImpl: InterfaceKotlin {
    override var variable: String = "init value"
    override fun get() {
        // code
    }
    override fun set() {
        // code
    }
}
  • 인터페이스를 object 키워드로 소스 코드에서 직접 구현하기
var kotlinImpl = object: InterfaceKotlin {
    override var variable: String = "init value"
    override fun get() {
        // code
    }
    override fun set() {
        // code
    }   
}
  • 인터페이스는 외부의 다른 모듈을 위한 의사소통 방식 정의
    -> 혼자/소수의 인원이 하나의 모듈 단위를 개발하는 경우 인터페이스 사용 권장 X
profile
Be able to be vulnerable, in search of truth

0개의 댓글