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

    Problema col richiamare un metodo

    ho una classe Persona:
    codice:
    public class Persona {
        private String nome;
        private String cognome;
        private String datanascita;
        private String cittanascita;
        private String email;
    
        public Persona(String nome, String cognome, String datanascita, String cittanascita, String email){
            this.nome=nome;
            this.cognome=cognome;
            this.datanascita=datanascita;
            this.cittanascita=cittanascita;
            this.email=email;
        }
    
        public String getNome(){
            return this.nome;
        }
        public String getCognome(){
            return this.nome;
        }
        public String getDataNascita(){
            return this.datanascita;
        }
        public String getCittaNascita(){
            return this.cittanascita;
        }
        public String getEmail(){
            return this.email;
        }
        public void setNome(String nome){
            this.nome=nome;
        }
        public void setCognome(String cognome){
            this.cognome=cognome;
        }
        public void setDataNascita(String datanascita){
            this.datanascita=datanascita;
        }
        public void setCittaNascita(String cittanascita){
            this.cittanascita=cittanascita;
        }
        public void setEmail(String email){
            this.email=email;
        }
    
        public String Stampa(){
            return nome+", "+cognome+", "+datanascita+", "+cittanascita+", "+email;
        }
    }
    ho una classe Studente che estende Persona:
    codice:
    package gestionepersone;
    import java.io.*;
    import javax.swing.*;
    
    public class Studente extends Persona{
        String matricola;
        String scuola;
    
        public Studente(String nome, String cognome, String datanascita, String cittanascita, String email, String matricola, String scuola){
            super(nome, cognome, datanascita, cittanascita, email);
            this.scuola=scuola;
        }
    
        public String matricola(Studente s){
            return s.getNome().substring(0,1)+s.getCognome().substring(0,1)+s.getDataNascita().substring(0,1)+s.getCittaNascita().substring(0,1)+s.getEmail().substring(0,1);
        }
    
        public boolean salvaStudenti(){
            try{
                FileWriter info=new FileWriter("studenti.txt", true);
                PrintWriter out=new PrintWriter(info);
                out.println(super.Stampa());
                out.close();
                return true;
            }
            catch(IOException e){
                JOptionPane.showMessageDialog(null, e.getMessage());
                return false;
            }
        }
    }
    e ho il mio jButton1MouseClicked:
    codice:
    .....
    
        private void jButton1MouseClicked(java.awt.event.MouseEvent evt) {                                      
            String data=jComboBox1.getSelectedItem().toString()+"/"+jComboBox2.getSelectedItem().toString()+"/"+jComboBox3.getSelectedItem().toString();
    
            if(controllaData(data)){
                Studente studenti=new Studente(jTextField1.getText(), jTextField2.getText(), jTextField3.getText(), jTextField4.getText(), jTextField5.getText(), jTextField6.getText(), data);
    
                jTextField1.setText("");
                jTextField2.setText("");
                jTextField3.setText("");
                jTextField4.setText("");
                jTextField5.setText("");
                jTextField6.setText(Studente.matricola());
                jTextField7.setText(data);
    
                studenti.salvaStudenti();
            }
        } 
    
    .....
    mi da un errore alla riga jTextField6:
    codice:
    matricola(gestionepersone.Studente) in gestionepersone.Studente cannot be applied to ()
                jTextField6.setText(Studente.matricola());
    è sicuramente un altro errore stupido ma nn so più dove sbattere la testa ....

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Problema col richiamare un metodo

    Originariamente inviato da fermat
    codice:
                Studente studenti=new Studente(jTextField1.getText(), 
    
                jTextField6.setText(Studente.matricola());
    matricola() è un metodo di "istanza" ma stai tentando di invocarlo su una classe, Studente.
    Volevi forse invocarlo su quella variabile 'studenti'? (che tra l'altro sarebbe più logico studente) Allora fai così.

    E per dirla tutta, nella classe Studente hai un campo 'matricola' a cui non assegni nulla. E questa classe comunque non dovrebbe fare I/O.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3

    Re: Re: Problema col richiamare un metodo

    Originariamente inviato da andbin
    matricola() è un metodo di "istanza" ma stai tentando di invocarlo su una classe, Studente.
    Volevi forse invocarlo su quella variabile 'studenti'? (che tra l'altro sarebbe più logico studente) Allora fai così.

    E per dirla tutta, nella classe Studente hai un campo 'matricola' a cui non assegni nulla. E questa classe comunque non dovrebbe fare I/O.
    intanto grazie come al solito!!
    senza di voi nn so come farei....

    poi vorrei sapere: perchè nn dovrebbe fare I/O??
    dove mi consigli di mettere i metodi per scrivere/leggere file??

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Re: Re: Problema col richiamare un metodo

    Originariamente inviato da fermat
    poi vorrei sapere: perchè nn dovrebbe fare I/O??
    Tra i concetti della OOP esiste il principio di "coesione". Una classe è tanto più coesa quanto più è focalizzata su un solo unico compito, obiettivo. E questo è buono.

    La tua classe Studente dovrebbe quindi solo limitarsi a "modellare" uno studente, definendo le proprietà che lo rappresentano e fornendo i metodi per gestire queste proprietà. Ma non fare es. I/O su disco, chiedere input all'utente, mostrare dialog o altro.

    Originariamente inviato da fermat
    dove mi consigli di mettere i metodi per scrivere/leggere file??
    Una classe es. IOStudente.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    allora a rieccomi qua.
    intanto grazie, il problema principale l'ho risolto!

    riguardo al tuo consiglio....ho creato una classe nominata IOStudente (tanto perchè nn sta gran fantasia) e gli ho buttato dentro il metodo SalvaStudenti:
    codice:
    public class IOStudente {
        public boolean salvaStudente(){
            try{
                FileWriter info=new FileWriter("studenti.txt", true);
                PrintWriter out=new PrintWriter(info);
                out.println();
                out.close();
                return true;
            }
            catch(IOException e){
                JOptionPane.showMessageDialog(null, e.getMessage());
                return false;
            }
        }
    }
    il mio problema però è come faccio a richiamare tutti i vari nome, cognome, ecc...nell'out.println come avevo fatto nella classe Studente (ti riposto la parte che mi interessa così mi faccio capire meglio):
    codice:
    ....
    
        public boolean salvaStudenti(){
            try{
                FileWriter info=new FileWriter("studenti.txt", true);
                PrintWriter out=new PrintWriter(info);
                out.println(super.Stampa()+", "+this.scuola+", "+matricola(this));
                out.close();
                return true;
            }
            catch(IOException e){
                JOptionPane.showMessageDialog(null, e.getMessage());
                return false;
            }
        }

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da fermat
    il mio problema però è come faccio a richiamare tutti i vari nome, cognome, ecc...
    public boolean salvaStudente(Studente studente) {

    E anzi, aggiungo: la tua classe IOStudente non dovrebbe nemmeno mettersi a mostrare dialog box o cose del genere. Pertanto non dovresti gestire lì la eccezione ma altrove. E far "uscire" le eccezioni da salvaStudente. Quindi:

    public void salvaStudente(Studente studente) throws IOException {
    .... niente catch qui dentro per IOException (al massimo il try/finally), solo I/O per lo studente ....
    }

    e dove lo invochi potrai gestire le eccezioni.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.