[Kotlin/코틀린] 5. 클래스(Class), 객체 지향 프로그래밍(Object-Oriented Programming, OOP)

2023. 12. 11. 01:05스파르타/Kotlin

3주차 '객체 지향 프로그래밍의 기초' 강의 내용 정리

 

 

 

5-1. 객체 지향 프로그래밍 (Object-Oriented Programming, OOP) 의 기본 개념

 

소프트웨어를 개발하는 프로그래밍의 주요 패러다임 중 하나이다.

프로그램을 명령어의 목록으로 보는 시각에서 벗어나 객체들의 집합으로 바라보고

이러한 객체들 간의 상호작용을 중심으로 소프트웨어를 설계한다.

객체란 데이터와 해당 데이터를 조작하는 메소드(함수)의 묶음으로 이루어져 있다.

객체는 클래스(Class)의 인스턴스(Instance)이며,

클래스는 객체를 생성하기 위한 일종의 틀이라고 볼 수 있다.

 

 

 

코틀린에서는 모든 것이 클래스 형태이므로 객체화 할 수 있다.

프로그램에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만든다.

객체들간의 적절한 결합을 통해 유지보수를 쉽게 한다.

 

 

객체 지향 프로그래밍 (Object-Oriented Programming, OOP) 의 특징

 

- 클래스

- 추상화

- 캡슐화

- 상속

- 다형성

 

 

 

참고자료

 

 

객체 지향 프로그래밍 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 객체 지향 프로그래밍(영어: Object-Oriented Programming, OOP)은 컴퓨터 프로그래밍의 패러다임 중 하나이다. 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목

ko.wikipedia.org

객체 지향 프로그래밍

 

 

 

절차적 프로그래밍 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 절차적 프로그래밍(節次的 프로그래밍, 영어: procedural programming)은 절차지향 프로그래밍 혹은 절차지향적 프로그래밍이라고도 불리는 프로그래밍 패러다임의

ko.wikipedia.org

절치 지향 프로그래밍 (C언어 등)

 

 

 

함수형 프로그래밍 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 함수형 프로그래밍(函數型 프로그래밍, 영어: functional programming)은 자료 처리를 수학적 함수의 계산으로 취급하고 상태와 가변 데이터를 멀리하는 프로그래밍

ko.wikipedia.org

함수형 프로그래밍 (SQL 등)

 

 

 

 

 

 

 

 

 

5-2. 클래스 (Class)

 

코틀린에서는 class 키워드를 활용해서 클래스를 만든다.

프로그램의 각 요소별 설계도라고 해석할 수 있다.

클래스에서는 정보(파라미터)와 행위(메소드)를 작성한다.

보통 하나의 파일은 한 개의 클래스를 의미하지만, 하나의 파일 안에 여러개의 클래스가 존재할 수 있다.

 

 

 

 

클래스의 기본 구조

 

class 클래스이름 {
    정보1
    정보2

    행위1
    행위2
}

 

 

 

 

데이터 클래스 (data class)

 

데이터를 보관하고 관리하는 데에 주로 사용되는 클래스의 특별한 형태이다.

데이터 클래스는 데이터를 표현하기 위한 목적으로 만들어졌으며,

자동으로 일부 표준 기능(유용한 메소드)을 생성해준다.

data class 클래스이름 {
    정보1
    정보2
}

 

 

 

유용한 메소드

hashCode() : 객체를 구분하기 위한 고유값을 리턴해준다.

equals() : 동일한 객체인지 비교해서 true 또는 false를 리턴해준다.

copy() : 현재 모든 객체의 정보를 복사해서 새로운 객체를 리턴해준다.

toString() : 현재 객체의 모든 정보(프로퍼티)를 예쁘게 출력해준다.

getXXX/setXXX(매개변수) : 변수의 값을 리턴하거나 설정해준다.

 

 

 

 

 

 

실드 클래스 (sealed class)

 

클래스 상속과 관련된 개념이다.

상속받을 수 있는 자식 클래스들을 미리 정의할 수 있다.

무분별한 상속을 방지할 수 있다.

컴파일 시점에 생성할 수 있는 자식을 알 수 있기 때문에 효율적으로 다형성을 구현한다.

sealed class 부모클래스 {
    class 자식클래스1 : 부모클래스생성자
    class 자식클래스2 : 부모클래스생성자
}

 

 

 

 

오브젝트 클래스 (object class)

 

Java에서 static 대신 사용하는 키워드이다.

프로그램을 실행하는 동시에 인스턴스화 한다.