Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Creazione Registratore di cassa?

    Buonasera
    sto svolgendo un'esercizio che simula un registratore di cassa, dopo aver creato le varie classi e compilato il programma e averne verificato il funzionamento, inserisco il prezzo tramite input del prodotto ma non viene applicato il metodo dello sconto. Come faccio a richiamare un metodo di una classe in un'altra?

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,179
    Dipende.
    Se il metodo è statico è sufficiente richiamarlo anteponendo il nome della classe (es: Integer.parseInt("15") -> parseInt() è un metodo statico della classe Integer)

    Se il metodo è di istanza, allora devi avere un oggetto di tale classe a disposizione su cui richiamare il metodo (creando, quindi, un oggetto della classe che contiene il metodo o passando un oggetto giò creato alla classe che ne ha bisogno).

    Supponendo, quindi, che la tua classe si chiami Pippo e che il metodo si chiami "applicaSconto()":
    codice:
    Pippo p = new Pippo();   // Creo un oggetto della classe Pippo
    p.applicaSconto( ... );   // Richiamo il metodo passandogli i parametri di cui ha bisogno

    Ciao.
    Ultima modifica di LeleFT; 11-01-2021 a 14:41
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Quote Originariamente inviata da LeleFT Visualizza il messaggio
    Dipende.
    Se il metodo è statico è sufficiente richiamarlo anteponendo il nome della classe (es: Integer.parseInt("15") -> parseInt() è un metodo statico della classe Integer)

    Se il metodo è di istanza, allora devi avere un oggetto di tale classe a disposizione su cui richiamare il metodo (creando, quindi, un oggetto della classe che contiene il metodo o passando un oggetto giò creato alla classe che ne ha bisogno).

    Supponendo, quindi, che la tua classe si chiami Pippo e che il metodo si chiami "applicaSconto()":
    codice:
    Pippo p = new Pippo();   // Creo un oggetto della classe Pippo
    p.applicaSconto( ... );   // Richiamo il metodo passandogli i parametri di cui ha bisogno

    Ciao.
    Grazie per la risposta, ma siccome deve applicare lo sconto ad una determinata condizione quando inserisco il prezzo, mi dà errore che non riconosce l'oggetto anche se è stato creato T.T

    Ciao

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,179
    Evidentemente stai sbagliando qualcos'altro.
    Posta il codice, altrimenti non possiamo saperne nulla di più.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Quote Originariamente inviata da LeleFT Visualizza il messaggio
    Evidentemente stai sbagliando qualcos'altro.
    Posta il codice, altrimenti non possiamo saperne nulla di più.


    Ciao.
    Ciao
    questo è il codice:
    https://github.com/Samsara95426/Cash-register.git


  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,179
    Magari qualche indicazione in più sarebbe utile.

    Ho trovato la classe col main() (Receipt.java) e vedo che

    1) Non potrà mai compilare: nel main viene dichiarato e istanziato un array di tipo Utente, classe che non esiste... esiste la classe User.

    2) Istanzi un array di Utente con 1 solo elemento (perchè?), ma non usi mai l'array: non crei nessun oggetto Utente e non ci fai nulla... leggi le informazioni da tastiera e le butti via.

    3) Istanzi un array di 5 oggetti Product che non usi da nessuna parte: non crei nemmeno un oggetto Product. La classe col main si limita a leggere da tastiera un po' di informazioni per poi buttarle via e non farci nulla.

    Direi che il problema non è tanto l'applicazione dello sconto, è più a monte: non istanzi nessun oggetto, non ne richiami nessun metodo, leggi delle informazioni che poi butti via.

    Se la classe si chiama User, dovresti creare un oggetto User (non Utente):
    codice:
    User user = new User(name, surname, idcard);

    Da qualche parte devi istanziare i prodotti del tipo corretto:
    codice:
    p[i] = new Food( ... );
    
    oppure
    
    p[i] = new NonFood( ... );

    Quando avrai istanziato questi oggetti, potrai invocare su di essi i metodi che hai definito.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Tag per questa discussione

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 © 2021 vBulletin Solutions, Inc. All rights reserved.