Visualizzazione stampabile
-
Di solito in java il costruttore ha il nome della classe ma questa è una classe estesa quindi dobbiamo "adattarci" alla classe madre. La classe madre dice che il metodo che verrà richiamato sarà onCreate.
Dovresti studiare un po' le basi degli oggetti. In php puoi tralasciare il tipo di variabile ecc invece in java deve essere tutto "tipizzato".
i Package se conosci PHP 5.3 (ti faccio esempi su php perchè ho letto che hai approfondito sto linguaggio) sono i namespace come su molto linguaggi.
public e private ( i più usati): Di solito le variabili si dichiarano tutte private e poi crei dei metodi pubblici get and set per le variabili. dichiari un metodo public quando vuoi far accedere dall'esterno della classe e private quando non vuoi ossia: quando vuoi far accedere solo alla classe(es: this.metodo(); )
PS:da php5 (uscito nel 2004 credo) il costruttore è __construct() e non il nome della classe e da php 5.3 sarà obbligatorio fare come java, quindi dichiarare tuti i metodì se saranno pubblici, privati ecc. Ti consiglio di comprarti un libricino di java base dove trovi SICURAMEMTE la base degli oggetti che poi ti servirà per tutti gli altri linguaggi.
Scusa se ho scritto un po' tutto incasinato ma sono di fretta ;)
-
Quote:
Originariamente inviato da
Hitler
Beh non so se sono ancora in tempo, ma provo a rispondere io alle tue perplessità! Cominciamo in ordine numerico come hai fatto tu :
#1. Il package non è altro che l'insieme di tutte le classi presenti nell'apk.
#2. Non è proprio giusto definirle librerie, potresti usare la stessa definizione usata in c ' #include ', ma sono semplicemente delle altre classi importate nel package della tua apk.
#3. Si giusto.
#4. Un override è un sovrascrittura di un codice già implementato, nel tuo caso stai stai ri-implementando il costruttore della classe Activity, che ovviamente è stato ereditato dalla classe HelloAndroid che estende Activity.
#5. Si è giusto quello che dici, ma java quando è nato ha creato anche delle convenzioni.. per farti capire ad esempio ha detto che tutti i package devono iniziare per lettera minuscola, le classi per lettera maiuscola, ecc ecc.. e in una convenzione dice che tutti i costruttori delle classi devono essere public.
#6. super(); non fa nient'altro che richiamare il costruttore della classe, ad esempio se crei due costruttori di una classe qualsiasi, uno dei quali non riceve alcun parametro e l'altro che riceve due paramentri ad esempio interi, puoi richiamare entrambi i costruttori scrivendo super(); e super(int x, int y); l'interprete (in gergo a volte chiamato compilatore) capisce a tempo di esecuzione di quale costruttore si tratta in base ai parametri passati.
Alla seconda domanda del punto 6 posso semplicemente risponderti in questo modo: hai mai sentito parlare di ricorsione? (scusa se non ti spiego cosa è, ma non è per niente semplice in qualche riga.)
#7. Devi sempre scrivere il tipo dell'oggetto che vuoi creare, quella è come una dichiarazione di una variabile in c, l'interprete deve sapere che oggetto sta utilizzando! Ti faccio capire meglio.. Immagina di avere una superclasse FigureGeometriche e tutte le sue sotto classi Triangolo,Quadrilatero ecc ecc..
Se istanzi un oggetto t = new FigureGeometriche(); (apparte che è sintatticamente scorretto e ti da errore) l'interprete non può sapere di che oggetto ha a che fare, proprio perchè dopo new puoi mettere qualsiasi costruttore delle classi superiori, ma l'oggetto può benissimamente essere un oggetto di qualsiasi sottoclasse. Quindi è corretto scrivere sia: Triangolo t = new FigureGeometriche(); sia: Triangolo t = new Triangolo();. Spero di essere stato chiaro in quest'ultimo passaggio..
#8. Perfetto.
#9. Immagina setContentView come la printf in c. E' una delle tantissime procedure (in gergo a volte chiamate funzioni :P) di java per stampare a video.
Spero di essere stato d'aiuto, sia a te che a qualche altro.
Ciao alla prossima! ;)
Grazie! Sei stato molto chiaro, nel frattempo ho approfondito un po' java x comprendere meglio lo sviluppo di applicazioni Android, ma nel tuo post ho trovato delle conferme che mi aiutano. Solo una cosa mi è rimasta sospesa, ed è alquanto fondamentale, nel punto 5., hai tralasciato di dirmi cos'è "Bundle savedInstanceState", che parametro viene passato al costruttore? Bundle è il tipo di dato se non vado errato, ma savedInstanceState cos'è?! Questo non l'ho trovato (ancora) neanche nelle cose di java che ho letto. Cmq grazie moltissimo della tua spiegazione!
-
Quote:
Originariamente inviato da
Skyline
Di solito in java il costruttore ha il nome della classe ma questa è una classe estesa quindi dobbiamo "adattarci" alla classe madre. La classe madre dice che il metodo che verrà richiamato sarà onCreate.
Dovresti studiare un po' le basi degli oggetti. In php puoi tralasciare il tipo di variabile ecc invece in java deve essere tutto "tipizzato".
i Package se conosci PHP 5.3 (ti faccio esempi su php perchè ho letto che hai approfondito sto linguaggio) sono i namespace come su molto linguaggi.
public e private ( i più usati): Di solito le variabili si dichiarano tutte private e poi crei dei metodi pubblici get and set per le variabili. dichiari un metodo public quando vuoi far accedere dall'esterno della classe e private quando non vuoi ossia: quando vuoi far accedere solo alla classe(es: this.metodo(); )
PS:da php5 (uscito nel 2004 credo) il costruttore è __construct() e non il nome della classe e da php 5.3 sarà obbligatorio fare come java, quindi dichiarare tuti i metodì se saranno pubblici, privati ecc. Ti consiglio di comprarti un libricino di java base dove trovi SICURAMEMTE la base degli oggetti che poi ti servirà per tutti gli altri linguaggi.
Scusa se ho scritto un po' tutto incasinato ma sono di fretta ;)
No no, non fa niente se hai scritto di fretta, ho capito tutto benissimo! Grazie mille anche a te!
-
Si scusami, quel savedInstanceState ritorna un valore Bundle che dice in quell'istante lo stato dello schermo è orizzontale o verticale!
-
Alcune precisazioni
Ci tengo ad esprimere mie osservazioni sui seguenti punti :
#1. Il package è un aggregazione logica di classi e serve a raggruppare le stesse in base alla funzione che in comune esse svolgono. Fisicamente il package non è altro che una ramificazione di cartelle (immagina di sostituire il . con uno / ) gerarchicamente organizzate.
#4-5. La spiegazione è corretta ma il metodo onCreate non è il costruttore della classe (Il costruttore è un metodo che ha il medesimo nome della classe e chiamato da Java quando viene istanziata la stessa), ma il metodo richiamato dalla piattaforma android quando viene inizializzata un' Activity.
#6. E' un pò confusa la spiegazione, tu immagina che la classe Activiy che stiamo estendendo abbia una propria implementazione del metodo (e non costruttore) onCreate.
Con l'istruzione super.onCreate() noi diciamo che intendiamo eseguire il codice definito dalla superclasse ma di estenderne l'esecuzione mediante il codice definito in override. Per cui quando l' OS chiamerà il metodo Oncreate, lo stesso eseguirà dapprima il codice originale definito dalla classe Activity, dopodichè il nostro codice.
#9. Non mi risulta che sia un metodo java per stampare a video, più che altro è un metodo della classe Activity che injecta a video un oggetto di tipo TextView
Non vorrei sembrare troppo pignolo, ma potresti creare un pò di confusione.
-
Non vorrei sembrare troppo pignolo, ma potresti creare un po' di confusione (cit.) con la lingua italiana parlata nel forum.
#1 [un aggregazione] si scrive con l'apostrofo, se non sai il perchè cerca sui libri delle scuole elementari.
#6 [un pò] si scrive con l'apostrofo, se non sai il perchè vedi sopra.
Quando si diventa troppo pignoli questa è la fine che si fa, soprattutto quando si utilizza quell'aria da saccenti. Nessun dubbio su quello che hai cercato di far capire.. cercato.
Buon studio!
-
-
Saccente? solo perchè ho fatto delle precisazioni ?? Se non sei pronto al confronto non scrivere su un Forum..per la storia degli apostrofi hai ragione...io ammetto i miei sbagli..mi tocca ristudiarmi la grammatica..
Ma tu hai studiato un pò di storia prima di avere il coraggio di usare quel nick ?
-
Non sai scrivere in italiano e mi vieni a parlare di storia.. LoL!
Cmq per me possiamo chiudere qui. Se ci tieni così tanto a continuare puoi farlo in privato, questo non è assolutamente il posto adatto! Il topic era nato per aiutare il buon alextime..
Mi permetto un ulteriore o.t.:
in una community, soprattutto in una come questa con tanti iscritti, ci sono persone che sanno di meno e persone che sanno di più! Non c'è MAI nessuno che sa tutto.. Lo spirito che bisogna usare è questo: dimostrare cordialità e disposizione all'utente che sa di meno, e riconoscenza e gratidutine all'utente che sa di più.
-
1. Io non mai detto di sapere tutto, ho solo detto che ci tenevo a dare delle precisazioni.
2. Tu hai iniziato ad attaccarmi, la gente "umile" ammette di aver sbagliato
3. Sono stufo...mettiamola così...hai ragione tu!