|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jun 2009
Messaggi: 3584
|
quale libro per imparare android?
salve,io vorrei imparare a programmare per android,visto che su amazon c'è lo sconto del 40% su tutti i libri vorrei prendermi una guida.
Quale tra queste 3 mi consigliate? Sviluppare applicazioni per Android (Guida completa) di Massimo Carli Android. Guida per lo sviluppatore (Guida completa) di Massimo Carli Sviluppare applicazioni per Android con HTML, CSS e JavaScript (Informatica) di Jonathan Stark e G. Branca io ero più orientato sul primo,in quanto è il più recente (2011).
__________________
PC Fisso: Monitor: Dell U2715H | CPU: Ryzen R7 3600 | Dissipatore: Noctua NH-U12A | Scheda video: Sapphire 5700XT Pulse | Scheda Madre: MSI B450 Tomahawk Max | Ram: Ballistix sport LT 3200mhz CL16 | Hard disk: Sabrent Rocket 1TB | Case In Win A1 Plus | SO: Windows 10 Pro |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Feb 2009
Messaggi: 700
|
Quote:
Però una cosa...nota bene che DEVI già conoscere di tuo Java e la logica della programmazione ad oggettti...ho visto varie persone dire che il libro di Carli non è buono come si dice perchè "fornisce il codice senza spiegarlo" e poi si viene SEMPRE a scoprire che queste persone non conoscono Java...questo è un libro che tratta lo sviluppo con il framework di Android...è un libro sul framework e su una specifica tecnologia...non è un manuale di Java...se non hai basi di programmazione devi studiare prima Java e programmazione ad oggetti per fatti tuoi |
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jun 2009
Messaggi: 3584
|
attualmente sto già studiando java infatti.
Ho comunque delle ottime basi di programmazione in pascal. L'unica cosa è che devo ancora capire come sfruttare al meglio gli oggetti,ma sul loro funzionamento e sulla loro logica so già qualcosa grazie mille per l'aiuto comunque
__________________
PC Fisso: Monitor: Dell U2715H | CPU: Ryzen R7 3600 | Dissipatore: Noctua NH-U12A | Scheda video: Sapphire 5700XT Pulse | Scheda Madre: MSI B450 Tomahawk Max | Ram: Ballistix sport LT 3200mhz CL16 | Hard disk: Sabrent Rocket 1TB | Case In Win A1 Plus | SO: Windows 10 Pro |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Feb 2009
Messaggi: 700
|
Quote:
Ti consiglio di studiarti per bene un minimo di Java e poi passare ad Android...quantomeno devi arrivare a manegiare con scioltezza i concetti di oggetti, ereditarietà (quindi classi astratte ed interfacce) e polimorfismo... In finale...datti qualche mese per studiare bene le basi di Java prima di buttarti su Android... |
|
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Jan 2007
Messaggi: 6357
|
Quote:
Sono essenzialmente "schemi base" per la strutturazione di software in moduli ed oggetti e specialmente per la programmazione ad oggetti aiutano molto i principianti a partire con la mentalita giusta. Poi ci sarebbero pure gli anti-pattern ovvero gli "schemi da evitare" che di solito prendono forma quando si parte male nello sviluppo oppure per varie ragioni si fanno molte modifiche progressive ed aggiornamenti ad un software senza considerare che effetto hanno sulla "struttura del sistema complessivo".Le pagine in inglese relative ai design pattern ed anti-pattern contengono descrizioni più estese e ulteriori link: http://en.wikipedia.org/wiki/Design_...ter_science%29 http://en.wikipedia.org/wiki/Anti-pattern E' da notare che alcuni anti-pattern sono a livello di organizzazione e progetto (quindi in essi c'entra il fattore umano più che il software). |
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Jun 2009
Messaggi: 3584
|
si,so benissimo che tra pascal e java si sono molte differenza,ma almeno i concetti di base della programmazione (while,if,ecc) sono praticamente identici
Comunque secondo voi è molto difficile programmare per android? io inizialmente volevo fare un giochino estremamente semplice giusto per capirne il funzionamento
__________________
PC Fisso: Monitor: Dell U2715H | CPU: Ryzen R7 3600 | Dissipatore: Noctua NH-U12A | Scheda video: Sapphire 5700XT Pulse | Scheda Madre: MSI B450 Tomahawk Max | Ram: Ballistix sport LT 3200mhz CL16 | Hard disk: Sabrent Rocket 1TB | Case In Win A1 Plus | SO: Windows 10 Pro |
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: May 2001
Messaggi: 12936
|
Quote:
Spesso parlare di design pattern ad una persona che non ha mai visto cosa sono, confonde molto di più le idee. Inoltre secondo me sono profittevoli solo se hai progetti medio-grandi, per piccoli progetti è solo una perdita di tempo. |
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Jun 2009
Messaggi: 3584
|
io attualmente per il mio primo progetto ho intenzione di fare una cosa mooooolto semplice eh XD
di oggetti ce ne dorebbero essere solo due,una matrice e l'oggetto che poi starà in ogni casella della matrice l'unica cosa è che devo ancora studiare il funzionamento delle matrici,per l'oggetto bene o male so già come farlo,visto che fortunatamente a scuola abbiamo un eccellente prof che ci ha fatto anche programmazione ad oggetti,oltre che a quella imperativa di pascal .-.
__________________
PC Fisso: Monitor: Dell U2715H | CPU: Ryzen R7 3600 | Dissipatore: Noctua NH-U12A | Scheda video: Sapphire 5700XT Pulse | Scheda Madre: MSI B450 Tomahawk Max | Ram: Ballistix sport LT 3200mhz CL16 | Hard disk: Sabrent Rocket 1TB | Case In Win A1 Plus | SO: Windows 10 Pro |
|
|
|
|
|
#9 | |
|
Senior Member
Iscritto dal: Jan 2007
Messaggi: 6357
|
Quote:
In fin dei conti, cose come i pattern command, model-view-controller, abstract factory, ecc. li si incontra anche facendo cose banali e molti imparano lentamente "per esempio" (esempi di codice nei libri i negli help file) vari casi di utilizzo quando potrebbero farlo più velocemente studiando direttamente i design pattern nella loro forma "generica" (più facile da riapplicare in altre situazioni diverse da quelle degli esempi). |
|
|
|
|
|
|
#10 | |
|
Senior Member
Iscritto dal: Feb 2009
Messaggi: 700
|
Quote:
Ripeto...devi avere padronanza con i concetti base di programmazione ad oggetti: ereditarietà (classi astratte ed interfacce), polimorfismo, sapere almeno a grandi linee cos'è un framework e conoscenza di qualche pattern (anche se quelli puoi impararteli direttamente lavorandoci siù e leggendo il libro di Carli) Ti ripeto...impara prima le basi di Java e la programmazione OO (ti ci vorrà qualche mese, prenditi un manuale di Java prima) e poi passa ad Android...fare giochini non è banale...devi usare strumenti grafici e probabilmente qualche altro framework integrativo per gestirne la grafica...se non sei più che ferrato non ne esci vivo |
|
|
|
|
|
|
#11 | |
|
Senior Member
Iscritto dal: Feb 2009
Messaggi: 700
|
Quote:
Fidati...studiati bene Java per almeno 3 mesi... E come ti ha detto qualcuno ti toccherà vedere anche determinati pattern (ma vediteli dopo esserti ferrato molto bene in Java)...sicuramente avrai a che fare con l'Observer che di fatto implementa la gestione delle interazioni utente-dispositivo, l'Adapter che è usato massicciamente nel framework di Android, il Composite che ti tornerà utile anche nel concetti di layout, l'Iterator che ti servirà per iterare in maniera intelligente su collezioni di oggetti e qualche pattern creazionale ti torna spesso utile... Ti ripeto...non buttarti così sprovvisto di nozioni in qualcosa di questo tipo...il tuo progetto per quanto semplice necessità di conoscenze base del framework di Android e senza conoscere bene queste cose invece di aiutarti (perchè il framework ti aiuta e ti guida nello sviluppo) ti incasinerà tantissimo la vita, anche nel caso che riuscissi a fare qualcosa non capiresti bene cosa stai facendo... Ciao Andrea |
|
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Jun 2009
Messaggi: 3584
|
grazie mille per i consigli
__________________
PC Fisso: Monitor: Dell U2715H | CPU: Ryzen R7 3600 | Dissipatore: Noctua NH-U12A | Scheda video: Sapphire 5700XT Pulse | Scheda Madre: MSI B450 Tomahawk Max | Ram: Ballistix sport LT 3200mhz CL16 | Hard disk: Sabrent Rocket 1TB | Case In Win A1 Plus | SO: Windows 10 Pro |
|
|
|
|
|
#13 | |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
I miei colleghi si mettono a ridere quando chiamo "puttana" la classe View, per tutta la roba (e responsabilità) che le hanno infilato dentro. Ma dico io, possibile che debba rispondere all'evento click anche una banale TextView? Dovrebbe essere prerogativa della classe ButtonView & derivate! Un'altra cazzata galattica che dimostra l'assoluta incapacità di realizzare una gerarchia di oggetti come informatica (di base) comanda, è rappresentata dalla ListView. Quei geni (con una singola i) hanno pensato bene d'infilare internamente una ScrollView, per gestire lo scorrimento degli item. Risultato: provate a far scrollare una ListView i cui item siano a loro volta delle ListView... ListView e ScrollView dovrebbero essere oggetti con specifiche responsabilità. Dovrebbe essere poi il programmatore a combinarli (composizione; do you known composition?) per ottenere ciò che vuole. Altrimenti si corre il rischio di doversi riscrivere nuovamente ListView partendo da CustomListView per farla funzionare come si deve. Mi fermo qui che è meglio (anche perché ho poco tempo a disposizione, e dannarmi ancora per Android non ne vale la pena).
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Jan 2008
Messaggi: 8406
|
La TextView deve necessariamente rispondere all'evento click per com'è fatto. E' di fatto un editor ed è pure possibile ficcarci dentro dei link.
Del resto si può sempre settare la proprietà clickable in modo da non farla rispondere ai click del mouse. In ogni caso c'è la necessità proprio per i compiti per cui la TextView è pensata. Voglio dire, pure la TextBox di .net supporta gli eventi del mouse, non vedo cosa c'è di scandaloso. Stesso discorso per la View che, alla fin fine, supporta tutti le proprietà tipiche di una view. Abbiamo varie proprietà grafiche ( tipo effetti di fading, parametri per il touch, ecc... ), proprietà delle scrollbars, animazioni, suoni legati agli eventi. In sostanza si tratta di elementi comuni a tutte le classi derivate dalla View. Almeno a me hanno insegnato che quando ci sono molti elementi comuni a più classi è opportuno metterli nelle classi madre. Ultima modifica di pabloski : 21-08-2011 alle 20:20. |
|
|
|
|
|
#15 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Col tuo ragionamento esisterebbe soltanto la classe "essere vivente".
Ed è, purtroppo, quello che ha fatto il team che ha realizzato Android: View deriva direttamente da Object, e ha una caterva di "figli" di primo letto. Nello specifico, visto che li hai citati, TextView servirebbe per visualizzare testo, ma consente anche di editarlo, se abilitato a farlo. EditText discende da TextView... semplicemente per permettere questa caratteristica! Potevano farne a meno, a questo punto (principio DRY). Adesso mi devi spiegare per quale motivo devo avere un oggetto che si porta dietro un enorme carico di responsabilità dovuto al fatto che integra quelle di un editor, quando normalmente lo uso soltanto per visualizzare del testo, e faccio ricorso a EditText quando ho realmente l'esigenza di editarlo, quel benedetto testo. In un framework a oggetti per realizzare GUI normalmente i componenti hanno poche e ben definite responsabilità. Classi come "Label", ma potremmo citare anche Shape, sono fra le più elementari proprio per questo motivo, e non necessitano di intercettare un evento click (al contrario di Button & derivati). Man mano che le responsabilità aumentano e s'individuano nuovi insiemi di problematiche e relative responsabilità, e si realizzano delle classi che le modellano. E così via, generando una gerarchia ben definita. Hai citato Microsoft, e ti riporto le due paginette relative a TextBlock e TextBox, che sono i corrispettivi di TextView ed EditText. Dai un'occhiata alla gerarchia da cui derivano, e controlla di quali responsabilità si fanno carico le varie classi definite a partire da Object. Per rispondere alla tua osservazione su TextBlock, è chiaro che mette a disposizione metodi e proprietà per agire sugli eventi di tastiera e mouse, ma perché vengono ereditati (è scritto accanto a ogni membro della classe) dalle classi da cui deriva (altrimenti come fai a realizzare un editor, se non vengono a essi propagati?). Non espone però un evento come Click, come fa Button, che a sua volta lo eredita da ButtonBase. Come pure CheckBox, che aggiunge pure l'evento Checked in quanto ulteriore specializzazione di Button (in realtà deriva da ToggleButton, che identifica questa classe/insieme di componenti). Ecc. ecc. ecc. Ma non serve andare a casa del "nemico" (che tra l'altro non ho mai citato, perché il contesto è generico: stiamo parlando di modellazione degli elementi di una UI): perfino Delphi 1.0, con la sua fantastica VCL, che nacque nel lontano '95, presenta una gerarchia ben definita di classi con precise responsabilità. E sono sicuro che se andassi a riprendere TurboVision, il framework realizzato da Borland per realizzare UI testuali per il Turbo Pascal 6, l'approccio utilizzato sarebbe quello.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
|
#16 | ||||
|
Senior Member
Iscritto dal: Jan 2008
Messaggi: 8406
|
Quote:
potevano creare una TextView senza editing o semplicemente tenere solo TextView il problema è che semmai c'è una classe di troppo Quote:
non è detto che una label dev'essere per forza statica...è un pò come quando cominciarono a cominciare gli hyperlink nelle gui e i testi statici diventerano testi cliccabili tramite cui raggiungere un url Man mano che le responsabilità aumentano e s'individuano nuovi insiemi di problematiche e relative responsabilità, e si realizzano delle classi che le modellano. E così via, generando una gerarchia ben definita. Quote:
Quote:
l'unica differenza che vedo è che View si sobbarca il lavoro che in .net è svolto da 4-5 classi diversi turbo vision invece era fatto proprio nel modo che dici....TView per esempio ha solo proprietà tipo: - cursore - dimensione della view - stato - owner e qualche altra...non c'era ombra di proprietà tipo colori, font, ecc... |
||||
|
|
|
|
|
#17 | |||||
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
Quote:
I controlli testuali rimangono tali, e non hanno bisogno di essere clickabili. Altrimenti sarebbero dei Button (o derivati), appunto. In Android una View è cliccabile, a prescindere dal modo in cui verrà specializzata. Tant'è che c'è pure un Button... Quote:
Si tratta di demandare a delle classi alcune specifiche funzionalità. Ci sono poi dei controlli che possono estendere da uno dei "genitori" (non necessariamente da FrameworkElement, tanto per dire), a seconda delle proprie responsabilità. Non sono, insomma, costretti a farsi di carico di qualunque cosa. Quote:
Giusto per fare un esempio in linea con quanto già detto, un bottone è clickabile perché fa parte della "famiglia" dei bottoni. Non perché fa parte delle View o di FrameworkElement. Quote:
Non solo: UIElement non ha nemmeno il concetto di Width e Height, che ritrovi soltanto in FrameworkElement. I controlli vengono specializzati a seconda del concetto che devono modellare. DependencyObject, che specializza Object, introduce soltanto il minimo indispensabile per gestire il concetto di proprietà "dipendenti". UIElement specializza quest'ultimo introducendo il concetto di elemento dell'interfaccia utente, e quindi della gestione degli eventi, la visibilità, e la "misurazione" dell'area (da occupare). FrameworkElement, infine, introduce il concetto di layout (e quindi di dimensione dell'oggetto; infatti è qui che vengono introdotte le proprietà Width, Height, e annesse). Ma non c'è traccia di colore, font, e nemmeno di eventi come Click. Nulla di tutto ciò, perché queste sono responsabilità che non competono a FrameworkElement, ma eventualmente alle sue specializzazioni.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|||||
|
|
|
|
|
#18 |
|
Senior Member
Iscritto dal: Jan 2008
Messaggi: 8406
|
Sicuramente si poteva articolare di più la gerarchia delle classi. A me pare che abbiano voluto creare un albero di classi quanto più semplice possibile.
Alla fine un mucchio di widget sono diretti discendenti di View. In sostanza c'è View e un figlio che implementa qualcosa. Hanno preso tutti i figli, hanno raggruppato i metodi comuni e li hanno messi nella View. Certo un metodo non elegantissimo ma molto veloce nell'implementazione. Lato sviluppatore non è che ti cambia chissà quanto la vita, anzi è più lineare e facile da capire. |
|
|
|
|
|
#19 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Mi stai dicendo che possiamo andare a buttare a mare il concetto di astrazione e specializzazione delle classi?
Rispondi a questa domanda: "una View è un bottone, o un bottone è una View"? Da lì si capisce tutto.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
|
#20 | ||
|
Senior Member
Iscritto dal: Jan 2008
Messaggi: 8406
|
Quote:
da come hanno implementato le classi si capisce che si puntava a fare la cosa più semplice possibile non è sbagliato a priori se la priorità è lanciare il prodotto nel minor tempo possibile Quote:
che poi possiamo dire che TextView non dev'essere cliccabile o che EditText dev'essere l'unica ad essere editabile, ecc... il vantaggio della loro scelta si può vedere qui http://developer.android.com/referen...view/View.html nella sezione "Implement a custom view" |
||
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 17:15.












ovvero gli "schemi da evitare" che di solito prendono forma quando si parte male nello sviluppo oppure per varie ragioni si fanno molte modifiche progressive ed aggiornamenti ad un software senza considerare che effetto hanno sulla "struttura del sistema complessivo".







