Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 16 su 16

Hybrid View

  1. #1
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da MyBloodyV. Visualizza il messaggio
    cmq, da quel che ho capito, diciamo che le specifiche sono avere una classe con (per ora) 6 o 7 campi, e un metodo che fa il setbytes e uno che fa il getbytes, secondo un certo tracciato (per cui ci sono dei vincoli nella sequenza)

    partiamo da qui senza occuparci di quanto fatto, come la faresti?
    Sicuramente non sfruttando una superclasse che contiene questa logica. Perché in tal modo vincoleresti un tantino la gerarchia (una classe può estendere solo una classe).
    Farei una classe a parte (o due se vuoi spezzare la logica di conversione nei due sensi in classi distinte), poi da usare nel getBytes e nel setBytes.

    Ma ci sono altre cose da valutare prima:
    1) quali tipi di dati devi gestire? Solo stringhe e numeri? (numeri, che tipi?)
    2) perché nel tuo codice hai usato variabili Number e non dei primitivi più appropriati? Se hai messo un setNumeroPere(Number numeroPere), allora chiunque ti può passare un qualunque sottotipo di Number, es. un Long mentre tu inizialmente avevi assegnato un Integer al numero pere. Cosa succede (o dovrebbe succedere)?
    3) quali sono i requisiti/specifiche sul formato esattamente? I numeri li devi sempre formattare a N caratteri con spazi davanti es. "%8d"? Se numerPere dovesse avere 9 o 10 cifre (possibile per un int/Integer) ... cosa dovrebbe succedere?

    Dovresti precisare insomma se/quali regole ci sono per i dati.

    Quote Originariamente inviata da MyBloodyV. Visualizza il messaggio
    grazie della pazienza, se anche molli non mi offendo, hai fatto fin troppo :-)
    Su Java di norma non mollo ... basta che guardi i miei skills.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  2. #2
    1) per ora String, int e long
    2) andbin quel codice è un misto tra una classe esistente e delle toppe messe velocemente, lo rifaccio da 0
    3) almeno per ora vengono formattati in quella maniera

    grazie

  3. #3
    aggiungo: mi piacerebbe che la mia (le mie) classe riuscisse a gestire in maniera ordinata l'eventuale aggiunta di nuovi campi, soprattutto nei metodi (i due set/getbytes) che costruiscono il tracciato

    quel che dicevo qua

    Quote Originariamente inviata da MyBloodyV. Visualizza il messaggio
    [CODE]public class CestoFrutta {



    in sostanza il mio problema è: se guardi la getBytes e la setBytes, noterai (lo vedi dai commenti) che c'è un ordine di costruzione all'interno degli stessi metodi, che riguarda i 4 campi --- ora i campi sono 4 ma potrebbero diventare 20, e magari avrei bisogno di cambiare l'ordine --- per come è fatto il codice ora dovrei modificarlo in questa maniera (esempio nella getBytes):

    prima:
    codice:
    StringBuffer bf = new StringBuffer(this.getTipoCestino());//1
    bf.append(String.format("%12d", this.getNumeroMele()));//2
    bf.append(String.format("%8d", this.getNumerPere()));//3
    bf.append(this.getColoreCestino());//4
    return bf.toString().getBytes(ENCODING);
    codice:
    dopo (inverto l'ordine tra mele e pere):
    StringBuffer bf = new StringBuffer(this.getTipoCestino());//1
    bf.append(String.format("%8d", this.getNumerPere()));//2
    bf.append(String.format("%12d", this.getNumeroMele()));//3
    bf.append(this.getColoreCestino());//4
    return bf.toString().getBytes(ENCODING);
    cambiando quindi la sequenza --- mi piacerebbe invece avere questi elementi legati a dei numeri e andare a toccare solo questi numeri rappresentanti l'ordine; si potrebbe fare con le liste o le mappe ma forse c'è di meglio

    grazie

  4. #4
    ehm...

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da MyBloodyV. Visualizza il messaggio
    ehm...
    Ma io, in generale, la soluzione l'avevo detta:

    Quote Originariamente inviata da andbin Visualizza il messaggio
    Farei una classe a parte (o due se vuoi spezzare la logica di conversione nei due sensi in classi distinte), poi da usare nel getBytes e nel setBytes.
    E grosso modo (molto grosso ...) si potrebbe ipotizzare un utilizzo del tipo:

    codice:
        public byte[] getBytes() throws Throwable {
            DataByteSerializer dbs = new DataByteSerializer();
            dbs.writeLong(12, getNumeroMele());    // 12 digit string
            dbs.writeXyz ......
            return dbs.getBytesArray();
        }
    
        public void setBytes(byte[] array) throws Throwable {
            DataByteDeserializer dbd = new DataByteDeserializer(array);
            setNumeroMele(dbd.readLong(12));
            setXyz(dbd.readXyz .... );
        }

    Dove DataByteSerializer / DataByteDeserializer sarebbero ovviamente le classi da fare che hanno tutta la logica (ma in senso generalizzato) per il tuo "protocollo" su byte.

    Ma di più non ti so dire, non conoscendo il contesto.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    hai ragione scusa, aspetta che riprendo tutto

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 © 2026 vBulletin Solutions, Inc. All rights reserved.