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 classeCotxeque 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ètodeaccelerarde l'objectemeuCotxe.System.out.println("Marca: " + meuCotxe.marca);: Imprimeix el valor de l'atributmarcade l'objectemeuCotxe.
Exercicis Pràctics
Exercici 1: Creació d'una Classe i un Objecte
- Crea una classe anomenada
Personaamb els atributsnom,edatigènere. - Afegeix un mètode anomenat
saludarque imprimeixi un missatge de salutació. - Crea un objecte de la classe
Personai assigna valors als seus atributs. - Crida al mètode
saludarde 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
Personaper fer que els atributs siguin privats. - Afegeix mètodes
getisetper 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
