CS/OOP

    [Programming] 원시값과 컬렉션을 포장해야 하는 이유 - 래퍼 클래스, 일급 컬렉션(Wrapper class, First-class Collection)

    해당 포스팅은 Kotlin 언어를 기반으로 작성하였습니다. 모든 원시값과 문자열을 포장하자 우선, 모든 원시값과 문자열을 포장하자는 이야기에 대해 살펴보겠습니다. Lotto와 관련된 프로그램을 작성한다면, 원시값을 아래와 같은 코드로 검증해 줄 수 있습니다. val lottoNumber: Int = 45 class Lotto(lottoNumbers: List) : List by lottoNumbers { init { lottoNumbers.forEach { validateLottoNumber(it) } validateLottoSize(lottoNumbers) } fun validateLottoNumber(lottoNumber: Int) { require(lottoNumber in MIN_LOTTO_NUM..

    객체지향 프로그래밍 - OOP 상속(Inheritance) 이란?

    👀​ Study Goal 객체지향 프로그래밍(OOP) 상속 개념을 이해합니다. 상속의 필요성을 알아봅니다. 상속이 사용되는 사례를 코드로 작성해봅니다. ✏️ 상속(Inheritance) 이란? 상속(Inheritance)은 부모(Super) 클래스의 기능을 재사용(Reuse)하고 기능을 확장(Expansion)할 수 있는 객체지향 프로그래밍(OOP)의 특징입니다. 💡 상속은 왜(Why) 필요할까? 상속은 Super 클래스의 기능을 재사용하고, 확장할 수 있는 특징을 가지고 있습니다. 상속이 필요한 이유는 바로 재사용과 확장이라는 강력한 장점 때문입니다. 만약 상속이라는 개념이 존재하지 않는다면, 비슷한 기능을 구현할 때마다 동일한 코드를 작성해주어야 합니다. 객체지향적인 프로그래밍에 대해 처음 접해보시는..

    객체지향 프로그래밍 - OOP 캡슐화(Encapsulation) 이란?

    👀​ Study Goal 객체지향 프로그래밍(OOP) 캡슐화 개념을 이해합니다. 캡슐화의 필요성을 알아봅니다. 캡슐화가 사용되는 사례를 코드로 작성해봅니다. ✏️ 캡슐화(Encapsulation) 란? 캡슐화(Encapsulation)는 외부로부터 클래스의 정보를 감추고, 필드(field)와 메서드(method)에 대한 불필요한 접근을 막는 OOP 특징 중 하나입니다. 💡 캡슐화(Encapsulation)의 두 가지 측면 캡슐화(Encapsulation)에는 크게 2가지 측면이 있습니다. 1. 외부로부터 필드(field)와 메서드(method)에 대한 불필요한 접근을 막습니다. 2. 외부로부터 클래스의 구체적인 구현 내용을 감춥니다. 먼저, 필드와 메서드에 대한 불필요한 접근을 막아야 하는 이유를 예시를..

    객체지향 프로그래밍 - OOP 추상화(Abstraction) 이란?

    👀​ Study Goal 객체지향 프로그래밍(OOP) 추상화 개념을 이해합니다. 추상화가 사용되는 사례를 코드로 작성해봅니다. ✏️ 추상화(Abstraction) 란? 추상화(Abstraction)는 사물(Object)의 공통적인 특징을 하나의 개념으로 다루는 것을 의미합니다. ex) 개(Dog)와 고양이(Cat)를 동물(Animal)이라는 하나의 추상적인 개념으로 다룰 수 있습니다. 💡 추상화(Abstraction)의 예시(Example)는 무엇이 있을까? 객체지향 프로그래밍(OOP) 언어를 다루다 보면 추상화가 무엇인지 정확히는 모르더라도 명칭에 대해서는 많이 들어보았을 것입니다. 실제로 추상화를 적용하더라도 개념을 모르고 있는 상태라면, 추상화를 적용한지도 모르고 사용할 때가 많습니다. 위에 작성..