View Full Version : [TEST] Conosci davvero Java?
superbubba
02-09-2005, 10:31
Java è un linguaggio complicato.
Avendo un sacco di colleghi in disaccordo con questa tesi, mi sono preparato una piccola lista di domande per dimostrare che nemmeno loro si immaginano quanto sia complicato ;)
http://verbat.blogspot.com/2005/08/java-conosci-davvero-java_31.html
RaouL_BennetH
02-09-2005, 10:45
Java è un linguaggio complicato.
Avendo un sacco di colleghi in disaccordo con questa tesi, mi sono preparato una piccola lista di domande per dimostrare che nemmeno loro si immaginano quanto sia complicato ;)
http://verbat.blogspot.com/2005/08/java-conosci-davvero-java_31.html
Allora,io non conosco Java,ma alcune delle domande che hai posto non riguardano solo Java ma credo quasi tutti i linguaggi di programmazione.In particolar modo la sezione dove poni la domanda sui modificatori e dove poi fai riferimento alle assegnazioni sulle variabili (che sono praticamente le stesse di qualsiasi linguaggio).
EDIT: non ho visto che più sotto c'erano anche le risposte.
Resta inteso che non ho capito cosa vorresti dimostrare :)
Sembra un'esame dell'uni :D
Da un esame di programmazione orientata agli oggetti che ha fatto strage :)
Era composto da 50 domande di questo tipo più un programma da scrivere...
Seguono dei predicati. Per ciascuno di essi, rispondere vero o falso.
11.1. Le funzioni sono generalmente equivalenti in modo forte ai metodi d’istanza. VERO | FALSO
11.2. Il polimorfismo è un elemento necessario per la programmazione a oggetti. VERO | FALSO
11.3. I “template” sono elementi necessari per la programmazione a oggetti. VERO | FALSO
11.4. In Java possono usarsi solo classi e oggetti. VERO | FALSO
11.5. In C++ possono usarsi solo classi e oggetti. VERO | FALSO
11.6. Una variabile Java di tipo classe può contenere un tipo primitivo. VERO | FALSO
11.7. Una variabile C++ di tipo classe può contenere direttamente l’istanza di un corrispondente oggetto. VERO |
FALSO
11.8. Una variabile Java di tipo classe può contenere solo referenze. VERO | FALSO
11.9. Una variabile Java di tipo classe può contenere solo referenze a oggetti del suo stesso tipo statico. VERO |
FALSO
11.10.Una variabile C++ relativa ad oggetti dinamici può contenere solo un puntatore. VERO | FALSO
11.11. Una variabile C++ relativa ad oggetti dinamici può contenere solo un puntatore del suo stesso tipo. VERO
| FALSO
11.12. L’ereditarietà è una relazione statica fra classi. VERO | FALSO
11.13. In Java, lo scambio di messaggi fra oggetti è una relazione dinamica. VERO | FALSO
11.14. Se due oggetti scambiano messaggi allora le loro classi sono direttamente in relazione. VERO | FALSO
11.15. Se due oggetti scambiano messaggi allora le loro classi sono direttamente in relazione statica. VERO |
FALSO
11.16. Se una classe è associata a un’altra allora il costruttore dell’una inizializza un riferimento all’altra. VERO |
FALSO
11.17. Il costruttore di una classe, per creare e inizializzare attributi d’istanza della stessa classe, chiama
ricorsivamente se stesso. VERO | FALSO
11.18. Una classe pubblica può avere costruttori privati. VERO | FALSO
11.19. Una classe astratta può avere costruttori privati. VERO | FALSO
11.20. Una classe astratta può avere costruttori pubblici. VERO | FALSO
11.21. Una classe USED da altra può avere tutti metodi statici. VERO | FALSO
11.22. Una classe USED da altra può avere tutti metodi d’istanza. VERO | FALSO
11.23. In Java, una classe USED da altra può avere alcuni metodi d’istanza e altri di classe. VERO | FALSO
11.24. In Java, una classe figlia può [ri] definire metodi non final della classe madre. VERO | FALSO
11.25. In Java, una classe figlia può ridefinire metodi della classe nonna. VERO | FALSO
11.26. In Java, una classe figlia può sovrascrivere i costruttori della classe nonna. VERO | FALSO
11.27. Una classe figlia può avere attributi omonimi a quelli definiti nella madre. VERO | FALSO
11.28. Una classe figlia sovrascrive gli attributi omonimi della madre. VERO | FALSO
11.29. Una classe non può contenere attributi omonimi ma di tipo diverso. VERO | FALSO
11.30. Una classe non può contenere metodi omonimi. VERO | FALSO
11.31. In Java, una classe non può contenere metodi di diverso tipo restituito e per il resto eguale intestazione.
VERO | FALSO
11.32. In C++, una classe non può contenere metodi di diverso tipo restituito e per il resto eguale intestazione.
VERO | FALSO
11.33. Un metodo statico, per poter correttamente operare su oggetti dinamici, deve agganciarli a variabili di
classe. VERO | FALSO
11.34. Il polimorfismo è determinato dal ricevitore. VERO | FALSO
11.35. Il uno scambio di messaggi, il trasmettitore è passato implicitamente al ricevitore (parametro nascosto).
VERO | FALSO
11.36. Il uno scambio di messaggi, il ricevitore è sempre passato implicitamente come parametro di scambio
(nascosto). VERO | FALSO
11.37. In C++ è vietato l’uso di “this” in un costruttore. VERO | FALSO
11.38. In Java “this” identifica il ricevitore e “this(…)” un costruttore. VERO | FALSO
11.39. In Java, l’impiego di “this(…)” è ammesso nei costruttori. VERO | FALSO
11.40. Un argomento di tipo classe astratta può, in chiamata, essere solo un’istanza di un discendente concreto.
VERO | FALSO
11.41. Possono esistere istanze di classi astratte. VERO | FALSO
11.42. In una relazione di ereditarietà multipla attributi e metodi provenienti da diverse classi ascendenti
potrebbero entrare in collisione. VERO | FALSO
Non ho le risposte...alcune sembreranno banali ma altre lo sono meno :)
mma, da me programmazione orientata ad oggetti e tutta pratica, devi programmà!!! in java....ti danno il tempo appena sufficiente per fare un compito diviso in esercizi ma che alla fine ti porta a fare un main funzionante che utilizzi le classi fatte negli esercizi precedenti...cmq, tornando al complicato, secondo me complicato non significa questo, ogni linguaggio ha delle funzionalità avanzate (che possono riusultare complicate), dal test dal mio punto di vista non si evince la complessità di java, solo delle particolarità a cui bisogna stare attenti
Bè..l'esame non era solo quello, bisognava anche consegnare un progetto...anche corposo :)
Il tutto in 2 mesi...ah!...questo nuovo ordinamento....
Comunque secondo me da quel test non si vede quanto è complesso java, ma solo alcune caratteristiche particolari (ogni linguaggio ha le sue, tipo i modifier) e come si comporta il compilatore in casi estremi (come la dichiarazione dopo l'uso). Poi un pò di programmazione concorrente ci voleva, quella è veramente tosta secondo me...brutta gatta da pelare anche per fare l'esame.
mma, da me programmazione orientata ad oggetti e tutta pratica, devi programmà!!! in java....ti danno il tempo appena sufficiente per fare un compito diviso in esercizi ma che alla fine ti porta a fare un main funzionante che utilizzi le classi fatte negli esercizi precedenti...cmq, tornando al complicato, secondo me complicato non significa questo, ogni linguaggio ha delle funzionalità avanzate (che possono riusultare complicate), dal test dal mio punto di vista non si evince la complessità di java, solo delle particolarità a cui bisogna stare attenti
Diciamo che le "particolarità" evidenziate nel test sono in effetti dei casi molto particolari di programmazione ad oggetti e non (mi riferisco in particolare ai due quesiti sui limiti del tipo int). Naturalmente è importante che chi studia il linguaggio Java in maniera teorica, magari con l'intento di riprogettarne alcune parti od evidenziarne delle pecurialità, le conosca e le conosca bene; per tutti gli altri, non credo di sbagliare affermando che seguendo alcune regole di "buona programmazione" (un po' di euristica, un po' di istinto, un po' di "best practices" o regole di esperienza) casi del genere non si incontrino mai quando si programma nel mondo reale, cioè con una finalità ben precisa...
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.