객체 지향 프로그래밍
- 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 |