본문 바로가기

# 02/코틀린

[Kotlin] 클래스와 객체의 정의

반응형

객체 지향 프로그래밍


- OOP; Object-Oriented Programming

- 프로그램의 구조를 객체 간 상호작용으로서 표현하는 프로그래밍 방식

- 절차적 프로그래밍의 한계를 극복하고자 나온 언어의 한 가지 방법론

- 객체와 관계를 표현하고 이를 통해 확장과 재사용이 용이


- 코틀린에서는 OOP를 지원




객체지향 개념상의 용어들

 - 추상화 (abstraction)

 - 인스턴스 (instance)

 - 상속 (inheritance)

 - 다형성 (polymorphism)

 - 캡슐화 (encapsulation)

 - 메시지 전송 (message sending)

 - 연관 (association)



클래스(Class)란

 - 분류, 계층, 등급 등의 우리말 뜻

 - 특정 대상을 분류하고 특징(속성)과 동작 활동(함수) 내용을 기록



추상화(Abstraction)

 - 목표로 하는 것에 대해 필요한 만큼 속성과 동작을 정의하는 과정



코틀린에서 사용하는 용어 - 그 밖의 용어

클래스(Class) - 분류, 범주

프로퍼티(Property) - 속성(Attribute), 변수(Variable), 필드(Field), 데이터(Data)

메서드(Method) - 함수(Function), 동작(Operation), 행동(Behavior)

객체(Object) - 인스턴스(Instance)


- 자바에서 사용하는 필드는 코틀린에서 프로퍼티라고 부른다.



클래스 다이어그램

 - 클래스를 시각적으로 나타내 분석과 개념 구현에 용이

        Bird                              클래스명

- name : String                       속성(필드, 프로퍼티)

- wing : Int = 2

- beak : String

- color : String

+ fly() : Unit                           함수(메서드, 오퍼레이션)

+ sing(vol : Int) : Unit




클래스의 선언

● 빈 형태의 클래스 선언

class Bird { } // 내용이 비어있는 클래스 선언

class Bird // 중괄호는 생략 가능


● 클래스내에 프로퍼티와 메서드가 정의된 경우

class Bird {

// 프로퍼티...

// 메서드...

}



Ctrl + Shift + J - 스마트한 아래 줄 합치기



BirdClassDefine.kt

class Bird {                  // 1. 클래스의 정의

// 2. 프로퍼티들(속성)

var name : String = "mybird"

var wing : Int = 2

var beak : String = "short"

var color : String = "blue"


// 3. 메서드들(함수)

fun fly() = println("Fly wing : $wing")

fun sing(vol : Int) = println("Sing vol : $vol")

}


fun main() {

val coco = Bird()       // 4. 클래스의 생성자를 통한 객체의 생성

coco.color = "blue"   // 5. 객체의 프로퍼티에 값 할당


println("coco.color : ${coco.color}")      // 6. 객체의 멤버 프로퍼티 읽기

coco.fly()                                       // 7. 객체의 멤버 메서드의 사용

coco.sing(3)


}




객체(Object)

 - Bird 클래스란 일종의 선언일 뿐 실제 메모리에 존재해 실행되고 있는 것이 아님

 - 객체(Object)는 물리적인 메모리 영역에서 실행되고 있는 클래스의 실체

   - 따라서 클래스로부터 객체를 생성해 냄

   - 구체화 또는 인스턴스화(instantiate)되었다고 이야기할 수 있다.

   - 메모리에 올라간 객체를 인스턴스(instance)라고도 부름


Bird          ->instantiate          coco

val coco = Bird()                // Bird로부터 만들어진 객체 coco



반응형

'# 02 > 코틀린' 카테고리의 다른 글

[Kotlin] 상속과 다형성  (0) 2019.08.07
[Kotlin] 생성자  (0) 2019.08.06
[Kotlin] 흐름의 중단과 반환  (0) 2019.08.06
[Kotlin] 반복문  (0) 2019.07.18
[Kotlin] MVP Model 구성  (0) 2019.07.15