Oppure

Loading
07/01/13 15:27
SgtMat
Ciao a tutti! Sto cercando di sviluppare una semplicissima applicazione per Android e, dopo un infarinata di Java, e dopo aver seguito un corso del prof. Ronchetti su iTunes U, ho iniziato a buttar giù qualcosa. Il mio problema con Java è che è orientato agli oggetti e di questo io so molto poco (giusto per prendere un buon voto ad un interrogazione di informatica quando facevo il quarto, tre anni or sono). Nonostante il problema l'abbia costruendo un app per Android, ho scritto qui perchè ritengo che il problema sia fondamentalmente di Java, chiedo venia se ho sbagliato. Vengo al dunque.

Ho creato una classe nel file MiaClasse.java :
package com.mioprogetto

public class MiaClasse {
	int n;
	String a;
	String b;
	
	public MiaClasse(int n, String a, String b) {
		this.n=n;
		this.a=a;
		this.b=b;		
	}
	
	public int getN() { return this.n; }
	public String getA() { return this.a; }
	public String getB() { return this.b; }
}


Io vorrei creare una classe in cui vado a creare un array di oggetti MiaClasse e li popolo.
Poi dal file .java di un'activity andarli a recuperare. Ho provato facendo così:

file Database.java
package com.mioprogetto;

public class Database {
	
	public MiaClasse[] mc= new MiaClasse[10];
		
	public Database (MiaClasse[] mc) {
		int n;
		String a;
		String b;
		
		n=1;
		a="qualcosa";
		b="qualcosaltro";
		MiaClasse[1]=new MiaClasse(n,a,b);
	}
}


Stralcio dell'activity:
..../

MiaClasse[] c = new MiaClasse[10];
Database d = new Database(c);

a.setText(d.mc[1].getA());
b.setText(d.mc[1].getB());

/....


Nell'activity ho dato libero sfogo alla fantasia :rotfl: quasi mi vergogno a postarla, ma forse si capisce meglio cosa voglio fare :rofl:

P.S. La mia idea è a puro scopo di esercitazione e so che per queste cose è meglio l'uso di un database "vero" ;)
aaa
07/01/13 16:34
TheKaneB
Non si capisce quale sia la parte che ti da problemi...

Anche se già vedo due errori:

- Inizializza il vettore mc dentro il costruttore di Database e non nella dichiarazione della classe
- il primo elemento del vettore è mc[0] e non mc[1]

Seconda cosa, non usare i vettori nudi e crudi, ti consiglio di dichiarare mc come ArrayList<MiaClasse>, in questo modo fai...

class DataBase {
public ArrayList<MiaClasse> mc; // Metterlo come public fa schifo... ma vabbè...

DataBase() {
  mc = new ArrayList<MiaClasse>();
}


così quando vuoi aggiungere qualche oggetto fai:

db = new DataBase();
db.mc.add(new MiaClasse(42, "pippo", "pluto";));
db.mc.add(new MiaClasse(43, "pippoADS", "plutoGG";));
db.mc.add(new MiaClasse(44, "pippoffff", "plutHHHHo";));

e per accedere usi il solito db.mc.get(0).getA()


Ok, tutto questo vale per la sintassi Java, ma dal punto di vista dell'OOP stai facendo un pastrocchio. Non ho tempo di elencarti tutte le best practice, per cui ti rimando allo studio di un buon libro, perchè altrimenti ti leghi mani e piedi con del codice impostato male.
Ultima modifica effettuata da TheKaneB 07/01/13 16:40
aaa
08/01/13 21:04
SgtMat
Grazie per la risposta!! Ho fatto come hai scritto e il programma funziona facendo ciò che voglio. Seguirò comunque il tuo consiglio. Evito di abituarmi a cattive abitudini e mi studio bene la OOP :k:
aaa
08/01/13 21:35
TheKaneB
bravo guaglione :D
aaa