PDA

View Full Version : [JAVA] Programma svolto all'uni...mi servirà? =)


D4rkAng3l
29-04-2009, 17:06
Ciao,
allora questo semestre dovrò dare un secondo esame di programmazione orientata agli oggetti...oddio ho appena iniziato a studiarlo seriamente e l'esame si avvicina...
Al terzo anno avrò altri corsi per approfondire però volevo sapere se visto il programma potrebbe già essere sufficiente per fare qualcosa di concreto dal punto di vista "lavorativo" (che ne sò uno stage o booo) oppure se per adesso tutta sta roba me la tiro ancora in fronte e basta...

Programma
Prima parte: metodologie di programmazione
Astrazione e decomposizione come metodologia di programmazione. Astrazione per parametrizazione e per specifica. Tipi di astrazione.
Astrazione procedurale. Specifiche. Specifiche per l'astrazione procedurale. Progetto di astrazioni procedurali.
Eccezioni. Il meccanismo delle eccezioni in Java. Utilizzo delle eccezioni: riflessione e mascheramento, quando usare le eccezioni, eccezioni checked e unchecked.
Astrazione sui dati. Specifiche, implementazione ed utilizzo delle astrazioni sui dati. La funzione di astrazione. L'invariante di rappresentazione. Effetti collaterali benefici. Progetto di astrazioni sui dati: mutabilità, adeguatezza, categorie di operazioni.
Astrazione sull'iterazione. Iterazione in Java, Specifica, implementazione ed utilizzo. Invarianti e funzione di astrazione. Progetto di astrazioni sull'iterazione.
Gerarchie di tipi. Assegnazione e dispatching. Definizione di una gerarchia di tipi. Tipi eccezione. Classi astratte ed interfacce. Implementazioni multiple. Significato dei sottotipi.
Astrazioni polimorfiche. Astrazioni sui dati di tipo polimorfico e suo utilizzo. Flessibilità. Procedure polimorfiche.

Seconda parte: linguaggio Java
Ereditarietà, classi astratte, interface.
Classi interne.
Eccezioni.
Iteratori.
Il sistema I/O di Java (cenni).
Finestre ed applet (cenni).
RTTI e riflessione.

Grazie
Andrea

D4rkAng3l
30-04-2009, 11:02
nessuna risposta? ci faccio qualcosa con questo esame oppure per poter iniziare a fare qualcosa di concreto dovrò prima seguire altri corsi?

Tnx
Andrea

gugoXX
30-04-2009, 11:05
E' un inizio, buono se fatto bene.
Meglio sicuro che studiare l'architettura e l'assembly del PDP11 (Sigh.)

D4rkAng3l
30-04-2009, 11:14
E' un inizio, buono se fatto bene.
Meglio sicuro che studiare l'architettura e l'assembly del PDP11 (Sigh.)

mah si la proff è brava e parecchio pignola...tranne che seppur fatto bene (ho iniziato da poco a studiarlo) ancora non ho idea di come passare da "esempi giocattolo" a soluzioni di problematiche concrete...dopo aver superato questo esame (escludendo gli ulteriori esami del terzo anno) se volessi iniziare a muovermi un po' nel mondo del lavoro (anche a livello di apprendistato\lavoretti\pseudo volontariato) cosa potrei fare?

gugoXX
30-04-2009, 11:18
mah si la proff è brava e parecchio pignola...tranne che seppur fatto bene (ho iniziato da poco a studiarlo) ancora non ho idea di come passare da "esempi giocattolo" a soluzioni di problematiche concrete...dopo aver superato questo esame (escludendo gli ulteriori esami del terzo anno) se volessi iniziare a muovermi un po' nel mondo del lavoro (anche a livello di apprendistato\lavoretti\pseudo volontariato) cosa potrei fare?

Cercare un'azienda che abbia tempo e risorse per affiancarti a qualcuno che abbia pazienza di seguirti nei primi mesi di lavoro, conscio di essere all''inizio piu' un peso che una risorsa produttiva.
Sara' brutta ma e' cosi', davvero. Non ho visto nessuno, nemmeno i 110 e lode, nemmeno i Geeks smanettoni riuscire ad essere veramente produttivi in un gruppo di lavoro gia' dall'inizio.
Come dire, un esame non e' sufficiente. Magari puo' essere necessario conoscere i concetti li' espressi, ma non basta di sicuro per potersi dire "programmatori Java".

banryu79
30-04-2009, 11:33
Quoto gugoXX.
Solo l'esperienza diretta, appunto "di lavoro", ti insegna a lavorare, non ci sono molte scappatoie.

Quello che puoi fare tu prima, è "solo" prepararti studiando bene ed esercitandoti nel'utilizzo degli strumenti che dovrai adoperare al lavoro (linguaggio, librerie, ambiente di sviluppo) e, se hai la fortuna di poter studiare da buone fonti (libri? prof? esercitazioni con altri studenti?), acquisire la forma mentis adatta per il problem solving e il design del software nella prospettiva object oriented (visto che comunque stiamo parlando di Java).

@EDIT:
Anche la conoscenza di pseudo-implementazioni in Java degli algoritmi più comuni può tornare comoda.

gugoXX
30-04-2009, 11:42
Se nel primo periodo di lavoro conti di iniziare come sviluppatore di applicativi, una cosa abbastanza utile potrebbe essere quella di comprare il libro della GO4 e di rifare il loro progetto, ovvero un editor di testo, nel linguaggio (ad oggetti) che pensi di scegliere, es: in C#, Java o Python.
Loro l'hanno sviluppato in SmallTalk, e l'hanno speigato nel libro in C++.

In pratica arriveresti a "produrre" un editor di testo con le palle, ma soprattutto impareresti ad usare i pattern. Cosi' potrai decidere a posteriori se ti piacciono oppure no, ma con cognizione di causa.
Qui a Londra sono molto richiesti.

banryu79
30-04-2009, 13:25
Se nel primo periodo di lavoro conti di iniziare come sviluppatore di applicativi, una cosa abbastanza utile potrebbe essere quella di comprare il libro della GO4 e di rifare il loro progetto...

...ma soprattutto impareresti ad usare i pattern. Cosi' potrai decidere a posteriori se ti piacciono oppure no, ma con cognizione di causa.
Qui a Londra sono molto richiesti.
Sono ignorante in materia, perchè conosco solo alcuni pattern su cui mi sono dovuto documentare da me per motivi di lavoro; non ho ancora letto il libro dei quattro.
La mia curiosità e la seguente: quale sarebbe, se esite una "pratica" codificata, l'alternativa all'utilizzo di un Design Pattern nella precisa circostanza in cui ci si trova ad affrontare una problema di design che è già stato risolto con un design pattern e ne si è a conoscenza?

Non so se la mia domanda ha senso.

banryu79
30-04-2009, 13:35
Inoltre volevo segnalare una risorsa che forse potrà tornare utile anche all'autore del thread, ed è il testo noto come: "Building Skills in Object Oriented Design", qui il link (http://homepage.mac.com/s_lott/books/oodesign.html) al sito.

Io ho appena cominciato a studiarlo e lo trovo interessante; i concetti espressi sono indipendenti dal linguaggio di programmazione specificio anche se la prospettiva è quella OO; i linguaggi di riferimento per l'implemtazione della/e esercitazione/i contenuta/e (e relativi tool/librerie di sviluppo) sono due: Java e Python.

I requisiti per affrontarlo sono la conoscenza di uno dei due linguaggi, familiarità nell'uso del rispettivo ambiente di sviluppo e una basilare conoscenza dello Unit Testing.

gugoXX
30-04-2009, 14:42
Sono ignorante in materia, perchè conosco solo alcuni pattern su cui mi sono dovuto documentare da me per motivi di lavoro; non ho ancora letto il libro dei quattro.
La mia curiosità e la seguente: quale sarebbe, se esite una "pratica" codificata, l'alternativa all'utilizzo di un Design Pattern nella precisa circostanza in cui ci si trova ad affrontare una problema di design che è già stato risolto con un design pattern e ne si è a conoscenza?

Non so se la mia domanda ha senso.

Non l'ho capita bene in effetti.
Mi spiazza la parola "Alternativa".

Se stai chiedendo se si puo' risolvere in altro modo un problema che normalmente si potrebbe risolvere con un pattern che si conosce, ovviamente la risposta e' si'.
Talvolta anche a fronte di problemi noti si sceglie di non risolvere la questione con un pattern di quelli noti ben disegnati, perche' puo' essere che si stia sparando il classico colpo di cannone ad una formica, e quindi si sceglie di adottare una versione semplificata, il piu' delle volte poco generalizzabile e poco espandibile. Ma se il problema e' limitato, chiuso e ben definito, allora ben venga il non usare alcun pattern e usare invece una soluzione custom.

Ma se si pensa che la formica possa crescere in futuro allora il pattern corretto e' quasi sempre la risposta giusta per evitare di dover gettare via tanto codice, oppure magari doverne scrivere tanto in piu' in futuro.

banryu79
30-04-2009, 17:06
Ok grazie, hai capito perfettamente la mia domanda.