Diferència entre revisions de la pàgina «M3 - Programació estructurada / Continguts UF1: Classes»
De wikiserver
(→Exemple complert) |
|||
(Una revisió intermèdia per un altre usuari que no es mostra) | |||
Línia 59: | Línia 59: | ||
− | == | + | |
+ | ==Exemples== | ||
Omplir una taula de quatre clients i a continuació mostra les dades dels quatre clients: | Omplir una taula de quatre clients i a continuació mostra les dades dels quatre clients: | ||
Línia 96: | Línia 97: | ||
} | } | ||
+ | </source> | ||
+ | <!----> | ||
+ | <source lang="java"> | ||
+ | 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);*/ | ||
+ | } | ||
+ | |||
+ | } | ||
+ | |||
</source> | </source> |
Revisió de 19:47, 10 març 2022
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);*/
}
}