Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 35

Discussione: chiarimenti su java

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2015
    Messaggi
    103

    chiarimenti su java

    salve a tutti, sto studiando java,ma avrei qualche dubbio che necessita di chiarimento...

    codice:
    package javaapplication4;
    import java.util.*;
    /**
     *
     * @author user2
     */
    public class dado {
        int facce;
        String colore;
        
        
    }
    
    
    package javaapplication4;
    
    
    /**
     *
     * @author user2
     */
    public class JavaApplication4 {
    
    
        /**
         * @param args the command line arguments
         */
        public static void main(String[] args) {
            dado s;
            s.facce;
            // TODO code application logic here
        }
        
    }

    ecco quel "s" di tipo dado sarebbe un oggetto o una variabile? e può accedere a tutte le variabili e i metodi della classe dado?
    Ultima modifica di LeleFT; 26-01-2015 a 13:11 Motivo: Aggiunti i tag CODE

  2. #2
    Quel "s" così come lo hai postato non n'è nulla al momento, nel senso che hai dichiarato una variabile "s" di tipo "dado" ma non l'hai ancora instanziata quindi come di dicevo non è ancora nulla, infatti se esegui quel codice vedrai una bella null pointer exception. Ovviamente una volta instanziata con "new dado()" allora potrai accedere alle proprietà e ai metodi "visibili" di quell'oggetto.

    P.S
    Dato che sei agli inizi mi permetto di darti un consiglio, incomincia subito ad usare lo standard si nomenclatura, il nome della classe si scrive sempre con la prima lettera maiuscola, seguendo la struttura CamelCase.
    se vuoi avere maggiori info ti rimando al sito della oracle

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2015
    Messaggi
    103
    grazie mille, altra domanda...usando new dado() creo un oggetto di tipo dado dal quale posso accedere a tutte le variabili della classe, ciò vuol dire che creando un altro oggetto di tipo dado di nome "P" ,ogni oggetto avra un suo attributo "facce" diverso da quello dell'altro oggetto? o è sempre la stessa variabile facce ma messa in comune?

  4. #4
    Dichiarando un'altro oggetto ovviamente esso avrà le sue proprietà e valori disgiunti dall'altea istanza

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2015
    Messaggi
    103
    grazie ancora, scusami se approfitto della tua disponibilità, ma potresti spiegarmi allora l'utilità della variabile "Piattaforma p" nel seguente codice, visto che non è un oggetto e che quindi non posso farci azioni riguardanti la classe?

    package produttoreconsumatore;


    public class ProduttoreConsumatore {


    public static void main(String[] args) {
    Piattaforma miaPiattaforma = new Piattaforma();
    new Produttore(miaPiattaforma);
    new Consumatore(miaPiattaforma);
    }

    }



    package produttoreconsumatore;

    class Piattaforma {
    int dato;
    boolean datoSuPiattaforma=false;
    synchronized int prendi()
    {
    if (!datoSuPiattaforma)
    try {
    wait(); //sospeso in attesa del nuovo dato da leggere
    }catch(InterruptedException e) {}
    System.out.println("Preso: "+dato);
    datoSuPiattaforma=false;
    notify(); //segnala che la piattaforma è libera
    return dato;
    }
    synchronized void metti(int d)
    {
    if(datoSuPiattaforma)
    try {
    wait(); //sospeso in attesa che il vassoio si liberi
    } catch(InterruptedException e) {}
    //
    dato=d;
    datoSuPiattaforma=true;
    System.out.println("Depositato sulla piattaforma: "+d);
    notify();//segnala che il nuovo dato è disponibile
    }
    }




    package produttoreconsumatore;

    public class Produttore implements Runnable{
    Piattaforma p;
    Produttore(Piattaforma unaPiattaforma)
    {
    p=unaPiattaforma;
    new Thread(this, "Produttore"). start();
    }
    public void run()
    {
    for(int i=0; i<60; i++)
    {
    int num=(int)(Math.random()*10000);
    p.metti(num);
    }
    }
    }



    package produttoreconsumatore;

    public class Consumatore implements Runnable{
    Piattaforma p;
    Consumatore(Piattaforma unaPiattaforma)
    {
    p=unaPiattaforma;
    new Thread(this, "Consumatore"). start();
    }
    public void run()
    {
    for(int i=0; i<60; i++)
    {
    p.prendi();
    }
    }
    }


    in particolare non riesco a capire cosa fa
    new Consumatore(miaPiattaforma);

    e come detto prima l'utilità di "Piattaforma p"

  6. #6
    Consumatore(Piattaforma piattaforma) si chiama costruttore di classe e come dice il nome serve a costruire un oggetto. In particolare quel costruttore accetta come parametro formale un oggetto di tipo Piattaforma che poi assegna alla sua proprietà "p" che quindi viene diciamo inizializzata al valore del parametro passato( non è formalmente corretta questa affermazione dato che quello che viene assegnato è un riferimento e non un valore, ma non mettiamo troppa carne al fuoco).
    Quindi con new Consumatore(miaPiattaforma) vai ad invocare il costruttore della classe Consumatore passando come parametro "miaPiattaforma".
    Una domanda mi sorge spontanea, stai seguendo un testo oppure stai andando diciamo a mano libera? Dico questo perchè prima di affrontare il problema del multi threading si dovrebbero acquisire concetti un po' più basilari come appunto i costruttori di classe.

  7. #7
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Il codice lo potresti postare usando il tag CODE? Altrimenti diventa illeggibile...

    Comunque, se stai iniziando a studiare java lascia perdere il multithreading almeno finché non avrai chiari i concetti base (su cui, stando a quello che chiedi, vedo tantissime lacune)
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2015
    Messaggi
    103
    lo sto studiando a scuola, sò bene cosa fa un costruttore, ma sono abituato alla forma "classica" Piattaforma p=new Piattaforma();
    e non riesco a capire perchè si usa questa altra forma di costruttore passando il parametro alla variabile p invece che usare quella citata prima

  9. #9
    Utente di HTML.it
    Registrato dal
    Jan 2015
    Messaggi
    103
    e poi, piattaforma p è una variabile giusto? ciò vuol dire che non posso accedervi alle variabili di classe ne ai metodi, e quindi come posso usarla?(non mi riferisco a questo particolare codice)

  10. #10
    Quote Originariamente inviata da fenigo69 Visualizza il messaggio
    lo sto studiando a scuola, sò bene cosa fa un costruttore, ma sono abituato alla forma "classica" Piattaforma p=new Piattaforma();
    e non riesco a capire perchè si usa questa altra forma di costruttore passando il parametro alla variabile p invece che usare quella citata prima
    Bè se a scuola ti hanno spiegato cos'è un costruttore, ti avranno spiegato anche che non esistono solo costruttori di forma "classica" (si chiama default constructor).
    Ma, per fortuna con solo quello di default ci faresti poco, si possono definire ulteriori costruttori che permettono di "inviare" valori a quella determinata instanza.
    e poi, piattaforma p è una variabile giusto? ciò vuol dire che non posso accedervi alle variabili di classe ne ai metodi, e quindi come posso usarla?(non mi riferisco a questo particolare codice)
    Ancora non ho capito cosa intendi tu per variabile.... Sicuramente non è quello che intendo io, se magari c'è lo spieghi ti possiamo correggere.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.