Please ignore secret bonuses. Secret tests do NOT award bonus. Max hw grade is 30+2 bonus efficiency

Do you need help?

ES3 Dubbio costruttori classi

DRDLCN (8070 points)
27 68 104
in Info sul corso e sugli esami by (8.1k points)

Ragazzi ho un dubbio per quanto riguarda i costruttori delle classi Attore e Film 

cioe' : '''riceve come argomento un dizionario ricavato dal file films.json (o file json simile)
            che rappresenta un solo film
            ed assegna tutti i valori possibili agli attributi di istanza a partire dal dizionario json passato.

che significa questo? ^^^^^^^^^^^^^^^^^^^^^^^

io nel costruttore mi apro il dizionario relativo al film che ha come chiave il nome che passo al costruttore dal file json , sbaglio?

che altri valori dovrei assegnare?

io gli altri valori come durata, attori,titolo ecc me li calcolo nei relativi metodi andando a richiamare il dizionario singolo e come chiave ci metto ['TITLE'] o quel che sia..

539 views
closed

1 Answer

Best answer
_andrea_ (45670 points)
11 42 297
by (45.7k points)
selected by
È giusto così. Devi prendere i dati che ti serviranno dopo. Non so bene cosa significhi "tutti i valori possibili" ma devi solo prendere le cose come durata, luoghi ecc e salvarli nell'oggetto
DRDLCN (8070 points)
27 68 104
by (8.1k points)

ahhh quindi vanno messi nell'oggetto?

cioe' io come ti dicevo non li metto nel costruttore durata,luoghi ecc

io nel costruttore mi apro il dizionario specifico, ti faccio un esempio

film1.dizionario e mi ritorna il dizionario del film

dopo nei vari metodi chiamo ES: titolo = self.dizionario['TITLE']

o il titolo va messo nel costruttore?

_andrea_ (45670 points)
11 42 297
by (45.7k points)
Tutto quello che fai nell'init È il costruttore. Nell'init devi salvare tutti i dati che ti serviranno in futuro, ma passando come parametro sempre quel dizionario
DRDLCN (8070 points)
27 68 104
by (8.1k points)
ma che senso ha farlo...boh

a che servono tutti quei metodi dopo allora per ritornarti attori titolo ecc se li metti gia' nel costruttore e con un self.titolo li tiri fuori
_andrea_ (45670 points)
11 42 297
by (45.7k points)
Perché il tester non sa se tu inizializzi una variabile che si chiama self.titolo oppure self.t oppure self.tutto_tranne_titolo. Però sa che hai un metodo che si chiama titolo() che ritorna il titolo, indipendentemente dalla variabile a cui l'hai associato
DRDLCN (8070 points)
27 68 104
by (8.1k points)
allora va bene anche come l'ho pensato io

e nei vari metodi mi trovo quello che mi serve

tanto il test chiama i metodi per sapere il titolo quindi anche se non li definisco nell'init al test non cambia niente
andrea.sterbini (207920 points)
750 1267 2373
by (208k points)
Come dice bene @_andrea_ , per farvi decidere a voi che formato di dati usare per gli attributi dell'oggetti, ho definito dei metodi che fanno da interfaccia e che nascondono l'implementazione interna dell'oggetto.

Questo è lo stile della programmazione ad oggetti.
DRDLCN (8070 points)
27 68 104
by (8.1k points)
Quindi comunque nel costruttore dei salvare tutti gli attributi?
_andrea_ (45670 points)
11 42 297
by (45.7k points)
Non sei obbligato, ma se non lo fai suppongo che tu salvi tutto il dizionario. A sto punto conviene salvare solo i dati che servono
DRDLCN (8070 points)
27 68 104
by (8.1k points)
Esatto, io mi salvo tutto il dizionario e poi nei vari metodi analizzo il dizionario..

in termini di efficenza sai cosa sarebbe meglio?

EDIT:

ci sono dati che non servono?
_andrea_ (45670 points)
11 42 297
by (45.7k points)
Servono solo la data, il runtime, il titolo, i registi e gli attori se ricordo bene
DRDLCN (8070 points)
27 68 104
by (8.1k points)

Cosi, la cosa cambia allora...

Servono solo la data, il runtime, il titolo, i registi e gli attori se ricordo bene

questo^^^^ per la classe Film,

per la classe Attore quali sono gli attributi necessari da prendere dal dict?

_andrea_ (45670 points)
11 42 297
by (45.7k points)
Non mi va di fare la lista, ma basta che vedi cosa ti chiedono i metodi per capirlo. Nessun metodo ti chiede i soprannomi, nessun metodo ti chiede il cognome-nome, ma solo il nome-cognome. E via così elimini quelli che non ti servono
DRDLCN (8070 points)
27 68 104
by (8.1k points)
grazie mille, posso ottimizzare di molto