M3 - Programació estructurada / Continguts UF1: Classes
De wikiserver
Nota: Aquest punt presenta una gran simplificació del funcionament real de les classes amb Java. A la unitat formativa 4 veurem realment com cal treballar.
- Les classes són estructures de dades complexes que permeten emmagatzemar dades de diferent o del mateix tipus.
- La seva forma és lliure i està en funció de les necessitats del programa.
- És necessari definir la seva forma indicant els seus camps.
- Cada camp pot ser qualsevol de qualsevol tipus de dades inclòs una altra classe.
- En el nivell en que estem, podem considerar la definició d’una classe com si definíssim una taula de base de dades.
Declaració de classes
- Una classe es declara en un fitxer separat amb extensió .java (des de Netbeans cal fer només “nova classe java”).
- No tindrà el mètode main donat que és una definició de tipus de dades.
- Cal declarar els atributs que volem que tingui aquest nou tipus de dades.
- Exemple Clase Client (fitxer Client.java) defineix un nou tipus de dades anomenat Client el qual pot guardar la informació bancària d’una persona:
public class Client{
String nom;
String nif;
String adreça;
long numCompte;
float saldo;
}
Declaració d’objectes
- Objecte són les variables que no són d'un tipus de dades primitiu.
- Declaració:
Client nouClient = new Client( );
- nouClient serà un objecte de tipus Client.
- Cada vegada que es crei un nou client s'ha de fer new Client();
- Taules de objectes Client:
Client taula [ ] = new Client [50];
- Aquí declarem una taula per emmagatzemar 50 clients.
- Si volem introduir 50 clients haurem de fer 50 new Client();
Accés als camps
- Els camps d’un objecte es tracten de forma individual.
- S'utilitza l’operador “punt” ( . ).
- Forma general: objecte.nom_camp
- Exemple:
nouClient.nom =”Albert Canela”; nouClient.nif=”32435465H”; nouClient.adreça=”Rue del Percebe, 13”; nouClient.numCompte= 34232312; nouClient.saldo=123.45;
Exemples
Omplir una taula de quatre clients i a continuació mostra les dades dels quatre clients:
- Només introduirem el nom i el NIF.
package clases;
import java.util.Scanner;
public class Clases {
public static void main(String[] args) {
Scanner teclat = new Scanner(System.in);
Client taulaCli [ ] = new Client [4];
for (int cli = 0; cli < taulaCli.length; cli++) {
Client nouClient = new Client( ); // o utilitzant la taula directament: taulaCli[cli] = new Client( );
System.out.println("Introdueix les dades del client " + (cli+1));
System.out.print("Nom: ");
nouClient.nom = teclat.nextLine();
System.out.print("NIF: ");
nouClient.nif = teclat.nextLine();
taulaCli[cli] = nouClient;
}
System.out.println("");
System.out.println("Dades de tots els clients ");
System.out.println("");
for (int cli = 0; cli < taulaCli.length; cli++) {
System.out.println("Client " + (cli+1));
System.out.println(" Nom: " + taulaCli[cli].nom );
System.out.println(" NIF: " + taulaCli[cli].nif );
}
}
}
package classes;
public class Fraccio {
int numerador;
int denominador;
}
package classes;
import java.util.Scanner;
public class Classes {
public static void main(String[] args) {
Scanner lector = new Scanner(System.in);
/*Fraccio f1 = new Fraccio();
Fraccio f2 = new Fraccio();
*/
Fraccio tf[] = new Fraccio[3];
/* tf[0] = new Fraccio();
tf[0].numerador = 5;
tf[0].denominador = 7;
System.out.println(tf[0].numerador);
tf[1] = new Fraccio();
tf[1].numerador = 7;
tf[1].denominador = 3;
System.out.println(tf[1].numerador);*/
/*
for (int i=0; i<tf.length; i++){
tf[i] = new Fraccio();
System.out.println("Numerador pos " + i +": ");
tf[i].numerador = lector.nextInt();
System.out.println("Denominador pos " + i +": ");
tf[i].numerador = lector.nextInt();
}*/
for (int i=0; i<tf.length; i++){
Fraccio fr = new Fraccio();
System.out.println("Numerador pos " + i +": ");
fr.numerador = lector.nextInt();
System.out.println("Denominador pos " + i +": ");
fr.denominador = lector.nextInt();
tf[i] = fr;
}
int suma = 0;
for (int i=0; i<tf.length; i++){
suma += tf[i].numerador;
System.out.println((float)tf[i].numerador / tf[i].denominador);
}
/*
if (f1 == f2) {
System.out.println("True");
}else{
System.out.println("False");
}
System.out.println(f1);
System.out.println(f2);
System.out.println(f1.numerador);
f1.numerador = 2; f1.denominador=2;
f2.numerador = 2; f2.denominador=2;
if (f1 == f2) {
System.out.println("True");
}else{
System.out.println("False");
}
System.out.println(f1);
System.out.println(f2);
f1=f2;
if (f1 == f2) {
System.out.println("True");
}else{
System.out.println("False");
}
f1.numerador = 4;
System.out.println(f2.numerador);*/
}
}