|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Bannato
Iscritto dal: May 2007
Città: Vivo in un mondo in cui tutti ti accusano e ti additano per un nonulla...
Messaggi: 9995
|
[JAVA] mi aiutate con le sottoclassi?
Ciao a tutti,
è la prima volta che posto in questa sezione e spero ci sia qualche anima pia che pazientemente mi spieghi il da farsi ![]() A scuola abbiamo iniziato a trattare di classi (oggetti, attributi e metodi, metodi più comuni tra i quali il costruttore, il get, il set, il toString,...) Adesso il professore ci ha detto di pensare ad una classe madre COMPUTER e a due sottoclassi, SCHEDA_VIDEO e HDD; la classe HDD in particolare avrà gli attributi: marca, modello, capacità, tempo di accesso, rpm. La sottoclasse Scheda video ad esempio potrebbe avere come attributi clock della GPU, tipo GPU, quantità VRAM onboard,... Mi sorgono però dei dubbi, dato che il prof sa spiegare davvero male e, teoricamente, non ha spiegato un tubo riguardo a classi e sottoclassi: 1) Premesso che si andrà a creare nel main project un vettore di record (oggetti), in cui ogni cella sarà composta dalla clase COMPUTER e dalle altre due sottoclassi, quando con un ciclo for, considerando ciascuna cella del vettore, acquisisco in variabili del programma principale i dati e poi per ciascuna cella del vettore invoco il metodo costruttore, per passare i parametri, come faccio dato che si tratta di classi e sottoclassi? Come far interagire le varie variabili tra classe e sottoclasse? Come dichiarare le due sottoclassi nella classe principale??? Non ditemi algoritmi troppo complessi: mastico Java a malapena e a livello scolastico ![]() ![]() |
![]() |
![]() |
![]() |
#2 | |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
![]() In sostanza la sotto-classe deve essere vista come una specializzazione, un caso particolare, della super-classe. Se ho una classe Animale, è logico e corretto creare due sotto-classi Gatto e Cane. Perché un Cane è-un Animale e lo stesso vale per Gatto. Ora veniamo alla relazione che hai indicato tu: un HDD è-un COMPUTER?? Direi proprio di no.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
![]() |
![]() |
![]() |
#3 | |
Bannato
Iscritto dal: May 2007
Città: Vivo in un mondo in cui tutti ti accusano e ti additano per un nonulla...
Messaggi: 9995
|
Quote:
|
|
![]() |
![]() |
![]() |
#4 | |
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
Quote:
![]() voglio dire, con tutta la buona volontà e dando per buono l'esempio del tuo prof, in quel diagramma UML che cosa ereditava la scheda grafica dal computer? quali metodi? quali campi pubblici/protetti? |
|
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Diciamo che lo vedrei meglio come relazione HAS-A, cioè un Computer ha un HDD e ha una SchedaVideo. Tradotto in codice sarebbe:
Codice:
class HDD { ... } class SchedaVideo { ... } class Computer { HDD hdd; SchedaVideo schedaVideo; }
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
![]() |
![]() |
![]() |
#6 | |||
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
Quote:
Quote:
Quote:
![]() |
|||
![]() |
![]() |
![]() |
#7 | |
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
Quote:
Codice:
class Computer { class HardDisk { ... } class GraphicsCard { ... } } |
|
![]() |
![]() |
![]() |
#8 |
Bannato
Iscritto dal: May 2007
Città: Vivo in un mondo in cui tutti ti accusano e ti additano per un nonulla...
Messaggi: 9995
|
Si forse è questo... praticamente COMPUTER ingloba SCHEDA VIDEO e HDD. Purtroppo non so dirvi altro... mannaggia al prof! Non capisco però bene come invocare il costruttore, passando in una volta soltanto i parametri a tutte e tre le classi...
|
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
Come ti hanno gia detto c' è un errore concettuale,una scheda video o un Hd non sono n computer...piu presumibilmente potrebbero essere ComponentiComputer allora il discorso sarebbe lineare.Altra interpretazione è quella che computer sia l' oggetto composto e hd e scheda video i componenti..implementabili in java attraverso le inner class come ti hanno fatto vedere su oppure con una cosa del genere
class Computer{ private SchedaVideo sV; private HD hD; ......... ......... } con il concetto di delagation.Questo però si esprime solitamente in UML come una aggregazione o composizione. I metodi set e get si utilizzano per implementare l' importante regola dell' incapsulamento ovvero nascondere all' esterno i dettagli implementativi e proteggere le variabili da settaggi non consoni. |
![]() |
![]() |
![]() |
#10 | |
Bannato
Iscritto dal: May 2007
Città: Vivo in un mondo in cui tutti ti accusano e ti additano per un nonulla...
Messaggi: 9995
|
Quote:
![]() |
|
![]() |
![]() |
![]() |
#11 |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
ovvio che in Java siano oggetti Java è un linguaggio object oriented ma la gestione delle sottoclassi si basa sul principio di sostituibilità:un server è anche un computer,un hd o una scheda video non sono un computer
|
![]() |
![]() |
![]() |
#12 | |
Bannato
Iscritto dal: May 2007
Città: Vivo in un mondo in cui tutti ti accusano e ti additano per un nonulla...
Messaggi: 9995
|
Quote:
Come posso far interagire questi tre oggetti in modo tale che HDD e SCHEDA_VIDEO siano "parte" dell'oggetto COMPUTER? Che codifica usare? E che costruttore per passare in una sola volta i valori di n variabili a tutti gli n attributi dei tre oggetti? |
|
![]() |
![]() |
![]() |
#13 |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
puoi fare qualcosa del genere
class Computer{ //costruttore public Computer(dati computer,dati hD,dati sV){ utilizzi i dati computer Hd hd=new Hd(dati hd); SV sV=new SV(dati sv);} ovviamente dove ho scritto dati si intendono i paramentri utili per ogni oggetto. |
![]() |
![]() |
![]() |
#14 | |
Bannato
Iscritto dal: May 2007
Città: Vivo in un mondo in cui tutti ti accusano e ti additano per un nonulla...
Messaggi: 9995
|
Quote:
Grazie 1000! |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 10:27.