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
- Objectes: Un objecte és una instància d'una classe. Representa una entitat del món real amb un estat i un comportament.
- 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.
- Atributs: Són les característiques o propietats d'un objecte. També es coneixen com a variables d'instància.
- Mètodes: Són les funcions o procediments que defineixen els comportaments dels objectes.
- Encapsulació: És el mecanisme de restringir l'accés a alguns components d'un objecte i només exposar-ne els necessaris.
- Herència: És el mecanisme pel qual una classe pot heretar les propietats i mètodes d'una altra classe.
- 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.
- 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
-
Definició de la Classe:
public class Cotxe { ... }
: Defineix una classe anomenadaCotxe
.String marca;
,String model;
,int any;
: Són els atributs de la classeCotxe
.void accelerar() { ... }
: És un mètode de la classeCotxe
que imprimeix un missatge.
-
Creació d'un Objecte:
Cotxe meuCotxe = new Cotxe();
: Crea un objecte de la classeCotxe
.meuCotxe.marca = "Toyota";
,meuCotxe.model = "Corolla";
,meuCotxe.any = 2020;
: Assigna valors als atributs de l'objectemeuCotxe
.meuCotxe.accelerar();
: Crida al mètodeaccelerar
de l'objectemeuCotxe
.System.out.println("Marca: " + meuCotxe.marca);
: Imprimeix el valor de l'atributmarca
de l'objectemeuCotxe
.
Exercicis Pràctics
Exercici 1: Creació d'una Classe i un Objecte
- Crea una classe anomenada
Persona
amb els atributsnom
,edat
igènere
. - Afegeix un mètode anomenat
saludar
que imprimeixi un missatge de salutació. - Crea un objecte de la classe
Persona
i assigna valors als seus atributs. - 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ó
- Modifica la classe
Persona
per fer que els atributs siguin privats. - Afegeix mètodes
get
iset
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
- Introducció a Java
- Configuració de l'Entorn de Desenvolupament
- Sintaxi i Estructura Bàsica
- Variables i Tipus de Dades
- Operadors
Mòdul 2: Flux de Control
Mòdul 3: Programació Orientada a Objectes
- Introducció a la POO
- Classes i Objectes
- Mètodes
- Constructors
- Herència
- Polimorfisme
- Encapsulació
- Abstracció
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
- Lectura de Fitxers
- Escriptura de Fitxers
- Fluxos de Fitxers
- BufferedReader i BufferedWriter
- Serialització
Mòdul 8: Multithreading i Concurrència
- Introducció al Multithreading
- Creació de Fils
- Cicle de Vida dels Fils
- Sincronització
- Utilitats de Concurrència
Mòdul 9: Xarxes
- Introducció a les Xarxes
- Sockets
- ServerSocket
- DatagramSocket i DatagramPacket
- URL i HttpURLConnection