Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it L'avatar di afrappe
    Registrato dal
    Jan 2002
    Messaggi
    1,197

    serializzare un classe a che serve?

    scusate l'ignoranza, ho visto in giro alcuni esempi di codice di come serializzare una classe(ovvero salvarla su un file di testo)
    ma a cosa serve questa operazione? quando viene usata? capisco l'utilita di serializzare dei dati in xml, ma una classe?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Non si parla di serializzare una classe, ma della capacita' di una classe di serializzare una propria istanza.

    Ovvero, si salva lo stato di un oggetto.

  3. #3
    Utente di HTML.it L'avatar di afrappe
    Registrato dal
    Jan 2002
    Messaggi
    1,197
    ok gia è piu chiaro, in che casi pratici si fa una operazione del genere? qualche esempio?

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    E' un concetto tanto generico e intuitivo, che non e' facile scegliere un esempio ...

    Pensa ad un gioco in cui ogni personaggio (per semplificare) sia un oggetto di una determinata classe, con vari attributi che ne determinano l'aspetto e le particolarita' (possesso di oggetti, capacita' specifiche).

    Pensa che voglio salvare su disco lo stato del gioco.

    L'istanza del personaggio viene "serializzata" in modo che il suo stato possa essere recuperato da disco esattamente come era al momento del salvataggio.

  5. #5
    Utente di HTML.it L'avatar di afrappe
    Registrato dal
    Jan 2002
    Messaggi
    1,197
    è un'alternativa ad un eventuale salvataggio su db?!

  6. #6
    si è no ... puoi serializzare la classe e quindi salvare fisicamente il flusso di dati (binario, xml, formato proprietario e altro) su un db invece che su un file

    sempre per lo stesso gioco ... si può prendere un db sqlite e salvare lo status del giocatore serializzando la classe Player, lo status dell'ambientazione corrente serializzando l'ambientazione e lo status delle stanze varie o altra ancora serializzando sempre tutto dopo di che li salvi dentro un db

    quello che tu fai manualmente, il salvataggio dei dati singoli all'interno di una tabella, è una specie di "serializzazione" manuale ... xche prendi tutti questi dati e li salvi e poi li riprendi e questi dati ti definiscono uno "status" di un qualcosa
    Ovviamente nel caso di un gestionale non è conveniente utilizzare la serializzazione perché fare una ricerca collasserebbe tutto, però dipende dalle situazioni può risultare più o meno utile
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  7. #7
    Utente di HTML.it L'avatar di afrappe
    Registrato dal
    Jan 2002
    Messaggi
    1,197
    thanks, molto piu chiaro

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    La cosa piu' interessante della serializzazione (il punto centrale in realta') su cui riflettere e' il fatto che e' l'oggetto stesso a salvare il proprio stato perche' "si conosce".

    Ovvero, se dovessi salvare tu lo stato dell'oggetto, non sapresti esattamente cosa fare perche' non sapresti quali sono i dati importanti e se esistono dati collegati da dover salvare (a parte il fatto che non potresti accedere ai membri privati).

    Essendo l'oggetto stesso che salva il proprio stato, non solo gli e' possibile (ovviamente) accedere ai propri membri privati ma anche a tutte le strutture eventualmente presenti.

    Per spiegarmi meglio ... supponi che il personaggio disponga di una serie di oggetti (armi, munizioni ...) e che questa lista sia mantenuta da un puntatore definito come membro interno della classe.
    Poter salvare (e ricaricare) tutta la lista degli oggetti a partire dal puntatore lo puo' fare solamente l'oggetto stesso perche' e' l'unico che potra' scandire la lista a partire dal puntatore.
    E lo fara' chiedendo agli oggetti della lista, a loro volta, di serializzare il proprio stato ...

    Forse ti sto confondendo le idee ... ma se riesci a cogliere l'importanza del "conoscere se' stesso" che sta dietro la serializzazione di un oggetto, hai compreso tutto ...

  9. #9
    Utente di HTML.it L'avatar di afrappe
    Registrato dal
    Jan 2002
    Messaggi
    1,197
    Originariamente inviato da oregon


    Forse ti sto confondendo le idee ... ma se riesci a cogliere l'importanza del "conoscere se' stesso" che sta dietro la serializzazione di un oggetto, hai compreso tutto ...

    no no altro che confodere, queste considerazioni sono molto utili

  10. #10
    Utente di HTML.it L'avatar di newbie
    Registrato dal
    Dec 2005
    Messaggi
    299
    In parole povere, un oggetto è un qualcosa con una struttura (ha attributi, il cui valore potrebbe essere a sua volta un oggetto con attributi...): serializzarlo vuol dire trasformarlo in un array di byte per salvarlo su file o spedirlo via rete. Più o meno come succede quando crei un DB e poi lo salvi: prima hai una struttura fatta di tabelle, maschere, query e robe varie, poi ottieni una sequenza di byte.

    La deserializzazione è il processo inverso: dalla sequenza di byte ricostruisci l'oggetto con la sua struttura.

    Almeno credo...
    Svegliati, Neo. Matrix ti possiede...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.