Introducció

En aquest tema, aprendrem a crear i utilitzar classes en PowerShell. Les classes són una característica poderosa que permet als desenvolupadors definir tipus de dades personalitzats amb propietats i mètodes. Això facilita la creació de codi més organitzat, modular i reutilitzable.

Conceptes Clau

  1. Classe: Una plantilla per crear objectes que defineix un conjunt de propietats i mètodes.
  2. Objecte: Una instància d'una classe.
  3. Propietat: Una variable dins d'una classe que emmagatzema dades.
  4. Mètode: Una funció dins d'una classe que defineix un comportament.

Creació d'una Classe

Sintaxi Bàsica

Per crear una classe en PowerShell, utilitzem la paraula clau class seguida del nom de la classe. Dins del bloc de la classe, definim les propietats i els mètodes.

class Persona {
    [string]$Nom
    [int]$Edat

    Persona([string]$nom, [int]$edat) {
        $this.Nom = $nom
        $this.Edat = $edat
    }

    [void]Saludar() {
        Write-Output "Hola, el meu nom és $($this.Nom) i tinc $($this.Edat) anys."
    }
}

Explicació del Codi

  • Definició de la Classe: class Persona { ... }
  • Propietats: [string]$Nom i [int]$Edat defineixen les propietats de la classe.
  • Constructor: Persona([string]$nom, [int]$edat) { ... } és un mètode especial que s'executa quan es crea una nova instància de la classe.
  • Mètode: [void]Saludar() { ... } és un mètode que imprimeix un missatge de salutació.

Creació d'Objectes

Per crear un objecte d'una classe, utilitzem l'operador New-Object o simplement cridem el constructor de la classe.

# Utilitzant el constructor
$persona1 = [Persona]::new("Joan", 30)

# Utilitzant New-Object
$persona2 = New-Object Persona("Maria", 25)

Ús de Propietats i Mètodes

Un cop hem creat un objecte, podem accedir a les seves propietats i mètodes utilitzant la notació de punt.

# Accés a les propietats
$persona1.Nom  # Retorna "Joan"
$persona1.Edat # Retorna 30

# Crida a un mètode
$persona1.Saludar() # Imprimeix "Hola, el meu nom és Joan i tinc 30 anys."

Exemple Pràctic

Definició de la Classe

class Cotxe {
    [string]$Marca
    [string]$Model
    [int]$Any

    Cotxe([string]$marca, [string]$model, [int]$any) {
        $this.Marca = $marca
        $this.Model = $model
        $this.Any = $any
    }

    [void]Descripcio() {
        Write-Output "Aquest cotxe és un $($this.Marca) $($this.Model) de l'any $($this.Any)."
    }
}

Creació d'Objectes i Ús

# Creació d'objectes
$cotxe1 = [Cotxe]::new("Toyota", "Corolla", 2020)
$cotxe2 = [Cotxe]::new("Ford", "Mustang", 1967)

# Accés a les propietats
$cotxe1.Marca  # Retorna "Toyota"
$cotxe2.Any    # Retorna 1967

# Crida a un mètode
$cotxe1.Descripcio() # Imprimeix "Aquest cotxe és un Toyota Corolla de l'any 2020."
$cotxe2.Descripcio() # Imprimeix "Aquest cotxe és un Ford Mustang de l'any 1967."

Exercicis Pràctics

Exercici 1: Crear una Classe de Llibre

  1. Defineix una classe Llibre amb les propietats Titol, Autor i Pagines.
  2. Crea un constructor que inicialitzi aquestes propietats.
  3. Afegeix un mètode Descripcio que imprimeixi una descripció del llibre.

Solució

class Llibre {
    [string]$Titol
    [string]$Autor
    [int]$Pagines

    Llibre([string]$titol, [string]$autor, [int]$pagines) {
        $this.Titol = $titol
        $this.Autor = $autor
        $this.Pagines = $pagines
    }

    [void]Descripcio() {
        Write-Output "El llibre '$($this.Titol)' de $($this.Autor) té $($this.Pagines) pàgines."
    }
}

# Creació d'un objecte de la classe Llibre
$llibre1 = [Llibre]::new("1984", "George Orwell", 328)
$llibre1.Descripcio() # Imprimeix "El llibre '1984' de George Orwell té 328 pàgines."

Exercici 2: Crear una Classe de Pel·lícula

  1. Defineix una classe Pelicula amb les propietats Titol, Director i Duracio.
  2. Crea un constructor que inicialitzi aquestes propietats.
  3. Afegeix un mètode Descripcio que imprimeixi una descripció de la pel·lícula.

Solució

class Pelicula {
    [string]$Titol
    [string]$Director
    [int]$Duracio

    Pelicula([string]$titol, [string]$director, [int]$duracio) {
        $this.Titol = $titol
        $this.Director = $director
        $this.Duracio = $duracio
    }

    [void]Descripcio() {
        Write-Output "La pel·lícula '$($this.Titol)' dirigida per $($this.Director) té una duració de $($this.Duracio) minuts."
    }
}

# Creació d'un objecte de la classe Pelicula
$pelicula1 = [Pelicula]::new("Inception", "Christopher Nolan", 148)
$pelicula1.Descripcio() # Imprimeix "La pel·lícula 'Inception' dirigida per Christopher Nolan té una duració de 148 minuts."

Conclusió

En aquest tema, hem après a crear i utilitzar classes en PowerShell. Les classes ens permeten definir tipus de dades personalitzats amb propietats i mètodes, facilitant la creació de codi més organitzat i modular. Hem vist com definir una classe, crear objectes i accedir a les seves propietats i mètodes. També hem practicat aquests conceptes amb exercicis pràctics. En el proper tema, explorarem com treballar amb XML i JSON en PowerShell.

Curs de PowerShell

Mòdul 1: Introducció a PowerShell

Mòdul 2: Scripting Bàsic

Mòdul 3: Treballant amb Objectes

Mòdul 4: Tècniques Avançades de Scripting

Mòdul 5: Automatització i Programació de Tasques

Mòdul 6: Remotització amb PowerShell

Mòdul 7: Funcions Avançades de PowerShell

Mòdul 8: PowerShell i DevOps

Mòdul 9: Millors Pràctiques i Consells Avançats

© Copyright 2024. Tots els drets reservats