La Programació Orientada a Objectes (POO) és un paradigma de programació que utilitza "objectes" i les seves interaccions per dissenyar aplicacions i programes informàtics. Aquest mòdul introdueix els conceptes bàsics de la POO, que són fonamentals per a la programació en Java.

Conceptes Clau de la POO

  1. Objectes: Un objecte és una instància d'una classe. Representa una entitat del món real amb un estat i un comportament.
  2. Classes: Una classe és un plànol o plantilla per crear objectes. Defineix les propietats (atributs) i els comportaments (mètodes) que els objectes d'aquesta classe tindran.
  3. Atributs: Són les característiques o propietats d'un objecte. També es coneixen com a variables d'instància.
  4. Mètodes: Són les funcions o procediments que defineixen els comportaments dels objectes.
  5. Encapsulació: És el mecanisme de restringir l'accés a alguns components d'un objecte i només exposar-ne els necessaris.
  6. Herència: És el mecanisme pel qual una classe pot heretar les propietats i mètodes d'una altra classe.
  7. Polimorfisme: És la capacitat d'un objecte de prendre múltiples formes. Permet que una interfície comuna sigui utilitzada per diferents tipus d'objectes.
  8. Abstracció: És el procés de simplificar la complexitat mostrant només els detalls essencials i amagant els detalls d'implementació.

Exemples Pràctics

Creació d'una Classe i un Objecte

// Definició d'una classe anomenada "Cotxe"
public class Cotxe {
    // Atributs de la classe
    String marca;
    String model;
    int any;

    // Mètode de la classe
    void accelerar() {
        System.out.println("El cotxe està accelerant.");
    }
}

// Classe principal per crear objectes de la classe Cotxe
public class Main {
    public static void main(String[] args) {
        // Creació d'un objecte de la classe Cotxe
        Cotxe meuCotxe = new Cotxe();
        
        // Assignació de valors als atributs
        meuCotxe.marca = "Toyota";
        meuCotxe.model = "Corolla";
        meuCotxe.any = 2020;
        
        // Crida al mètode accelerar
        meuCotxe.accelerar();
        
        // Impressió dels atributs
        System.out.println("Marca: " + meuCotxe.marca);
        System.out.println("Model: " + meuCotxe.model);
        System.out.println("Any: " + meuCotxe.any);
    }
}

Explicació del Codi

  1. Definició de la Classe:

    • public class Cotxe { ... }: Defineix una classe anomenada Cotxe.
    • String marca;, String model;, int any;: Són els atributs de la classe Cotxe.
    • void accelerar() { ... }: És un mètode de la classe Cotxe que imprimeix un missatge.
  2. Creació d'un Objecte:

    • Cotxe meuCotxe = new Cotxe();: Crea un objecte de la classe Cotxe.
    • meuCotxe.marca = "Toyota";, meuCotxe.model = "Corolla";, meuCotxe.any = 2020;: Assigna valors als atributs de l'objecte meuCotxe.
    • meuCotxe.accelerar();: Crida al mètode accelerar de l'objecte meuCotxe.
    • System.out.println("Marca: " + meuCotxe.marca);: Imprimeix el valor de l'atribut marca de l'objecte meuCotxe.

Exercicis Pràctics

Exercici 1: Creació d'una Classe i un Objecte

  1. Crea una classe anomenada Persona amb els atributs nom, edat i gènere.
  2. Afegeix un mètode anomenat saludar que imprimeixi un missatge de salutació.
  3. Crea un objecte de la classe Persona i assigna valors als seus atributs.
  4. Crida al mètode saludar de l'objecte creat.

Solució

public class Persona {
    String nom;
    int edat;
    String genere;

    void saludar() {
        System.out.println("Hola, el meu nom és " + nom);
    }
}

public class Main {
    public static void main(String[] args) {
        Persona persona = new Persona();
        persona.nom = "Joan";
        persona.edat = 30;
        persona.genere = "Masculí";
        
        persona.saludar();
        
        System.out.println("Nom: " + persona.nom);
        System.out.println("Edat: " + persona.edat);
        System.out.println("Gènere: " + persona.genere);
    }
}

Exercici 2: Encapsulació

  1. Modifica la classe Persona per fer que els atributs siguin privats.
  2. Afegeix mètodes get i set per accedir i modificar els atributs.

Solució

public class Persona {
    private String nom;
    private int edat;
    private String genere;

    // Mètodes get i set per l'atribut nom
    public String getNom() {
        return nom;
    }

    public void setNom(String nom) {
        this.nom = nom;
    }

    // Mètodes get i set per l'atribut edat
    public int getEdat() {
        return edat;
    }

    public void setEdat(int edat) {
        this.edat = edat;
    }

    // Mètodes get i set per l'atribut genere
    public String getGenere() {
        return genere;
    }

    public void setGenere(String genere) {
        this.genere = genere;
    }

    void saludar() {
        System.out.println("Hola, el meu nom és " + nom);
    }
}

public class Main {
    public static void main(String[] args) {
        Persona persona = new Persona();
        persona.setNom("Joan");
        persona.setEdat(30);
        persona.setGenere("Masculí");
        
        persona.saludar();
        
        System.out.println("Nom: " + persona.getNom());
        System.out.println("Edat: " + persona.getEdat());
        System.out.println("Gènere: " + persona.getGenere());
    }
}

Resum

En aquesta secció, hem introduït els conceptes bàsics de la Programació Orientada a Objectes (POO) i hem vist com crear classes i objectes en Java. També hem explorat la importància de l'encapsulació i com utilitzar mètodes get i set per accedir i modificar els atributs privats d'una classe. Aquests conceptes són fonamentals per a la programació en Java i seran la base per als temes més avançats que veurem en els següents mòduls.

Curs de Programació en Java

Mòdul 1: Introducció a Java

Mòdul 2: Flux de Control

Mòdul 3: Programació Orientada a Objectes

Mòdul 4: Programació Orientada a Objectes Avançada

Mòdul 5: Estructures de Dades i Col·leccions

Mòdul 6: Gestió d'Excepcions

Mòdul 7: Entrada/Sortida de Fitxers

Mòdul 8: Multithreading i Concurrència

Mòdul 9: Xarxes

Mòdul 10: Temes Avançats

Mòdul 11: Frameworks i Llibreries de Java

Mòdul 12: Construcció d'Aplicacions del Món Real

© Copyright 2024. Tots els drets reservats