[perl] Perl에서 객체지향 프로그래밍

Perl은 주로 절차 지향적인 언어로 인식되지만, 객체지향 프로그래밍(OOP)을 지원합니다. 객체, 메서드, 클래스 및 상속을 사용하여 OOP의 주요 개념을 구현할 수 있습니다. 이 글에서는 Perl에서 OOP를 구현하는 방법에 대해 설명하겠습니다.

객체 생성과 메서드 호출

Perl에서 객체를 생성하기 위해서는 bless 함수를 사용합니다. bless 함수는 주어진 참조를 특정한 클래스나 패키지로 “블레싱(blessing)”하여 객체를 만듭니다. 아래는 예시 코드입니다.

# 클래스 정의
package MyClass;

sub new {
    my $class = shift;
    my $self = {};
    bless $self, $class;
    return $self;
}

sub do_something {
    my $self = shift;
    # 메서드 로직 구현
}

1;

# 객체 생성과 메서드 호출
my $obj = MyClass->new();
$obj->do_something();

위의 예시에서, new 메서드는 클래스를 bless하여 새 객체를 생성합니다. 그 후에는 객체를 통해 do_something과 같은 메서드를 호출할 수 있습니다.

상속

Perl에서 상속을 사용하여 클래스 간에 관계를 설정할 수 있습니다. 부모 클래스를 만들고, 이를 상속받아 새로운 클래스를 만드는 것이 가능합니다. 아래는 상속을 사용한 예시 코드입니다.

# 부모 클래스 정의
package ParentClass;

sub new {
    # 생성자 구현
}

sub parent_method {
    # 부모 클래스 메서드 구현
}

1;

# 자식 클래스 정의
package ChildClass;
use parent -norequire, 'ParentClass';  # 상속

sub new {
    my $class = shift;
    my $self = $class->SUPER::new(@_);  # 부모 클래스의 생성자 호출
    bless $self, $class;
    return $self;
}

sub child_method {
    # 자식 클래스 메서드 구현
}

1;

# 상속된 메서드 호출
my $obj = ChildClass->new();
$obj->parent_method();
$obj->child_method();

위의 코드에서, ChildClass는 ParentClass를 상속받았으며, parent_method와 child_method를 호출할 수 있습니다.

결론

이러한 방식으로, Perl에서도 객체지향 프로그래밍을 손쉽게 구현할 수 있습니다. 클래스, 객체, 메서드 및 상속을 활용하여 반복적이고 유지보수가 용이한 코드를 작성할 수 있습니다.

참고 자료: