Torna indietro   Hardware Upgrade Forum > Software > Programmazione

ASUS Expertbook PM3: il notebook robusto per le aziende
ASUS Expertbook PM3: il notebook robusto per le aziende
Pensato per le necessità del pubblico d'azienda, ASUS Expertbook PM3 abbina uno chassis particolrmente robusto ad un pannello da 16 pollici di diagonale che avantaggia la produttività personale. Sotto la scocca troviamo un processore AMD Ryzen AI 7 350, che grazie alla certificazione Copilot+ PC permette di sfruttare al meglio l'accelerazione degli ambiti di intelligenza artificiale
Test ride con Gowow Ori: elettrico e off-road vanno incredibilmente d'accordo
Test ride con Gowow Ori: elettrico e off-road vanno incredibilmente d'accordo
Abbiamo provato per diversi giorni una new entry del mercato italiano, la Gowow Ori, una moto elettrica da off-road, omologata anche per la strada, che sfrutta una pendrive USB per cambiare radicalmente le sue prestazioni
Recensione OnePlus 15: potenza da vendere e batteria enorme dentro un nuovo design
Recensione OnePlus 15: potenza da vendere e batteria enorme dentro un nuovo design
OnePlus 15 nasce per alzare l'asticella delle prestazioni e del gaming mobile. Ma non solo, visto che integra un display LTPO 1,5K a 165 Hz, OxygenOS 16 con funzioni AI integrate e un comparto foto con tre moduli da 50 MP al posteriore. La batteria da 7.300 mAh con SUPERVOOC 120 W e AIRVOOC 50 W è la ciliegina sulla torta per uno smartphone che promette di offrire un'esperienza d'uso senza alcun compromesso
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 26-01-2006, 00:20   #21
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
serve un altro partner -.-'
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 26-01-2006, 00:21   #22
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Quote:
Originariamente inviato da 71104
le cose si complicano: a TigerShark è caduta nuovamente la linea e a me per continuare serve di sapere la sintassi di instanceof, che serve in Java per ricavare RTTI; lo devo usare per forza nei test se non devo fare metodi virtuali, altrimenti il metodo statico Gem.create rimarrà non testato...
siccome s'è fatto tardi è meglio continuare domani, faccio un commit per essere sicuri che la codebase non contenga quei metodi virtuali che avevamo iniziato a scrivere.
Ragazzi, ne parliamo domani, ci si sta complicando la vita inutilmente. Niente reflection, niente isChest in Gem, niente instanceof, niente RTTI.

A che serve il polimorfismo se poi volete decidere la differenza di comportamento fra una Gem e un Chest con un if su un metodo isChest()? Assolutamente a nulla.

La differenza di comportamento va codificata nella differenza di implementazione di uno o piu' metodi fra le due classi. Grid non deve fare nulla di questo tipo:

Codice:
if (gem.isChest())
{
  // comportamento di Chest
}
else
{
  // comportamento di Gem
}
Ma solo questo:

Codice:
gem.doSomething();
Togliere quell'if e' l'essenza del concetto di polimorfismo. E noi di Diamonds che programmiamo bene sappiamo queste cose e non commettiamo questi errori
fek è offline   Rispondi citando il messaggio o parte di esso
Old 26-01-2006, 00:57   #23
Bonfo
Senior Member
 
L'Avatar di Bonfo
 
Iscritto dal: Nov 2005
Città: Bologna
Messaggi: 1303
Non avevo mica prorposto la reflection...se lo facessi per una cosa del genere sarei un pazzo!!!

E' solo che leggendo getType mi è venuta in mente e ho fatto una domanda che già da tempo mi ronzava nella testa... e alla quale non hai risposto ( )


Comunque secondo me il problema di fondo è che non si è capito come portare avanti questo task: bisogna fattorizzare adesso o dopo che il task è completato?!?!

Perchè se bisogna fattorizzare adesso...bhè si può già pensare al famoso droppableObject.
Altrimenti si aggiungono delle gemme con una texture che casualmente è un baule e si modifica GemFactory perchè le gemme di vario tipo abbiamo probabilità prefissate.
__________________
Software engineer
Bonfo's Blog
Bonfo è offline   Rispondi citando il messaggio o parte di esso
Old 26-01-2006, 01:00   #24
Bonfo
Senior Member
 
L'Avatar di Bonfo
 
Iscritto dal: Nov 2005
Città: Bologna
Messaggi: 1303
Domani alle 12:30 circa sono a casa...collaboro per qualsiasi cosa !!!
Vedendo la "lentezza" con cui procediamo, probabilmente questa è la storia più difficile che abbiamo incontrato...anche perchè abbiamo ancora i rimasugli di BigGem...e quindi non mi perdo neanche un task!!!!
__________________
Software engineer
Bonfo's Blog
Bonfo è offline   Rispondi citando il messaggio o parte di esso
Old 26-01-2006, 01:08   #25
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da fek
Ragazzi, ne parliamo domani, ci si sta complicando la vita inutilmente. Niente reflection, niente isChest in Gem, niente instanceof, niente RTTI.

A che serve il polimorfismo se poi volete decidere la differenza di comportamento fra una Gem e un Chest con un if su un metodo isChest()? Assolutamente a nulla.

La differenza di comportamento va codificata nella differenza di implementazione di uno o piu' metodi fra le due classi. Grid non deve fare nulla di questo tipo:

Codice:
if (gem.isChest())
{
  // comportamento di Chest
}
else
{
  // comportamento di Gem
}
Ma solo questo:

Codice:
gem.doSomething();
Togliere quell'if e' l'essenza del concetto di polimorfismo. E noi di Diamonds che programmiamo bene sappiamo queste cose e non commettiamo questi errori
il problema è che quell'if noi volevamo metterlo nel metodo statico Gem.create, il quale deve capire quand'è che deve istanziare un Gem e quando un Chest; adesso che mi suggerisci la storia del factory method in GemType per me va benissimo, ma c'è un problema: come facciamo da dentro GemType a decidere se istanziare un Gem o un Chest? con un mega-switch sul nome del diamante?? puoi anche trovare una soluzione migliore (ad esempio un index passato al costruttore di GemType riferito a un array statico di stringhe contenenti i nomi delle gemme), ma ti assicuro che in un modo o nell'altro quell'if ci va per forza...
altrimenti il programma non è in grado di istanziare bauli.
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 26-01-2006, 01:11   #26
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da Bonfo
Domani alle 12:30 circa sono a casa...collaboro per qualsiasi cosa !!!
Vedendo la "lentezza" con cui procediamo, probabilmente questa è la storia più difficile che abbiamo incontrato...anche perchè abbiamo ancora i rimasugli di BigGem...e quindi non mi perdo neanche un task!!!!
le storie più complicate che abbiamo sai quali sono? quelle in cui si devono fare decisioni di design!
e siccome a fare i pair programming (cioè i task difficili, comprensivi di decisioni di design) sono quasi sempre io, alla fine toccano sempre a me!
comunque mi ci diverto anche
ok, ho trovato l'altro pair programmer in sostituzione di TigerShark
a domani Bonfo
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 26-01-2006, 01:23   #27
Bonfo
Senior Member
 
L'Avatar di Bonfo
 
Iscritto dal: Nov 2005
Città: Bologna
Messaggi: 1303
Sto andando a letto...
Prima di potermi considerare l'altro pair programmer aspetterei l'approvazione.
Io sono già prenotatoper il 9.1.3. e poi c'è anche il 9.1.2 che, per adesso non fa nessuno, sul quale ho comunicato una mia possibile disponibilità... ...non è che poi si incacchiano che voglio arraffare tutto


Un'altra domanda: non sapevo che volesse dire RTTI..ora lo so (Run Time Type Information). Ma è la stessa cosa delle reflection o no?
__________________
Software engineer
Bonfo's Blog
Bonfo è offline   Rispondi citando il messaggio o parte di esso
Old 26-01-2006, 07:39   #28
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Codice:
    
    public static final GemType EMERALD_CHEST = new GemType("emeraldchest", 40);
    public static final GemType RUBY_CHEST = new GemType("rubychest", 50);
    public static final GemType SAPPHIRE_CHEST = new GemType("sapphirechest", 60);
    public static final GemType TOPAZ_CHEST = new GemType("topazchest", 80);
    public static final GemType DIAMOND_CHEST = new GemType("diamondchest", 100);
Per il vostro task...l'unico che deve discriminare se creare un chest o una gem è GemFactory con il 90% di probabilità
Poi sarà chi si occupa del task successivo a pensare come discriminare se è una gemam o una chest e se bisogna o meno fare eliminazioni...

Ultima modifica di cionci : 26-01-2006 alle 07:59.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 26-01-2006, 08:50   #29
Ufo13
Senior Member
 
L'Avatar di Ufo13
 
Iscritto dal: Nov 2005
Messaggi: 1545
Quote:
Originariamente inviato da Bonfo
Sto andando a letto...
Prima di potermi considerare l'altro pair programmer aspetterei l'approvazione.
Io sono già prenotatoper il 9.1.3. e poi c'è anche il 9.1.2 che, per adesso non fa nessuno, sul quale ho comunicato una mia possibile disponibilità... ...non è che poi si incacchiano che voglio arraffare tutto


Un'altra domanda: non sapevo che volesse dire RTTI..ora lo so (Run Time Type Information). Ma è la stessa cosa delle reflection o no?
Bonfo i task vanno portati a termine... Se nessuno si è proposto per i task (e sono lì da qualche giorno) vuol dire che nessuno ha il tempo da dedicarci in questo periodo... Secondo me non c'è problema se te ne fai 3 o 7 l'importante è che vengano portati a termine... Specialmente il task 9.1.1 che blocca tutto il resto


La reflection è una API che viene viene usata solo per scrivere software per debugging (ES. JUnit da qualche parte usa la reflection se non erro...). Il RTTI è semplicemente, come dice la parola, l'identificazione del tipo in real-time...

Ora guardo se c'è qualcosa su wikipedia...

http://en.wikipedia.org/wiki/Reflection_API
http://en.wikipedia.org/wiki/RTTI
Ufo13 è offline   Rispondi citando il messaggio o parte di esso
Old 26-01-2006, 08:56   #30
Ufo13
Senior Member
 
L'Avatar di Ufo13
 
Iscritto dal: Nov 2005
Messaggi: 1545
Quote:
Originariamente inviato da cionci
Codice:
    
    public static final GemType EMERALD_CHEST = new GemType("emeraldchest", 40);
    public static final GemType RUBY_CHEST = new GemType("rubychest", 50);
    public static final GemType SAPPHIRE_CHEST = new GemType("sapphirechest", 60);
    public static final GemType TOPAZ_CHEST = new GemType("topazchest", 80);
    public static final GemType DIAMOND_CHEST = new GemType("diamondchest", 100);
Per il vostro task...l'unico che deve discriminare se creare un chest o una gem è GemFactory con il 90% di probabilità
Poi sarà chi si occupa del task successivo a pensare come discriminare se è una gemam o una chest e se bisogna o meno fare eliminazioni...
Infatti... secondo me non bisogna introdurre la nuova classe Chest in questo task... Basta che la creazione avvenga con il rapporto giusto "Gem / Chest"
Ufo13 è offline   Rispondi citando il messaggio o parte di esso
Old 26-01-2006, 11:57   #31
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da Ufo13
Infatti... secondo me non bisogna introdurre la nuova classe Chest in questo task... Basta che la creazione avvenga con il rapporto giusto "Gem / Chest"
omg
allora, facciamo così: riformulateci il task in maniera più precisa e definitiva e io lo svolgerò con Bonfo.
@cionci: se quell'if fosse andato a finire nel metodo statico create come io e TigerShark avevamo pensato, poi non sarebbe stato necessario in GemFactory, e ciononostante si sarebbe potuto progettare un algoritmo corretto che distribuisse "uniformemente" la probabilità con il 90% alle gemme e 10% ai bauli (almeno tutto imho).
PS: ho notato che hai evidenziato i nomi errati che avevamo messo nel codice: ad essere precisi erano errati anche i punteggi, comunque ormai quel codice non c'è più
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 26-01-2006, 12:11   #32
Ufo13
Senior Member
 
L'Avatar di Ufo13
 
Iscritto dal: Nov 2005
Messaggi: 1545
Secondo me è un task davvero banale... Ti dico il mio parere:

In GemFactory:
Gemme e Chest in due array separati

createRandomGem crea una Gem a random partendo dall'array di GemTypes
createRandomChest crea una Chest a random partendo dall'array di ChestTypes

Credo che i test per createRandomChest puoi imitarli da quelli per createRandomGem.

ti implementi un bel createRandomDroppable che al 90% delle volte chiama createRandomGem ed al 10% createRandomChest.

Niente inheritance per voi. Ci penseranno gli altri task.



p.s. Onde evitare incomprensioni io ovviamente parlo di implementazione ma sottintendo prima i test
Ufo13 è offline   Rispondi citando il messaggio o parte di esso
Old 26-01-2006, 12:12   #33
Ufo13
Senior Member
 
L'Avatar di Ufo13
 
Iscritto dal: Nov 2005
Messaggi: 1545
Se sei online in questo momento mi smessaggi su MSN e lo facciamo in pair io e te sennò aspetta Bonfo...
Ufo13 è offline   Rispondi citando il messaggio o parte di esso
Old 26-01-2006, 12:43   #34
^TiGeRShArK^
Senior Member
 
L'Avatar di ^TiGeRShArK^
 
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
Quote:
Originariamente inviato da 71104
omg
allora, facciamo così: riformulateci il task in maniera più precisa e definitiva e io lo svolgerò con Bonfo.
@cionci: se quell'if fosse andato a finire nel metodo statico create come io e TigerShark avevamo pensato, poi non sarebbe stato necessario in GemFactory, e ciononostante si sarebbe potuto progettare un algoritmo corretto che distribuisse "uniformemente" la probabilità con il 90% alle gemme e 10% ai bauli (almeno tutto imho).
PS: ho notato che hai evidenziato i nomi errati che avevamo messo nel codice: ad essere precisi erano errati anche i punteggi, comunque ormai quel codice non c'è più
ma i punteggi erano giusti...
era stato jocchan a dire che dovevano avere punteggio nullo...
__________________
^TiGeRShArK^ è offline   Rispondi citando il messaggio o parte di esso
Old 26-01-2006, 12:49   #35
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Quote:
Originariamente inviato da Ufo13
Secondo me è un task davvero banale... Ti dico il mio parere:

In GemFactory:
Gemme e Chest in due array separati

createRandomGem crea una Gem a random partendo dall'array di GemTypes
createRandomChest crea una Chest a random partendo dall'array di ChestTypes
Mi piace.
fek è offline   Rispondi citando il messaggio o parte di esso
Old 26-01-2006, 13:14   #36
Bonfo
Senior Member
 
L'Avatar di Bonfo
 
Iscritto dal: Nov 2005
Città: Bologna
Messaggi: 1303
Eccomi qua...anzie eccoci qua.
Sostituisco ufficialmente ^TiGeRShArK^ .
__________________
Software engineer
Bonfo's Blog
Bonfo è offline   Rispondi citando il messaggio o parte di esso
Old 26-01-2006, 13:35   #37
Bonfo
Senior Member
 
L'Avatar di Bonfo
 
Iscritto dal: Nov 2005
Città: Bologna
Messaggi: 1303
Comunico la compresenza, gradita, di Ufo oltre a me e a 71104
Primo test, aggiunto a TestGemFactory:

Codice:
public void testChestCreation()
    {
        Gem gem = factory.create(DIAMOND_CHEST);
        assertEquals("does not return Chest of type diamond", DIAMOND_CHEST, 
            gem.getType());

        gem = factory.create(RUBY_CHEST);
        assertEquals("does not return Chest of type ruby", RUBY_CHEST,
            gem.getType());

        gem = factory.create(SAPPHIRE_CHEST);
        assertEquals("does not return Chest of type sapphire", SAPPHIRE_CHEST, 
            gem.getType());

        gem = factory.create(EMERALD_CHEST);
        assertEquals("does not return Chest of type emerald", EMERALD_CHEST,
            gem.getType());

        gem = factory.create(TOPAZ_CHEST);
        assertEquals("does not return Chest of type topaz", TOPAZ_CHEST,
            gem.getType());
    }
Serve a testare che la factory sia in grado di generare dei Chest.

Ci tengo a sottolineare le forti assunzioni di questo test: i Chest non sono altro che gemme e l'unica cos che cambia è il tipo di gemma.

Se è sbagliato...siamo già fermi al primo test
In ogni caso io continuerei fino a terminarlo...poi REFACTORING!!!
__________________
Software engineer
Bonfo's Blog
Bonfo è offline   Rispondi citando il messaggio o parte di esso
Old 26-01-2006, 13:39   #38
^TiGeRShArK^
Senior Member
 
L'Avatar di ^TiGeRShArK^
 
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
Quote:
Originariamente inviato da Bonfo
Eccomi qua...anzie eccoci qua.
Sostituisco ufficialmente ^TiGeRShArK^ .
vai e fatti onore

__________________
^TiGeRShArK^ è offline   Rispondi citando il messaggio o parte di esso
Old 26-01-2006, 13:46   #39
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
ecco qua, l'ho fatto passare così:
Codice:
public final class GemType
{
    public static final GemType EMERALD = new GemType("emerald", 40);
    public static final GemType RUBY = new GemType("ruby", 50);
    public static final GemType SAPPHIRE = new GemType("sapphire", 60);
    public static final GemType TOPAZ = new GemType("topaz", 80);
    public static final GemType DIAMOND = new GemType("diamond", 100);
    
    public static final GemType EMERALD_CHEST = new GemType("boxes/emerald", 0);
    public static final GemType RUBY_CHEST = new GemType("boxes/ruby", 0);
    public static final GemType SAPPHIRE_CHEST = new GemType("boxes/sapphire", 0);
    public static final GemType TOPAZ_CHEST = new GemType("boxes/topaz", 0);
    public static final GemType DIAMOND_CHEST = new GemType("boxes/diamond", 0);
[...]
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 26-01-2006, 13:55   #40
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
ok, adesso stando a quanto detto da Ufo13, dobbiamo procedere così:
Codice:
    public void testRandomChestSequence()
    {
        Gem gem = factory.createRandomChest();
        assertEquals("does not return Chest of type topaz", TOPAZ_CHEST,
            gem.getType());
        
        gem = factory.createRandomChest();
        assertEquals("does not return Chest of type diamond", DIAMOND_CHEST,
            gem.getType());

        gem = factory.createRandomChest();
        assertEquals("does not return Chest of type diamond", DIAMOND_CHEST,
            gem.getType());

        gem = factory.createRandomChest();
        assertEquals("does not return Chest of type ruby", RUBY_CHEST,
            gem.getType());
        
        gem = factory.createRandomChest();
        assertEquals("does not return Chest of type ruby", RUBY_CHEST,
            gem.getType());
        
        gem = factory.createRandomChest();
        assertEquals("does not return Chest of type sapphire", SAPPHIRE_CHEST, 
            gem.getType());
    }
vediamo che succede...
a te Bonfo

Ultima modifica di 71104 : 26-01-2006 alle 14:02.
71104 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


ASUS Expertbook PM3: il notebook robusto per le aziende ASUS Expertbook PM3: il notebook robusto per le ...
Test ride con Gowow Ori: elettrico e off-road vanno incredibilmente d'accordo Test ride con Gowow Ori: elettrico e off-road va...
Recensione OnePlus 15: potenza da vendere e batteria enorme dentro un nuovo design   Recensione OnePlus 15: potenza da vendere e batt...
AMD Ryzen 5 7500X3D: la nuova CPU da gaming con 3D V-Cache per la fascia media AMD Ryzen 5 7500X3D: la nuova CPU da gaming con ...
SONY BRAVIA 8 II e BRAVIA Theatre System 6: il cinema a casa in formato compatto SONY BRAVIA 8 II e BRAVIA Theatre System 6: il c...
HONOR 500: confermata data di lancio e d...
iPhone Fold non è ancora pronto? ...
Nuovo smartphone in arrivo da OnePlus: t...
Amazon abbassa ancora il prezzo dei MacB...
Steam verso un 2025 da record: ricavi st...
El Capitan ancora al comando della class...
Arm nel programma NVLink Fusion: NVLink ...
Bonus Elettrodomestici 2025, si parte: c...
Jeff Bezos torna al comando, stavolta di...
Anthesi sceglie OVHcloud per digitalizza...
Cube presenta Trike Flatbed Hybrid 750, ...
Call of Duty Black Ops 7 peggio di Infin...
L'Italia è il secondo mercato per...
Wi-Fi superveloce anche in giardino? FRI...
La Ford Focus va ufficialmente in pensio...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 08:19.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v