본문 바로가기

전체 글

(124)
[Kotlin] 함수형 프로그래밍 - 익명 함수(Anonymous function), 람다식(lambda), 클로저(Closure) 개요 오늘은 코틀린의 함수형 프로그래밍에 대해서 알아보도록 하겠습니다. 코틀린은 객체 중심의 프로그래밍에 더하여 함수를 중심으로 한 프로그램의 설계가 가능합니다. 이러한 코틀린만의 프로그래밍 자유도는 개발자의 창의력을 최대로 발휘할 수 있도록 해주고 결과적으로 다양한 프로그램이 탄생할 수 있는 든든한 배경이 됩니다. 앞으로 몇 차례에 걸쳐 다양한 코틀린의 함수형 프로그래밍 기술에 대해 알아보도록 하겠습니다. 익명 함수(Anonymous function) vs 람다식(lambda) 함수는 함수의 이름, 함수의 파라미터, 그리고 반환 타입 총 세 가지의 정보로 구성되어 있습니다. 함수의 이러한 구조는 서로 다른 함수를 확실히 구분하는 이점이 되기도 하지만, 때로는 공통된 부분을 추려내거나 간략한 표현식으로 ..
[Kotlin] 코틀린의 심화 기술 - Object, Delegation, Type Aliases, Reflection 개요 오늘은 지난 포스팅에 이어 코틀린의 또 다른 특별 클래스 Object에 대해 알아보고 코틀린에서 제공하는 특수한 기능 Delegation, Type Aliases, Reflection에 대해서 알아보도록 하겠습니다. Object 코틀린의 Object 클래스를 보다 잘 이해하기 위하여 자바(Java)의 프로그래밍 디자인 패턴 하나를 살펴보도록 하겠습니다. 자바(Java)에서 객체(Class)는 프로그램 내에서 자신에 대한 정보를 기록할 메모리 주소를 할당받습니다. 그런데 객체(Class)를 잘 만들어서 사용의 빈도가 늘어날수록 자신에 대한 정보를 기록할 메모리 주소를 많이 필요로 하게 되므로 재사용성과 효율성은 상호 모순적인 관계에 놓이게 됩니다. 이에 따라 자바 개발자들은 이를 해결하는 방안을 모색..
[Kotlin] 코틀린 클래스 - 데이터 클래스(Data Class), 중첩 클래스(Nested Class), 내부 클래스(Inner Class), Sealed 클래스, Enum 개요 오늘은 코틀린의 클래스에 대해서 알아보도록 하겠습니다. 지금까지 코틀린을 통해 객체 및 객체지향 프로그래밍의 다양한 기술들을 살펴보았습니다. 현재 포스팅을 포함해서 앞으로는 두 편에 걸쳐 코틀린만의 `매력`을 볼 수 있는 다양한 클래스에 대해서 알아보겠습니다. 데이터 클래스, Data Class 코틀린에서는 데이터 클래스(Data Class)라는 것을 사용할 수 있습니다. 데이터 클래스는 클래스를 구성하는 프로퍼티의 getter/setter와 toString()을 기본으로 지원하는 코틀린의 클래스입니다. 이 클래스가 무슨 이점을 갖는지 모르시겠다고요? 아래의 코드를 통해 함께 살펴보도록 하겠습니다. class CommonClass { var number = 123 } data class DataCl..
[Kotlin] 객체지향 프로그래밍 - Companion Object 개요 오늘은 코틀린의 Companion Object에 대해서 알아보도록 하겠습니다. Java와 같은 언어로 개발된 프로그램은 운영체제로부터 메모리(RAM)의 공간을 할당받아야 합니다. 이러한 메모리의 할당 및 관리는 운영체제의 역할이자 중요한 작업 중 하나입니다. 하지만, 이러한 메모리는 무제한으로 쓸 수 없고 한정된 공간을 가지고 있습니다. 그러므로 프로그램을 개발할 때는 메모리를 최대한 효율적으로 사용하도록 프로그램을 설계해야 합니다. 만약 그렇지 않고 프로그램을 잘못 만들게 되면, 프로그램의 성능 저하와 때에 따라 프로그램이 비정상 종료되는 문제를 마주할 수 있습니다. 자바 메모리 구조 코틀린의 Companion Object를 살펴보기 전, 잠시 자바의 메모리 구조를 살펴보도록 하겠습니다. 코틀린의..
[Kotlin] 객체지향 프로그래밍 - 제네릭(Generic), in, out, where 개요 오늘은 코틀린의 제네릭(Generic)에 대해서 알아보도록 하겠습니다. 코틀린 제네릭(Generic) 개인적으로 객체지향 프로그래밍에서 정수는 제네릭(Generic)이라고 생각합니다. 지금까지 코틀린을 통한 객체지향 프로그래밍 기술에 대해 살펴보았는데요. 객체지향 프로그래밍(Object-Oriented Programming), 줄여서 OOP는 수많은 객체가 서로 얽히고설켜서 복잡한 프로그램을 동작하게 합니다. 특히, 상속(Inheritance)을 통해 객체 간의 상호 관계를 설정할 수 있으므로 최소한의 단위로 최대 경우의 수만큼 코드를 재사용할 수 있다는 점은 OOP의 가장 큰 매력이라고 생각합니다. 객체지향 언어를 사용하는 개발자는 이러한 OOP의 고유한 특성을 잘 활용하여, 중복되는 코드를 하나..
[Kotlin] 객체지향 프로그래밍 - 추상클래스와 인터페이스 개요 오늘은 코틀린의 추상 클래스(Abstract Class)와 인터페이스(Interface)에 대해서 알아보도록 하겠습니다. 코틀린의 추상 클래스(Abstract Class) 지난 포스팅에서는 코틀린의 상속에 대해서 알아보았습니다. 객체지향 프로그래밍에서 상속은 반복되는 코드의 작성을 줄여주고 유지 보수성을 편리하게 하는 이점이 있습니다. 그런데, 다음의 상황을 한 번 생각해보도록 하겠습니다. 코틀린 개발자가 자동차 시뮬레이션 프로그램을 만들기 위해 멋진 객체를 설계해보려고 합니다. 시뮬레이션 프로그램에서는 일반 자동차뿐만 아니라 이륜 오토바이도 함께 주행 테스트를 해야 한다고 합니다. 이때 자동차와 오토바이는 모두 엔진을 가지고 있으므로 공통점이 있지만, 자동차는 4기통 엔진이 들어가고, 오토바이는 ..
[Kotlin] 객체지향 프로그래밍 - 상속, this, super, 오버라이딩, 오버로딩 개요 오늘은 지난 포스팅에 이어서 객체지향 프로그래밍에 대해 더 자세히 알아보겠습니다. 객체지향 프로그래밍에서 프로그램 전체의 흐름을 결정하고 주관하는 것은 `객체`입니다. 객체지향 프로그래밍에서 프로그램을 구성하는 `객체(Object)`는 매우 중요한 역할을 담당합니다. 특히 이 `객체(Object)`들은 현실 세계에서 사람이 상호 간에 관계를 맺고 살아가는 것처럼 프로그램 내에서도 상호 관계를 맺어서 상호 작용하며 아무리 복잡한 작업이라도 수행할 수 있도록 임무를 수행합니다. 그러므로 오늘은 객체지향 프로그래밍에서 어떻게 객체(Object)가 서로 관계를 맺고 상호작용하는지 그 방법론에 대해 알아보도록 하겠습니다. 코틀린의 상속 코틀린에서 객체는 class 키워드를 통해 아래와 같이 선언할 수 있습니..
[Kotlin] 객체지향 프로그래밍 - 클래스, 생성자, init, 접근 제한자 개요 오늘은 코틀린의 클래스에 대해서 알아보도록 하겠습니다. 코틀린은 객체지향 프로그래밍 언어(Object-Oriented Programming Language)입니다. 오늘날 존재하는 모든 객체지향 프로그래밍 언어는 객체(Object)를 중심으로 프로그램이 설계됩니다. 프로그램을 실행하는 주체가 객체(Object)라는 개념은, 절차지향 프로그래밍 언어와 객체지향 프로그래밍 언어의 차이를 구분하는 중요한 기준점이 됩니다. 더 자세한 내용은 아래의 포스트를 참고하시면 좋을 것 같습니다. https://1-hee.tistory.com/94 [CS BASIC] 프로그램과 프로그래밍 그리고 프로그램 패러다임 오늘은 프로그램과 프로그래밍, 그리고 프로그래밍 패러다임에 대해서 다뤄보도록 하겠습니다. 요즈음에는 다양..