Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    16

    [Java] Ereditare metodi e variabili

    Ho un programma formato da 3 classi.
    Una classe serve per la lettura di un documento di testo, poi splittato in un array.
    Le altre 2 classi, fano operazioni su questo array ma purtroppo fino ad ora, m è toccato rifare la lettura del file con conseguente ciclo per splittarlo in un array e poi fare le operzioni che dovevo fare.
    Allora io mi domando :
    è possibile fare si che un metodo di una classe riesca a vedere un array dichiarato dentro un while a sua volta dentro un metodo di un'altra classe?
    altrimenti ogni volta, come detto, mi tocca rifare la lettura..in questo modo java non è più, nel mio casa, un linguaggio ad oggetti...

    Per favore aiutatemi che ne ho molto bisogno.
    Grazie anticipatamente.

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

    Re: [Java] Ereditare metodi e variabili

    Originariamente inviato da F3aR07
    è possibile fare si che un metodo di una classe riesca a vedere un array dichiarato dentro un while a sua volta dentro un metodo di un'altra classe?
    altrimenti ogni volta, come detto, mi tocca rifare la lettura..in questo modo java non è più, nel mio casa, un linguaggio ad oggetti...
    Java è un linguaggio ad oggetti!! La questione è solo quella che per poter usare bene e seriamente un linguaggio ad oggetti bisogna conoscere bene tutti i principali concetti e principi della OOP: ereditarietà, polimorfismo, incapsulamento, accoppiamento, coesione (e altri). E magari anche alcuni dei principali design-pattern.

    Senza la conoscenza di questi concetti continuerai sempre a chiederti: "come far vedere quella tal cosa ad un'altra classe" o cose del genere ...

    Quindi, per cortesia, puoi postare quello che hai scritto finora?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    16
    Ecco la classe per la lettura del file...
    codice:
    public class Lettura 
    {
    	public void Leggi() throws IOException
    	{
    		Pattern Pattern = Pattern.compile("\\d+ \\d+ \\d+ \\d");
    		String path =" .... ";
    		FileReader fr = new FileReader(path);
    		BufferedReader br = new BufferedReader(fr);
    		String linea = "";
    		
    		while ((linea = br.readLine()) != null)
    		{	
    			 if (Pattern.matcher(linea).matches()) 
    			 {
    			        // corrisponde
    				 	String[] Array = linea.split(" ");
    				 	
    				 	for(int i = 0 ; i < Array.length ; i++)
    				 	{
    				 		System.out.print(Array[i]+ " ");
    				 	}
    				 	System.out.println();
    			 } 
    			 else 
    			 {
    			        // non corrisponde
    				 	System.out.println("Errore");
    			 }
    		}
    	}
    }
    ecco una delle altre 2 classi :
    codice:
    public class Stampa extends Lettura
    {	 
    	String numero_riga;
    	Lettura lettura1 = new Lettura();
    	public void print() throws IOException
    	{
    		int ifVero = 0;
    		BufferedReader in = new BufferedReader( new InputStreamReader(System.in));
    		Pattern Pattern = Pattern.compile("\\d+");
    		System.out.print("Stampa : ");
            numero_riga = (in.readLine());
            String path ="....";
    		FileReader fr = new FileReader(path);
    		BufferedReader br = new BufferedReader(fr);
    		String linea = "";
    		
    		while ((linea = br.readLine()) != null)
    		{	
    			String[] Array= linea.split(" ");
    			if(Array.matcher(Array[0]).matches()) 		
    			{
    				if(Array[0].equals(numero_riga))
    			 	{
    			 		for(int i = 0 ; i < Array.length ; i++)
    			 		{
    			 			System.out.print(Array[i] + " ");
    					}
    			 		System.out.println();
    			 		ifVero++;
    			 	}
    			}
    		}
    		if(ifVero != 1)
    			System.out.println("Non è presente la riga in questione");
    	}
    }

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Purtroppo non c'è nulla che abbia senso in quello che hai fatto .... non ha senso la estensione class Stampa extends Lettura (Stampa è un Lettura ... già questo non ha senso), le eccezioni non sono state gestite correttamente, il close dei file non è stato fatto e altro ...
    Insomma .... non quadra e non va!!!

    Non mi è molto chiaro cosa volevi fare (e perché) nella classe Stampa, quindi, ti chiedo gentilmente di spiegare a parole quello che volevi fare.
    Descrivi bene quello che hai nel file, come lo devi trattare, ecc....
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    16
    voglio far si ke la classe "stampa" riesca a vedere "Array" in modo da poter effetturare le operazioni ke desidero senza dover di nuovo rifare una lettura del file e dover ricreare un array in cui in serire i campi del file di testo...spero di essere stato chiaro

  6. #6
    nn so se ho capito bene, cmq dovresti passare un array da una classe all'altra. se metti in leggi un metodo che fa semplicemente il return del file letto (mettiamo che il metodo si chiami getFile()), nell'altra classe crei un oggetto leggi, gli fai leggere il file, crei un array nella classe stampa e assegni a questo array il valore che deriva dall'invocazione del metodo getFile(). A questo punto dovresti avere un array nella classe stampa con il valore letto nella classe Leggi. Spero di essere stato chiaro e di aver capito quello che intendevi

  7. #7
    Se ho capito bene il tuo problema il passaggio di un array da una classe ad un altra?
    Se è così nella prima classe dove hai creato l'array crei un metodo getArrayAnimali()
    Es:
    public String[] getArrayAnimali()
    {
    return animali; //dove logicamente animali è un array di stringhe
    }

    a questo punto nella seconda classe chiamando semplicemente questo metodo ricevi l'array di stringhe.

    Es: PrimaClasse prima = new PrimaClasse();
    String [] bestie = prima.getArrayAnimali();

    Spero di esserti stato utile.... ma da quello che ho capito ti conviene studiare dall'inizio Java perchè effettivamente hai un bel pò di confusione.
    Ciao.

    il lupo perde il pelo ma non il vizio!
    http://www.pateam.eu
    http://pateam.altervista.org

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    16
    dovendo però aggiungere, come si vede dal codice sopra postato, degli if all'interno del blocco while della 1° classe, come faccio?

    scusate se domando cose che forse per voi sembrano facili, ma abituato e diplomato con il c# e passato poi al java, con un docente per niente facile da capire, lo studiare da solo si fa abbastanza difficoltoso a volte...

  9. #9
    Utente di HTML.it L'avatar di Pastore12
    Registrato dal
    Oct 2008
    Messaggi
    1,051
    dovendo però aggiungere, come si vede dal codice sopra postato, degli if all'interno del blocco while della 1° classe, come faccio?
    Questa frase merita una traduzione

    voglio far si ke la classe "stampa" riesca a vedere "Array" in modo da poter effetturare le operazioni ke desidero senza dover di nuovo rifare una lettura del file e dover ricreare un array in cui in serire i campi del file di testo
    Direi che si può buttar via (quasi) tutto e ripartire da qui.

    La cosa più sensata è creare una sola classe con un metodo di lettura e uno di stampa. Se ti serve fare una classe di lettura e una di scrittura, va bene.. complichiamoci pure la vita.

    La classe Lettura potrebbe essere fatta così:
    - avere un campo arrayTesto dichiarato a livello di classe,
    - magari un metodo getArrayTesto (se arrayTesto è private)
    - e di certo un metodo per popolare arrayTesto.

    La classe Stampa potrebbe essere così:
    - avere un campo arrayTesto
    - il metodo setArrayTesto (a piacere)
    - e di certo un metodo per scrivere il arrayTesto.

    Poi ci starebbe bene anche una classe che contenga un main. Potrebbe essere Stampa stessa, oppure una TerzaClasse. Il main deve instanziare Lettura, invocare il metodo di popolamento e poi prelevare arrayTesto, direttamente (se arrayTesto è public) o attraverso il metodo getter (se arrayTesto è private, scelta solitamente bellina.. )

    Ottenuto arrayTesto, devi instanziare la classe Stampa, fornirgli arrayTesto e quindi invocare il metodo stampa.

    Nota: ci sono certamente modi migliori di procedere, ma ad uso didattico potrebbe anche andarti bene.

    Come suggeriva andbin, ti sarebbe utile studiarti un po' qualcosina e io penso che non ci sia nulla di meglio del basic io tutorial by sun per imparare come leggere e scrivere un file in modo corretto.

    Ciao

    P.S.: se non ti ritrovi in quanto sopra, sei gentilmente pregato di scrivere il testo dell'esercizio.. tranquillo! Nessuno vuole risolverlo al posto tuo Però ci farebbe molto comodo per capire cosa centra extends con questo problema.
    "Ethics are to me something private. Whenever you use it as an argument for why somebody_else should do something, you’re no longer being ethical, you’re just being a sanctimonious dick-head"
    Linus Torvalds

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.