R에서 연산자 Overloading


객체지향 프로그램언어는 다음과 같은 특징을 갖고 있다.
  1. Encapsulation
  2. Information Hiding
  3. Abstraction
  4. Inheritance
  5. Polymorphism
쉽지 않은 개념이라 OOPL을 배우면서 힘들어하는 부분이다.

이 중에서 호불호가 있는 Polymorphism의 연산자 다형성을 간단히 살펴보자.
Polymorphism(다형성)이란 서로 다른 클래스의 객체가 같은 메시지를 받았을 때 각자의 방식으로 동작할 수 있는 기능을 이야기한다. 이러한 다형성은 Overriding과 Overloading으로 구현이 되는데, 먼저 Overriding은 상속받은 함수를 재정의하여 사용할 수 있는 기능을 이야기한다. 그리고 Overloading은 같은 함수나 연산자라도 인수에 따라 다른 기능을 하는 것을 말한다.

예를 들어, 일반적으로 "+" 는 좌우측 Operand를 합하는 연산자지만, 빼거나 곱한 결과를 가져올 수 있게 연산자 Overloading을 할 수 있다. 처음 이야기를 들으면 쓸데없는 기능이라고 생각될 수 있지만, 객체지향을 구현하는 입장에서는 매우 강력한 기능일 수 있다.

R 언어에서도 쉽게 연산자 Overloading을 구현할 수 있다.
  `%+%` <- function(x, y) { paste0(x, y) }
이렇게 함수를 정의하고,
  "대한" %+% "민국"
라고 실행을 하면,
  "대한민국"
으로 결과가 나온다.

편리한 연산자 Overloading이지만 절제된 사용이 필요하다.

by 윤석용 Ph.D @ 2020.5.26

댓글

이 블로그의 인기 게시물

맥에서 여러 버전의 R을 사용하기

오즈와 오즈비, 왜 사용하지?

Raspberry PI에 R을 설치하여 빅데이터 분석