Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 24
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    726

    [JAVA] Un paio di spiegazioni

    Avrei bisogno di un paio di aiuti riguardo un programma che stavo iniziando a scrivere e su come creare oggetti grafici.

    1) premetto che io di java so veramente poco e non ho la minima idea del perchè mi spunti fuori un'eccezione (il sorgente è compilato senza errori).
    Ecco il codice che ho scritto ieri notte sperando che mi possiate dare una mano.

    codice:
    public class Libro extends Biblioteca
    {
     // parametri inerenti il libro
     protected String nome;
     protected String cognome;
     protected String genere;
     protected int anno;
     private int scelta;
    
     // metodi
     //inserisce un record nuovo e stampa o il record appena inserito o tutti i record dell'array
     public void inserisciLibro()
     {
      System.out.println("Nome autore: ");
      vet[conta].nome=Console.readLine();
      System.out.println("Cognome autore: ");
      vet[conta].cognome=Console.readLine();
      System.out.println("Genere libro: ");
      vet[conta].genere=Console.readLine();
      System.out.println("Anno di pubblicazione: ");
      vet[conta].anno=Console.readInt("");	
      System.out.println("Visualizzare dati inseriti?: (si=1 / no=0)"
      );
      scelta=Console.readInt("");
       if (scelta==1)
       {
        System.out.println("Nome: "+nome);
        System.out.println("Cognome: "+cognome);
        System.out.println("Genere: "+genere);
        System.out.println("Anno di pubblicazione: "+anno);
       }
       else
        stampaBiblioteca();
            
      if (conta>=10)
       System.out.println("Impossibile immagazzinare altri dati");
      else 
       ++conta; 
     }	
     
      // stampa l'array 
      public void stampaBiblioteca()
      {
       for (int i=0;i<conta;i++)
       {
        System.out.println("Nome autore: "+vet[i].nome);
        System.out.println("Cognome autore: "+vet[i].cognome);
        System.out.println("Genere libro: "+vet[i].genere);
        System.out.println("Anno di pubblicazione: "+vet[i].anno);
        System.out.println("--------------------------");
       }
      	
      }
    
      public static void main(String[] args)
     {
      Libro a = new Libro();
      a.inserisciLibro();	
     }
    
    	
    }
    codice:
    public class Biblioteca
    {
     Libro vet[] = new Libro[10]; // Vettore in cui si andranno a memorizzare i campi compilati dall'utente
     public static int conta=0;	  // contatore 
    
    }
    2) avrei anche bisogno di una speigazione circa la creazione (in senso pratico) di oggetti grafici.
    Ho letto l'articolo sul sito ma non ho capito molto bene.

    Grazie a tutti!

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Potresti anche dirci che eccezione salta fuori? Così sappiamo cosa cercare...


    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

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    726
    Eccola
    Immagini allegate Immagini allegate

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Prima di poter utilizzare i metodi di un oggetto, bisogna crearlo!
    Tu nella classe Biblioteca hai creato un array di oggetti Libro, ma non hai creato alcun oggetto, ovvero non hai creato nessuno degli elementi di quell'array:
    codice:
    public class Biblioteca {
       Libro[] vet = new Libro[10];
       for (int i=0; i<vet.length; i++) vet[i] = new Libro();
    }
    Poi, secondo me non hai ancora chiaro cosa sia l'ereditarietà: tu stai dicendo che la classe Libro eredita dalla classe Biblioteca (extends Biblioteca)... in questo modo stai dicendo che un libro è una biblioteca... ed, inoltre, all'interno della classe Biblioteca fai uso di oggetti di tipo Libro (che è una classe derivata, di cui la classe madre non dovrebbe sapere niente).

    Ad ogni modo, l'errore era quello che ti ho suggerito.


    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
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    726
    Intanto grazie per l'aiuto.
    So che faccio confusione perchè non ho mai fatto programmazione object oriented, sto facendo un po' da autodidatta.

    E per quanto riguarda le gui?

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    726
    Ma la for non dovrebbe stare nei metodi?
    Non da errore il compilatore cosi?

  7. #7
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Sì... ho commesso un errore, dovuto alla fretta con cui ho scritto il messaggio.
    Dovresti istanziare tutti gli oggetti, ad esempio, all'interno del costruttore della classe Libro, non certo dove l'ho messo io.

    Che domande hai riguardo le GUI?

    Per quanto riguarda la programmazione Object Oriented ti consiglio di provare uno dei molti libri e manuali che si trovano facilmente in Rete. Se fai una ricerca anche in questo forum dovresti reperire parecchio materiale utile.


    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

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    726
    Beh, come realizzare una gui, anche che non faccia niente, anche un semplice frame.

    Tanto per iniziare a vedere come si fanno, non so ho sentito parlare dei metodi actionListener e cose cosi.

    Tanto una volta capito come si fa uno si fanno tutte giusto?

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    726
    Ok, il programma funziona ora, tnx!

  10. #10
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Ok.
    Il discorso riguardante le interfaccie grafiche è un po' lungo, cercherò di sintetizzarlo al massimo.
    In Java ci sono, essenzialmente, due tecnologie: AWT (più vecchia e non più usata, se non per la gestione di eventi e LayoutManager) e Swing (più recente, completa, articolata e ricca di strumenti).
    Per cominciare a realizzare le GUI è necessario conoscere le basi della prima e poi concentrarsi sulla seconda, dato che tutto (o quasi) deriva dalla prima.

    La documentazione Java è essenziale per chiunque voglia avvicinarsi alla programmazione visuale in questo linguaggio.
    Questo è il link alla documentazione, da tenere sempre sotto mano.

    Alla base di tutto c'è la classe Component, che deriva da Object e rappresenta qualsiasi componente grafico (finestre, pulsanti, etichette, liste, ecc). Da questa classe, poi, si può dire che iniziano 2 tipologie diverse di oggetti: i componenti semplici (come pulsanti, etichette, ecc) e i contenitori (Container), che sono dei particolari componenti che permettono, appunto, di contenerne altri (è il caso di Finestre, Pannelli, Aree scrollabili, ecc.).

    Esistono, poi, una categoria a se stante di oggetti che non sono dei componenti, ma sono strettamente legati alle GUI: è il caso di immagini (Image), colori (Color), cursori (Cursor), ecc.

    Veniamo, però, al nocciolo della questione: creare una finestra.

    Creare una finestra è semplicissimo: sono sufficienti 6 righe di codice:
    codice:
    import java.awt.*;
    
    public class Finestra extends Frame {
       public static void main(String [] args) {
          Finestra f = new Finestra();
       }
    }
    Il problema è che questa sarà una finestra minimale: senza titolo, senza niente dentro e che non fa assolutamente nulla (non si può nemmeno chiudere, se non terminando forzatamente il programma).

    Costruire i vari oggetti da inserire è piuttosto semplice: uno sguardo alla documentazione e si scopre quali sono i costruttori a disposizione, i metodi per poterci lavorare, ecc.
    Poi, li si può aggiungere al contenitore (la finestra, ad esempio), attraverso il metodo add().

    Le prime volte il risultato sarà pessimo, imprevedibile. Perchè tutto ruota attorno ad un concetto che in Java è predominante: il lay out dei componenti. Ovvero, la loro disposizione ed il loro ridimensionamento.
    I contenitori, solitamente, prevedono dei particolari LayoutManager, ovvero delle apposite classi che si occupano di gestire il lay out dei componenti al loro interno. Esse si arrangiano a posizionarli e a ridimensionarli a seconda delle dimensioni attuali del contenitore.
    Non approfondisco questo argomento, ci sono i libri che parlano adeguatamente di questi concetti.

    Altro concetto importante in ambienti Event Driven come Windows, Linux e la maggior parte dei sistemi operativi odierni è proprio il concetto di Evento. Ciascuna azione dell'utente nel programma, genera un evento. Allo scatenarsi di eventi il programma reagisce secondo le istruzioni che gli sono impartite dal programmatore.
    Anche Java, quindi, deve prevedere l'utilizzo degli eventi e a tale scopo esistono gli Ascoltatori.
    Questi sono rappresentati da classi che "si mettono in ascolto" di particolari eventi e, al loro sollevarsi, entrano in gioco, modellando la situazione.
    E' il caso degli ascoltatori per gli eventi delle finestre (WindowListener), per gli eventi dei click sui pulsanti (ActionListener), per gli eventi provenienti da tastiera (KeyListener), ecc.

    Questi ascoltatori, ovviamente, devono essere associati (in termine tecnico, registrati) presso i componenti a cui sono destinati, in modo che qualsiasi azione su questi componenti venga recepita ed elaborata dai relativi ascoltatori.
    Trovi, comunque, tutto sulla documentazione e sui libri.

    E' il mixing di tutti questi (ed altri, molti altri) concetti che permette la realizzazione di programmi visuali. Tutti i componenti dialogano in armonia tra di loro attraverso questi strumenti.

    Il discorso sarebbe notevolmente più lungo, ma, come già detto, ci sono i libri che affrontano per bene queste cose (capitoli e capitoli di concetti da leggere e imparare). Spero, con questa breve panoramica, di averti fatto conoscere un pochino quali sono gli strumenti con cui si deve "giocare" per poter scrivere un programma grafico.


    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

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