E lo so hai ragione, però poi mi diventa un tarlo nella testa.
Con MVC sono bloccato.
Non ho capito bene come funziona
Questo è il codice.
L'idea iniziale non me la ricordo più ahaha. Però mi sono i rimasti i nome delle variabili.
Diciamo che
ci sono una persona(Conducente) e una vettura(Auto)
questi sono i due modelli.
/MODEL
/*QUESTO MODELLO E' UN OGGETTO DI TIPO CONDUCENTE.
* UN CONDUCENTE PUO' NOLEGGIARE UN AUTO.
* IL SUOI ATTRIBUTI SONO UN:
* NOME string
* ID (QUESTO NUMERO IDENTIFICA L'AUTO CHE HA NOLEGGIATO ) id
* PAGATO boolean
* CI SONO METODI
* SET E METODI GET PER LE 3 VARIABILI
*/
public class Conducente {
private String nome = "Nessun nome ";
private int autoID = 0;
private boolean pagato = false;
public void setNome(String nuovoNome){
nome = nuovoNome;
}
public String getNome(){
return nome;
}
public void setAutoID(int aggiungiID){
autoID = aggiungiID;
}
public int getAutoID(){
return autoID;
}
public void setPagato(boolean statoPagamento){
pagato = statoPagamento;
}
public boolean getPagato(){
return pagato;
}
}
/* AUTO HA 3 ATTRIBUTI:
* MODELLO (TIPO DI VETTURA)
* ID (QUESTO NUMERO IDENTIFICA LA MACCHINA)
* DIPONIBILE (SE LA VETTURA E' NELLA RIMESSA AUTOVEICOLI
* METODI SET E GET PER TUTTI GLI ATTRIBUTI
*/
public class Auto {
private String modello;
private int autoID;
private boolean disponibile;
public void setModello(String nuovoModello){
modello = nuovoModello;
}
public String getModello(){
return modello;
}
public void setAutoID(int aggiungiID){
autoID = aggiungiID;
}
public int getAutoID(){
return autoID;
}
public void setDisponibile(boolean disponibile){
this.disponibile = disponibile;
}
public boolean getDisponibile(){
return disponibile;
}
}
/* IL CONTROLLORE
* RICEVE 3 AOGGETTI NEL COSTRUTTORE
* IL CONDUCENTE, L'AUTO E L'INTERFACCIA.
* HA TUTTI I METODI SET E GET PER GLI ATTRIBUTI
* E DUE METODI
* INSERISCI DATI
* CERCA DATI
*/
public class Controller {
private Conducente modelConducente;
private Auto modelAuto;
private Interfaccia viewInterfaccia;
public Controller(Conducente modelConducente, Auto modelAuto, Interfaccia viewInterfaccia){
this.modelConducente = modelConducente;
this.modelAuto = modelAuto;
this.viewInterfaccia = viewInterfaccia;
}
public void setNomeConducente(String nome){
modelConducente.setNome(nome);
}
public String getNomeConducente(){
return modelConducente.getNome();
}
public void setAutoIDConducente(int id){
modelConducente.setAutoID(id);
}
public int getAutoIDConducente(){
return modelConducente.getAutoID();
}
public void setPagatoConducente(boolean pagamento){
modelConducente.setPagato(pagamento);
}
public boolean getPagatoConducente(){
return modelConducente.getPagato();
}
///////////////////////////////////////////
public void setModelloAuto(String modello){
modelAuto.setModello(modello);
}
public String getModelloAuto(){
return modelAuto.getModello();
}
public void setIdAuto(int id){
modelAuto.setAutoID(id);
}
public int getIdAuto(){
return modelAuto.getAutoID();
}
public void setDisponibile(boolean disponibilita){
modelAuto.setDisponibile(disponibilita);
}
public boolean getDisponibile(){
return modelAuto.getDisponibile();
}
///////////////////////////////////////////
public void inserisciDati(){
}
public void cercaDati(){
}
}
/* L'INTERFACCIA E' COMPOSTA DA
* 2 BOTTONI:
* INSERISCI ( INSERISCI IL DATO )
* CERCA (RICERCA UN DATO)
* E' PRESENTE UN BOTTONE SALVA
* PER SALVARE I DATI, NEGLI ATTRIBUTI DELL'OGGETTO
*
*/
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class Interfaccia extends JFrame implements ActionListener {
private int LARG = 500;
private int ALTE = 500;
private JPanel pnlCentro = new JPanel();
public Interfaccia(){
super("Prova");
JPanel pnlAlto = new JPanel();
JPanel pnlBasso = new JPanel();
JButton btnInserisci = new JButton("INSERISCI");
JButton btnCerca = new JButton("CERCA");
JButton btnSalva = new JButton("Seva");
JTextField insNome = new JTextField("Nome");
JTextField insIdAuto = new JTextField("id Auto");
JTextField insPagamento = new JTextField("Pagamento");
JTextField insModello = new JTextField("Modello auto");
JTextField insDisponibilita = new JTextField("Disponibilita");
setLayout(new BorderLayout());
setSize(LARG,ALTE);
pnlAlto.setLayout(new FlowLayout());
pnlAlto.add(btnInserisci);
btnInserisci.addActionListener(this);
pnlAlto.add(btnCerca);
btnCerca.addActionListener(this);
add(pnlAlto,BorderLayout.NORTH);
pnlCentro.setLayout(new GridLayout(5,1));
pnlCentro.add(insNome);
pnlCentro.add(insModello);
pnlCentro.add(insDisponibilita);
pnlCentro.add(insIdAuto);
pnlCentro.add(insPagamento);
pnlCentro.setVisible(false);
add(pnlCentro,BorderLayout.CENTER);
pnlBasso.add(btnSalva);
btnSalva.addActionListener(this);
add(pnlBasso,BorderLayout.SOUTH);
setDefaultCloseOperation(EXIT_ON_CLOSE);
System.out.println(pnlCentro.toString());
}
@Override
public void actionPerformed(ActionEvent actevt) {
if(actevt.getActionCommand().equals("INSERISCI")){
pnlCentro.setVisible(true);
System.out.println("Premuto pulsante: INSERISCI");
}
}
}
public class Start {
public static void main(String[] args) {
Interfaccia Start = new Interfaccia();
Start.setVisible(true);
}
}
Manca la gestione del bottone Cerca, perchè son voluto passare avanti.
Mi sono bloccato proprio nei punti salienti.
Forse non mi è molto chiaro MVC
Praticamente non so come gestire la situazione
Come faccio a farli funzionare??
Questo è un esempio scopiazzato, ma personalizzato abbastanza, con tanto d'interfaccia grafica, quindi magari di base c'è da fare qualche modifica.
La figura del libro indica che
il modello vieno manipolato dal controllore
e poi invia i dati alla vista.
A questo punto mi sembra di capire che
devo eliminare i metodi get dal controllore e lasciare solo i set
e poi elminare i metodi set dall'interfaccia, e lasciare solo i get
...