Introducció

La programació orientada a objectes (POO) és un paradigma de programació que utilitza "objectes" per dissenyar aplicacions i programes. Els objectes poden contenir dades, en forma de camps, sovint coneguts com a atributs; i codi, en forma de procediments, sovint coneguts com a mètodes. Perl suporta la programació orientada a objectes, i en aquest mòdul aprendrem com implementar-la.

Conceptes Clau

  1. Classes i Objectes: Una classe és un pla per a crear objectes (instàncies de la classe). Els objectes són instàncies de classes.
  2. Mètodes: Són subrutines definides dins d'una classe que operen sobre objectes de la classe.
  3. Atributs: Són variables que pertanyen a un objecte.
  4. Constructors: Són mètodes especials que es criden quan es crea un objecte.

Creació d'una Classe

Definició d'una Classe

En Perl, una classe és simplement un paquet (package). Aquí teniu un exemple bàsic de com definir una classe:

package Animal;

# Constructor
sub new {
    my $class = shift;
    my $self = {
        name => shift,
        sound => shift,
    };
    bless $self, $class;
    return $self;
}

# Mètode per obtenir el nom
sub get_name {
    my $self = shift;
    return $self->{name};
}

# Mètode per obtenir el so
sub get_sound {
    my $self = shift;
    return $self->{sound};
}

1; # El paquet ha de retornar un valor veritable

Explicació del Codi

  • Paquet: package Animal; defineix un nou paquet anomenat Animal, que serà la nostra classe.
  • Constructor: sub new és el constructor de la classe. Utilitza bless per associar una referència hash amb la classe.
  • Atributs: name i sound són atributs de la classe.
  • Mètodes: get_name i get_sound són mètodes que retornen els valors dels atributs name i sound, respectivament.

Creació d'Objectes

Per crear un objecte de la classe Animal, utilitzem el mètode new:

use Animal;

my $dog = Animal->new("Dog", "Bark");
print "Animal: " . $dog->get_name() . "\n"; # Animal: Dog
print "Sound: " . $dog->get_sound() . "\n"; # Sound: Bark

Explicació del Codi

  • Creació d'Objecte: my $dog = Animal->new("Dog", "Bark"); crea un nou objecte de la classe Animal.
  • Ús de Mètodes: get_name i get_sound s'utilitzen per obtenir els valors dels atributs de l'objecte.

Herència

La herència permet que una classe (subclasse) hereti els atributs i mètodes d'una altra classe (superclasse).

Exemple d'Herència

package Dog;
use parent 'Animal';

sub bark {
    my $self = shift;
    return "Woof!";
}

1;

Explicació del Codi

  • Paquet: package Dog; defineix una nova classe Dog.
  • Herència: use parent 'Animal'; fa que Dog hereti de Animal.
  • Nou Mètode: bark és un mètode específic de la classe Dog.

Ús de la Subclasse

use Dog;

my $dog = Dog->new("Dog", "Bark");
print "Animal: " . $dog->get_name() . "\n"; # Animal: Dog
print "Sound: " . $dog->get_sound() . "\n"; # Sound: Bark
print "Bark: " . $dog->bark() . "\n"; # Bark: Woof!

Exercicis Pràctics

Exercici 1: Crear una Classe Cat

  1. Defineix una classe Cat que hereti de Animal.
  2. Afegeix un mètode meow que retorni "Meow!".

Solució

package Cat;
use parent 'Animal';

sub meow {
    my $self = shift;
    return "Meow!";
}

1;

Exercici 2: Crear i Utilitzar un Objecte Cat

  1. Crea un objecte de la classe Cat.
  2. Utilitza els mètodes get_name, get_sound i meow.

Solució

use Cat;

my $cat = Cat->new("Cat", "Meow");
print "Animal: " . $cat->get_name() . "\n"; # Animal: Cat
print "Sound: " . $cat->get_sound() . "\n"; # Sound: Meow
print "Meow: " . $cat->meow() . "\n"; # Meow: Meow!

Resum

En aquest mòdul, hem après els conceptes bàsics de la programació orientada a objectes en Perl, incloent la creació de classes i objectes, l'ús de mètodes i atributs, i la implementació de la herència. Aquests conceptes són fonamentals per escriure codi Perl modular i reutilitzable. En el següent mòdul, explorarem expressions regulars avançades en Perl.

© Copyright 2024. Tots els drets reservats