Benvenuto!
Accedi
o
registrati
.
08-12-2019, 19:03:17
Home
CDL Informatica
UniCT
CEA
Prof
Help
Search
Calendar
Login
Register
Forum Informatica Unict
»
LAUREA TRIENNALE (D.M. 270/04)
»
I anno
»
Programmazione 1, 9 CFU
(Moderators:
Gianluca Cincotti
,
fmessina
) »
Accesso a variabili appartenenti ad una sottoclasse
Pages: [
1
]
2
Go Down
« precedente
successivo »
Print
Author
Topic: Accesso a variabili appartenenti ad una sottoclasse (Read 3453 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
crypt0
Apprendista Forumista
Offline
Posts: 109
Accesso a variabili appartenenti ad una sottoclasse
«
on:
25-02-2010, 15:46:32 »
Salve.
Temo di aver fatto due errori che potrebbero aver compromesso l'esito positivo della terza parte di oggi.
La mia domanda è:
Data una gerarchia A<--B<--C, ho in C una variabile di istanza public (che chiamo x) non presente nella superclasse A.
Inizializzo un vettore di elementi A che istanzio scegliendo casualmente tra B e C.
Posso accedere ad x scrivendo semplicemente A.x oppure è essenziale il casting?
Logged
R3m
Apprendista Forumista
Offline
Gender:
Posts: 486
Re:Accesso a variabili appartenenti ad una sottoclasse
«
Reply #1 on:
25-02-2010, 15:54:12 »
Nell'array ci sono n elementi di B e C..se tenti di accedere a B.x o a C.x, nel caso in cui l'indice dell'array trovi C sei a posto..se trovi B no, e il casting è essenziale(meglio comunque usare l'instanceof).
Hai comunque sbagliato perchè scrivendo A.x accedi praticamente nel nulla, dato che gli oggetti sono di tipo B o C. (non sono comunque sicuro di quest'ultima cosa)
Logged
Ciò che è nostro è stato in campo sudato....ciò che vostro è stato in aula assegnato.
In serie B non sei mai stato perchè la prescrizione t'ha salvato.
crypt0
Apprendista Forumista
Offline
Posts: 109
Re:Accesso a variabili appartenenti ad una sottoclasse
«
Reply #2 on:
25-02-2010, 15:56:27 »
Io ho un array del tipo
Code:
A vett = new A[30];
Dove ogni elemento è inizializzato a caso tra B e C.
x sta solo in C e la chiamo con vett[ i].x (dopo aver controllato che vett
fosse istanza di C)
«
Last Edit: 25-02-2010, 15:58:38 by crypt0
»
Logged
R3m
Apprendista Forumista
Offline
Gender:
Posts: 486
Re:Accesso a variabili appartenenti ad una sottoclasse
«
Reply #3 on:
25-02-2010, 16:02:17 »
Se controlli vett cambia tutto xD in questo caso tu escludi tutte le classi non-C..quindi quando esegui qualunque operazione la esegui solo su istanze di C...quindi si, funziona.
Logged
Ciò che è nostro è stato in campo sudato....ciò che vostro è stato in aula assegnato.
In serie B non sei mai stato perchè la prescrizione t'ha salvato.
crypt0
Apprendista Forumista
Offline
Posts: 109
Re:Accesso a variabili appartenenti ad una sottoclasse
«
Reply #4 on:
25-02-2010, 16:03:19 »
Anche senza casting?
Ricorda che le ho dichiarate come A, anche se fanno effettivamente parte di C.
Scusa la mia insistenza, ma sono diventato quasi paranoico ... in pratica se questa non va ho toppato alla grande
Logged
R3m
Apprendista Forumista
Offline
Gender:
Posts: 486
Re:Accesso a variabili appartenenti ad una sottoclasse
«
Reply #5 on:
25-02-2010, 16:12:39 »
non hai dichiarato A ogni elemento del vettore hai dichiarato A il vettore stesso...in pratica il pc istanzia nella ram un vettore lungo n elementi sapendo a priori che conterrà A o qualunque sottoclasse di A, quando poi istanzi ad es nella posizione 0 B e nella 1 C tu hai il primo elemento B e il secondo C...in questo specifico caso non hai nessun oggetto A presente nel vettore, e dato che hai escluso (credo con l'instanceof) ogni elemento B, praticamente ti rimangono solo C.
Logged
Ciò che è nostro è stato in campo sudato....ciò che vostro è stato in aula assegnato.
In serie B non sei mai stato perchè la prescrizione t'ha salvato.
crypt0
Apprendista Forumista
Offline
Posts: 109
Re:Accesso a variabili appartenenti ad una sottoclasse
«
Reply #6 on:
25-02-2010, 16:27:03 »
Quote from: R3m on 25-02-2010, 16:12:39
non hai dichiarato A ogni elemento del vettore hai dichiarato A il vettore stesso...in pratica il pc istanzia nella ram un vettore lungo n elementi sapendo a priori che conterrà A o qualunque sottoclasse di A, quando poi istanzi ad es nella posizione 0 B e nella 1 C tu hai il primo elemento B e il secondo C...in questo specifico caso non hai nessun oggetto A presente nel vettore, e dato che hai escluso (credo con l'instanceof) ogni elemento B, praticamente ti rimangono solo C.
Grazie mille!
Mi hai salvato da più di una settimana di bile.
Logged
R3m
Apprendista Forumista
Offline
Gender:
Posts: 486
Re:Accesso a variabili appartenenti ad una sottoclasse
«
Reply #7 on:
25-02-2010, 16:39:33 »
Di niente
Logged
Ciò che è nostro è stato in campo sudato....ciò che vostro è stato in aula assegnato.
In serie B non sei mai stato perchè la prescrizione t'ha salvato.
ɹǝǝuıƃuǝsɹǝʌǝɹ
Administrator
God of the Forum
Offline
Gender:
Posts: 4.475
Più grande è la lotta, e più è glorioso il trionfo
Re:Accesso a variabili appartenenti ad una sottoclasse
«
Reply #8 on:
25-02-2010, 16:43:48 »
Contradicitur
.
crypt0
, purtroppo avevi ragione a pensare che avevi fatto un errore.
Non so quanto peserà sulla valutazione, si badi, però è comunque un errore che impedisce la compilazione.
Una volta che dichiari un array con:
Code:
A vett = new vett [30];
per Java, ogni elemento di
vett
è sicuramente una variabile reference a oggetto di tipo
A
, anche se dovesse contenere elementi di tipo
B
o
C
(che sono comunque anche di tipo
A
, rendendo ancora più vera la mia frase precedente).
Accedendo a:
Code:
vett [i].x
si provoca l'errore in compile-time:
Quote
tuoFile.java:riga: cannot find symbol
symbol : variable x
location: class A
System.out.println ("vett [" + i + "].x = " + vett [
i].x);
^
(giusto per fare un esempio di accesso a tale elemento).
Quindi, il casting va ovviamente fatto tramite
(C) vett [
i]
, ma solo
dopo
essersi assicurati che l'elemento è davvero (anche) di tipo
C
tramite
instanceof
.
Sorry guys
...
Logged
La grande marcia della distruzione mentale proseguirà. Tutto verrà negato. Tutto diventerà un credo. È un atteggiamento ragionevole negare l'esistenza delle pietre sulla strada; sarà un dogma religioso affermarla. È una tesi razionale pensare di vivere tutti in un sogno; sarà un esempio di saggezza mistica affermare che siamo tutti svegli. Accenderemo fuochi per testimoniare che due più due fa quattro. Sguaineremo spade per dimostrare che le foglie sono verdi in estate. Non ci resterà quindi che difendere non solo le incredibili virtù e saggezze della vita umana, ma qualcosa di ancora più incredibile: questo immenso, impossibile universo che ci guarda dritto negli occhi. Combatteremo per i prodigi visibili come se fossero invisibili. Guarderemo l'erba e i cieli impossibili con uno strano coraggio. Saremo tra coloro che hanno visto eppure hanno creduto.
In tutto, amare e servire.
✚
ن
I can deal with ads,
I can deal with buffer,
but when ads buffer
I suffer...
...nutrimi, o Signore, "con il pane delle lacrime; dammi, nelle lacrime, copiosa bevanda...
▶
YouTube
❾
9GAG
ⅱ
anobi
i
S
Steam
☺
T.B.o.I. Wiki
[
]
Lezioni private
ʼ
Albo d'Ateneo
Unicode 3.0.1
Usa "Search" prima di aprire un post - Scrivi sempre nella sezione giusta - Non spammare - Rispetta gli altri utenti - E ricorda di seguire il
Regolamento
LexaIdo
Apprendista Forumista
Offline
Gender:
Posts: 110
Re:Accesso a variabili appartenenti ad una sottoclasse
«
Reply #9 on:
25-02-2010, 16:45:26 »
Quote from: crypt0 on 25-02-2010, 16:27:03
Quote from: R3m on 25-02-2010, 16:12:39
non hai dichiarato A ogni elemento del vettore hai dichiarato A il vettore stesso...in pratica il pc istanzia nella ram un vettore lungo n elementi sapendo a priori che conterrà A o qualunque sottoclasse di A, quando poi istanzi ad es nella posizione 0 B e nella 1 C tu hai il primo elemento B e il secondo C...in questo specifico caso non hai nessun oggetto A presente nel vettore, e dato che hai escluso (credo con l'instanceof) ogni elemento B, praticamente ti rimangono solo C.
Grazie mille!
Mi hai salvato da più di una settimana di bile.
scusa ma io credo che invece il casting serva comunque
perchè a me è capitato che senza il casting mi segnalava un errore
cioè io dopo l'instanceof metto sempre il casting (C in questo caso)....
poi nn lo so, credo che ti convenga controllare tu stesso col compilatore
«
Last Edit: 25-02-2010, 16:48:18 by LexaIdo
»
Logged
ɹǝǝuıƃuǝsɹǝʌǝɹ
Administrator
God of the Forum
Offline
Gender:
Posts: 4.475
Più grande è la lotta, e più è glorioso il trionfo
Re:Accesso a variabili appartenenti ad una sottoclasse
«
Reply #10 on:
25-02-2010, 16:47:43 »
Ti ho anticipato
LexaIdo
, e il forum ti dovrebbe pure aver avvertito che qualcun altro aveva risposto ancora mentre tu scrivevi quando hai premuto "Post"
...
Sorry
...
Logged
La grande marcia della distruzione mentale proseguirà. Tutto verrà negato. Tutto diventerà un credo. È un atteggiamento ragionevole negare l'esistenza delle pietre sulla strada; sarà un dogma religioso affermarla. È una tesi razionale pensare di vivere tutti in un sogno; sarà un esempio di saggezza mistica affermare che siamo tutti svegli. Accenderemo fuochi per testimoniare che due più due fa quattro. Sguaineremo spade per dimostrare che le foglie sono verdi in estate. Non ci resterà quindi che difendere non solo le incredibili virtù e saggezze della vita umana, ma qualcosa di ancora più incredibile: questo immenso, impossibile universo che ci guarda dritto negli occhi. Combatteremo per i prodigi visibili come se fossero invisibili. Guarderemo l'erba e i cieli impossibili con uno strano coraggio. Saremo tra coloro che hanno visto eppure hanno creduto.
In tutto, amare e servire.
✚
ن
I can deal with ads,
I can deal with buffer,
but when ads buffer
I suffer...
...nutrimi, o Signore, "con il pane delle lacrime; dammi, nelle lacrime, copiosa bevanda...
▶
YouTube
❾
9GAG
ⅱ
anobi
i
S
Steam
☺
T.B.o.I. Wiki
[
]
Lezioni private
ʼ
Albo d'Ateneo
Unicode 3.0.1
Usa "Search" prima di aprire un post - Scrivi sempre nella sezione giusta - Non spammare - Rispetta gli altri utenti - E ricorda di seguire il
Regolamento
crypt0
Apprendista Forumista
Offline
Posts: 109
Re:Accesso a variabili appartenenti ad una sottoclasse
«
Reply #11 on:
25-02-2010, 16:49:10 »
Dannazione ...
Sapevo di dover mettere il casting
Purtroppo me ne sono reso conto solo dopo aver consegnato il compito.
Il problema è che così facendo mi si bloccano ben due parti di codice su 3!
Spero che il prof sia comprensivo.
Grazie lo stesso.
Logged
LexaIdo
Apprendista Forumista
Offline
Gender:
Posts: 110
Re:Accesso a variabili appartenenti ad una sottoclasse
«
Reply #12 on:
25-02-2010, 16:50:58 »
Quote from: reversengineer on 25-02-2010, 16:47:43
Ti ho anticipato
LexaIdo
, e il forum ti dovrebbe pure aver avvertito che qualcun altro aveva risposto ancora mentre tu scrivevi quando hai premuto "Post"
...
Sorry
...
hai ragione
non ci ho fatto caso
Logged
R3m
Apprendista Forumista
Offline
Gender:
Posts: 486
Re:Accesso a variabili appartenenti ad una sottoclasse
«
Reply #13 on:
25-02-2010, 17:39:29 »
per fortuna io non ho scritto cose simili sul compito
(vorrei anche sapere dove precisamente ti spunta una cosa simile nella terza prova di oggi)..mi dispiace di averti detto una c*****a xD comunque quando devi accedere a delle variabili, qualunque esse siano conviene pensare sempre alla superclasse che contiene tutto il necessario, in questo caso bastava che x fosse protected dentro A e avrebbe funzionato...comunque un altro "errore" che hai fatto è anche il non usare un eventuale getX()
Logged
Ciò che è nostro è stato in campo sudato....ciò che vostro è stato in aula assegnato.
In serie B non sei mai stato perchè la prescrizione t'ha salvato.
crypt0
Apprendista Forumista
Offline
Posts: 109
Re:Accesso a variabili appartenenti ad una sottoclasse
«
Reply #14 on:
25-02-2010, 17:59:56 »
Quote from: R3m on 25-02-2010, 17:39:29
per fortuna io non ho scritto cose simili sul compito
(vorrei anche sapere dove precisamente ti spunta una cosa simile nella terza prova di oggi)..mi dispiace di averti detto una c*****a xD comunque quando devi accedere a delle variabili, qualunque esse siano conviene pensare sempre alla superclasse che contiene tutto il necessario, in questo caso bastava che x fosse protected dentro A e avrebbe funzionato...comunque un altro "errore" che hai fatto è anche il non usare un eventuale getX()
Allora ... appare nella prima richiesta, quella di trovare il libro con il minor numero di parole.
Avevamo la variabile P che indicava appunto il numero di parole del libro, che io ho erroneamente richiamato con vett[i ].P
Poi nella seconda si chiedeva di giustificare tutte le pagine del terzo calendario dell'archivio.
Ho trovato la terza istanza di Calendari e poi ho richiamato:
for(int i=0; i<vett[i ].pagine.length; i++)
vett[i ].pagine
.giustifica();
Logged
Pages: [
1
]
2
Go Up
Print
« precedente
successivo »
Jump to:
Please select a destination:
-----------------------------
Area Ufficiale
-----------------------------
=> Annunci Ufficiali
=> Segreteria Didattica
=> Aiuto, proposte e commenti
=> Stages e progetti finali
=> C.O.F. Centro Orientamento e Formazione
=> Messaggi (d)agli amministratori del forum
-----------------------------
LAUREA TRIENNALE (D.M. 270/04)
-----------------------------
=> I anno
===> Architettura degli Elaboratori, 9 CFU
===> Elementi di Analisi Matematica, 12 CFU
===> Fondamenti di Informatica, 9 CFU
===> Matematica Discreta, 12 CFU
===> Programmazione 1, 9 CFU
===> Programmazione 2, 9 CFU
=> II anno
===> Algoritmi, 9 CFU
===> Basi di Dati, 9 CFU
===> Fisica, 9 CFU
===> Ingegneria del Software, 9 CFU
===> Inglese, 3 e 6 CFU
===> Interazione e Multimedia, 9 CFU
===> Sistemi Operativi, 9 CFU
=> III anno
===> Calcolo Numerico, 6 CFU
===> Formazione Numerica, 6 CFU
===> Introduzione all'Analisi dei Dati, 9 CFU
===> Metodi Matematici e Statistici, 6 CFU
===> Reti di Calcolatori, 9 CFU
===> Tecniche di Programmazione Concorrente e Distribuita, 9 CFU
===> Teoria dell'Informazione e Crittografia, 9 CFU
=> III anno - Materie a scelta (crediti liberi)
===> Computer Forensics, 6 CFU
===> Computer Graphics, 9 CFU
===> Digital Game Development, 6 CFU
===> GPGPU/CUDA, 6 CFU
===> Informatica Musicale, 6 CFU
===> LAP 1: programmazione C/C++ 6 CFU
===> LAP 2: Programmazione Android, 6 CFU
===> Sistemi Centrali, 6 CFU
===> Startup d'impresa e Modelli di Business, 6 CFU
===> Internet Security 9 CFU
===> Social Media Management, 6 CFU
=> Corsi disattivati - Vecchio curriculum
===> E-Commerce, 6 CFU
===> Legislazione Informatica, 6 CFU
===> Teoria della Computabilità, 9 CFU
-----------------------------
LAUREA MAGISTRALE
-----------------------------
=> I ANNO
===> Intelligenza Artificiale e Lab, 9 CFU
===> Algoritmi e Complessità, 9 CFU
===> Computer Vision, 9 CFU
===> Crittografia, 9 CFU
===> Fondamenti e Linguaggi per la Programmazione Distribuita
===> Inglese Scientifico, 3 CFU
===> Metodi analitici per l'informatica, 6 CFU
===> Metodi Matematici per l'Ottimizzazione (Corso Integrato), 12 CFU
===> Multimedia, 9 CFU
===> Sicurezza dei Sistemi Informatici 9 CFU
===> Computer Security, 9 CFU
=> II ANNO
===> Machine Learning 6 CFU
===> Teoria della Computabilità, 9 CFU
===> Analisi e Gestione dei Dati, 9 CFU
===> Compilatori, 9 CFU
===> Computazione Naturale e BioIspirata, 6 CFU
===> Introduzione alla Bioinformatica, 9 CFU
===> Linguaggi Formali e Applicazioni, 9 CFU
===> Logica Computazionale, 9 CFU
===> P2P & Wireless Networks, 9 CFU
===> Pattern Recognition, 9 CFU
===> Sistemi Distribuiti, 9 CFU
===> Sistemi dedicati e laboratorio, 9 CFU
===> Web Reasoning
=> Corsi disattivati - Vecchio curriculum
===> Fisica moderna per l'informatica, 6 CFU
===> Linguaggi di Programmazione, 9 CFU
===> Protocolli di Rete
===> Teoria dei Codici, 6 CFU
-----------------------------
Vecchi ordinamenti ad esaurimento
-----------------------------
=> Laurea Triennale (D.M. 509/00)
===> Algoritmi 1
===> Algoritmi 2
===> Basi Teoriche dell'Informatica
===> Economia Aziendale
===> Fisica 1, 6 CFU
===> Fisica 2, 6 CFU
===> Fisica 3
===> Formazione Analitica 1
===> Formazione Analitica 2
===> Formazione Discreta 1
===> Formazione Discreta 2
===> J2ME
===> Lab. Amministrazione di Sistemi
===> Laboratorio di Interazione
===> Modelli Matematici
===> Multimedia per Dispositivi Mobile
===> Progetto Software
===> Reti 1, 6 CFU
===> Sicurezza dei Sistemi Informatici 1
===> Sistemi Distribuiti 1
===> Teoria dei Grafi
===> Usabilità ed Estetica del Web
===> Web Programming
=> Laurea Specialistica (D.M. 509/00)
===> Algoritmi 3
===> Analisi Numerica
===> Complessità
===> Computabilità
===> Data analysis e management
===> Ingegneria del software 2
===> Linguaggi Formali
===> Metodi algoritmici per l'ottimizzazione combinatoria
===> Programmazione Funzionale
===> Reti di Calcolatori 2
===> Ricerca Operativa
===> Sistemi Distribuiti 2
-----------------------------
Dottorandi
-----------------------------
=> Wall
=> Events
-----------------------------
Area Studenti
-----------------------------
=> Agorà
=> L'angolo del tecnico
=> Il Mercatino degli studenti
=> Software
===> -vecchia catalogazione [sarà rimossa a breve]-
=====> Proprietario
=====> Free Software
=====> Open Source
===> Approfondimenti
===> News
===> Studio
===> Videogiochi
===> Networking e telecomunicazioni
===> Sviluppo
===> Ufficio e produttività
===> Sistemi Operativi
=====> Microsoft Windows
=====> GNU/Linux, Unix e BSD
=====> Mac OS X
=====> Windows Phone
=====> Android
=====> iOS
=====> Altri
===> Eventi, conferenze, concorsi
=> Microsoft Student Partner - Avvisi e informazioni
=> ERASMUS/borse di studio internazionali
Caricamento in corso...