2020의 게시물 표시

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