M3 - Programació estructurada / Continguts UF1: Classes

De wikiserver
Dreceres ràpides: navegació, cerca

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);*/
    }
    
}