Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Hyundai Ioniq 9: dopo due settimane di test non avremmo voluto restituirla
Hyundai Ioniq 9: dopo due settimane di test non avremmo voluto restituirla
Una ammiraglia elettrica, da sei o sette posti, con il comfort di viaggio come missione assoluta. Un'auto non per tutti, ma di cui ti innamori dopo pochi giorni, ecco com'è andata la nostra prova di lunga durata
LG UltraGear evo GM9: 27 pollici, 5K, Mini LED e Dual Mode
LG UltraGear evo GM9: 27 pollici, 5K, Mini LED e Dual Mode
Hyper Mini LED con 2.304 zone, DisplayPort 2.1 e Dual Mode: 5K a 165 Hz oppure QHD a 330 Hz: LG propone un monitor da gioco ma dalla buona versatilità creativa, con prestazioni interessanti e un listino di 1.220 euro. Peccato l'alimentatore ingombrante
Motorola edge 70 Fusion FIFA World Cup 26 Edition: un ottimo smartphone per i fan del calcio
Motorola edge 70 Fusion FIFA World Cup 26 Edition: un ottimo smartphone per i fan del calcio
Motorola edge 70 Fusion FIFA World Cup 26 Edition porta la maglia iridata su uno smartphone accessibile: display Extreme AMOLED da 6,78 pollici a 144Hz, fotocamera Sony LYTIA 710 con moto ai, Snapdragon 7s Gen 3 abbinato a 8GB di RAM, batteria da 5200 mAh con ricarica TurboPower a 68W e certificazione IP68/IP69, il tutto in una veste PANTONE Silhouette con logo dorato a 24 carati, moto buds bass incluse in confezione e contenuti software dedicati ai Mondiali 2026
Tutti gli articoli Tutte le news

Vai al Forum
Discussione Chiusa
 
Strumenti
Old 18-12-2005, 11:28   #21
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
Non è detto, ma mi sembrava logico perchè dovrebbe erditarne non solo l'interfaccia, ma anche gran parte del codice... Inoltre in questo modo Grid non andrabbe modificata nemmeno di una virgola (anzi, qualcosa sì, ma solo per le collisioni)...
cionci è offline  
Old 18-12-2005, 11:33   #22
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Quote:
Originariamente inviato da cionci
Sinceramente io avrei visto benissimo una classe GemsPair derivata da Gem con una istanza della gemma slave all'interno...
Continuando così si rende Grid troppo complicato...magari avrebbe dovuto essere il task Xmas.2.0...
"Prefer Composition over Inheritance"

GemsPair "non e' un" Gem. Quindi non deve derivare da Gem.
fek è offline  
Old 18-12-2005, 11:34   #23
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
Sì, ma allora deriviamo PivotGem da Gem...e poi a PivotGem gli passaimo la gemma slave... Cambia il nome, ma il succo è lo stesso...mi sembra che sia necessario ottenere una classe di questo tipo prima di cominciare a lavorare sulle coppie di gemme...
cionci è offline  
Old 18-12-2005, 11:38   #24
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Quote:
Originariamente inviato da cionci
Sì, ma allora deriviamo PivotGem da Gem...e poi a PivotGem gli passaimo la gemma slave... Cambia il nome, ma il succo è lo stesso...mi sembra che sia necessario ottenere una classe di questo tipo prima di cominciare a lavorare sulle coppie di gemme...
Perche' vuoi derivare? Questa classe contiene due gemme, una e' il pivot, l'altra lo slave. E tiene traccia delle due gemme. Secondo me non c'e' bisogno di derivare.
fek è offline  
Old 18-12-2005, 11:40   #25
Ufo13
Senior Member
 
L'Avatar di Ufo13
 
Iscritto dal: Nov 2005
Messaggi: 1545
Boh io farei un GemsPair che estende Sprite e contiene due Gem
Ufo13 è offline  
Old 18-12-2005, 11:42   #26
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Quote:
Originariamente inviato da Ufo13
Boh io farei un GemsPair che estende Sprite e contiene due Gem
GemsPair "non e' un" Sprite.

http://www.eventhelix.com/RealtimeMa..._principle.htm

The Liskov Substitution Principle of object oriented design states:

In class hierarchies, it should be possible to treat a specialized object as if it were a base class object.

The basic idea here is very simple. All code operating with a pointer or reference to the base class should be completely transparent to the type of the inherited object. It should be possible to substitute an object of one type with another within the same class hierarchy. Inheriting classes should not perform any actions that will invalidate the assumptions made by the base class.


Ogni volta che derivate una classe da un'altra dovete porvi la domanda se il principio di sostituzione si applica. Una specializzazione di un Handler puo' ovviamente essere usata in sostituzione della classe base, mentre un GemsPair no: svolge azioni che invalidano le assuzioni fatte dalla classe base Sprite (infatti contiene due sprite e non uno solo).

Ultima modifica di fek : 18-12-2005 alle 11:45.
fek è offline  
Old 18-12-2005, 11:44   #27
Ufo13
Senior Member
 
L'Avatar di Ufo13
 
Iscritto dal: Nov 2005
Messaggi: 1545
hmmmm mi chiedo perchè no?

ahhhh ritiro subito la domanda

Volevo dire drawable
Ufo13 è offline  
Old 18-12-2005, 11:48   #28
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Ecco l'articolo completo:

http://www.objectmentor.com/resources/articles/lsp.pdf

Nel nostro caso, una funzione che usasse un GemsPair come se fosse uno Sprite, fallirebbe clamorosamente, perche' deve poter sapere di avere a che fare con GemsPair per onorarne il contratto.

E secondo me non e' neanche un Drawable
Le gemme sono disegnate dalla griglia, GemsPair deve solo controllare che scendano in maniera corretta e rispondano agl'input dell'utente.
fek è offline  
Old 18-12-2005, 11:49   #29
Ufo13
Senior Member
 
L'Avatar di Ufo13
 
Iscritto dal: Nov 2005
Messaggi: 1545
mazza che figo sto sito :o
Ufo13 è offline  
Old 18-12-2005, 11:52   #30
Ufo13
Senior Member
 
L'Avatar di Ufo13
 
Iscritto dal: Nov 2005
Messaggi: 1545
allora perdonami ho scritto senza guardare il codice... In realtà estendendo sprite saprei bene come gestire la cosa...

Secondo me basta tenere 2 Gems e poi implementare Drawable che diciamo esegue il draw delle due Gem nelle corrette posizioni.
Ufo13 è offline  
Old 18-12-2005, 11:52   #31
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
Quote:
Originariamente inviato da Ufo13
Boh io farei un GemsPair che estende Sprite e contiene due Gem
Non sono d'accordo...a quel punto andrebbe estratta anche l'interfaccia di Gem...ed andrebbe poi implementata in GemsPair...

fek: ti spiego perchè voglio derivare... Così come è adesso Grid tutte le operazioni che adesso svolgiamo su Grid andrebbero duplicate... Invece non duplicando queste operazioni e derivando PivotGem da Gem potremmo settare la gemma slave dall'esterno (pivotGem.setSlaveGem(Gem slave)) e mantenendo la struttura attuale di Grid potremmo replicare le operazioni fatte sulla pivotGem all'interno della pivotGem...
Ad esempio:
Codice:
    public void moveRight(float step)
    {
        super.moveRight(step);
        slave.moveRight(step);        
    }
Eriditare PivotGem è necessario per permettere a Grid di poter lavorare ancora tramite Gem (ad esempio il membro grid rimarrebbe una matrice di Gem)...anche perchè senza dubbio dovremmo ancora poter lavorare sulla gemma singola...

Ultima modifica di cionci : 18-12-2005 alle 11:55.
cionci è offline  
Old 18-12-2005, 11:58   #32
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Quote:
Originariamente inviato da cionci
fek: ti spiego perchè voglio derivare... Così come è adesso Grid tutte le operazioni che adesso svolgiamo su Grid andrebbero duplicate... Invece non duplicando queste operazioni e derivando PivotGem da Gem potremmo settare la gemma slave dall'esterno (pivotGem.setSlaveGem(Gem slave)) e mantenendo la struttura attuale di Grid potremmo replicare le operazioni fatte sulla pivotGem all'interno della pivotGem...
Questo e' un'errore abbastanza classico, tanto che ci sto combattendo anche in ufficio. Non si deriva per riutilizzare il codice (eliminare la duplicazione nel tuo caso), ma si deriva sempre e solo per modellare relazioni ISA.

Noi sappiamo programmare quindi seguiamo questo principio

GemsPair, come la giri, non modella una relazione ISA ne' con Gem, ne' con Sprite, ne' con Drawable. E' una semplice classe di controllo di due gemme, un classico esempio di Composizione. E quello implementiamo. Tutto il resto e' un forzare il design verso qualcosa che ci creera' problemi, quindi andiamo per le cose semplici.

Due gemme dentro GemsPair e via.
fek è offline  
Old 18-12-2005, 11:59   #33
Ufo13
Senior Member
 
L'Avatar di Ufo13
 
Iscritto dal: Nov 2005
Messaggi: 1545
Cionci: sì scusa, leggi il mio post... Mi ero sbagliato... Avevo solo pensato al Draw e così ho pensato "sprite" senza tenere a mente tutto quello che Sprite comportava

Comunque non vedo perchè usare GemsPair in composition dovrebbe limitarci così tanto... Secondo me si può trovare una soluzione semplice anche per quello
Ufo13 è offline  
Old 18-12-2005, 12:01   #34
Ufo13
Senior Member
 
L'Avatar di Ufo13
 
Iscritto dal: Nov 2005
Messaggi: 1545
Quote:
Originariamente inviato da fek
Questo e' un'errore abbastanza classico, tanto che ci sto combattendo anche in ufficio. Non si deriva per riutilizzare il codice (eliminare la duplicazione nel tuo caso), ma si deriva sempre e solo per modellare relazioni ISA.

Noi sappiamo programmare quindi seguiamo questo principio

GemsPair, come la giri, non modella una relazione ISA ne' con Gem, ne' con Sprite, ne' con Drawable. E' una semplice classe di controllo di due gemme, un classico esempio di Composizione. E quello implementiamo. Tutto il resto e' un forzare il design verso qualcosa che ci creera' problemi, quindi andiamo per le cose semplici.

Due gemme dentro GemsPair e via.
Hmmm forse ho capito come si può fare... Se mettete il task mi offrirei a farlo in pair programming con qualcuno
Ufo13 è offline  
Old 18-12-2005, 12:02   #35
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
Quote:
Originariamente inviato da Ufo13
Comunque non vedo perchè usare GemsPair in composition dovrebbe limitarci così tanto... Secondo me si può trovare una soluzione semplice anche per quello
Semplicemente perchè andrebbe modificata tutta Grid...ma bisognerebbe comunque mantenere la possibilità di gestire una gemma singola...quindi verrebbe un macello enorme...
cionci è offline  
Old 18-12-2005, 12:04   #36
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
Quote:
Originariamente inviato da fek
Questo e' un'errore abbastanza classico, tanto che ci sto combattendo anche in ufficio. Non si deriva per riutilizzare il codice (eliminare la duplicazione nel tuo caso), ma si deriva sempre e solo per modellare relazioni ISA.

Noi sappiamo programmare quindi seguiamo questo principio

GemsPair, come la giri, non modella una relazione ISA ne' con Gem, ne' con Sprite, ne' con Drawable. E' una semplice classe di controllo di due gemme, un classico esempio di Composizione. E quello implementiamo. Tutto il resto e' un forzare il design verso qualcosa che ci creera' problemi, quindi andiamo per le cose semplici.

Due gemme dentro GemsPair e via.
Io no la vedo come GemsPair...io la vedo come PivotGem... PivotGem ha senso derivarla da Gem... PivotGem è la gemma che controlla la slave, quindi ha senso che pivotGem se viene mossa muova anche la gemma slave... Io non ci vedo niente di forzato...
cionci è offline  
Old 18-12-2005, 12:05   #37
Ufo13
Senior Member
 
L'Avatar di Ufo13
 
Iscritto dal: Nov 2005
Messaggi: 1545
Quote:
Originariamente inviato da cionci
Semplicemente perchè andrebbe modificata tutta Grid...ma bisognerebbe comunque mantenere la possibilità di gestire una gemma singola...quindi verrebbe un macello enorme...
ma non è vero... io penso che bastino poche modifiche
Ufo13 è offline  
Old 18-12-2005, 12:10   #38
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Quote:
Originariamente inviato da cionci
Io no la vedo come GemsPair...io la vedo come PivotGem... PivotGem ha senso derivarla da Gem... PivotGem è la gemma che controlla la slave, quindi ha senso che pivotGem se viene mossa muova anche la gemma slave... Io non ci vedo niente di forzato...
Secondo me non serve neppure derivare PivotGem. Esci dal loop in cui ti sei infilato, questo task e' molto piu' semplice di quanto pensi. Fallo in PP con Ufo e fatelo sulla linea di guida di non derivare nulla. Non serve.
fek è offline  
Old 18-12-2005, 12:13   #39
Ufo13
Senior Member
 
L'Avatar di Ufo13
 
Iscritto dal: Nov 2005
Messaggi: 1545
hmmm mi va benissimo farlo in pair con cionci ed inizierei anche subito, ma non è meglio se aspettiamo che vicius confermi il task?
Ufo13 è offline  
Old 18-12-2005, 12:13   #40
thebol
Senior Member
 
Iscritto dal: Dec 2000
Città: bologna
Messaggi: 1309
allora, la duplicazione era evidente, ma per ora preferivo mantenerla, fare funzionare il tutto(creazione, movimenti ed eventualmente collisioni) per poi proporlo.

D'accordo su fare la classe gemspair come composizione, e se la si implemente considerando la possibilita che controlli una sola gemma(la pivot) il codice non dovrebbe risentirne troppo.

Si puo considerare di estrarre l'interfaccia da gem, generare la classe composite come un proxy di 2 gem, ma non so se ne vale la pena

in effetti gempair si comporta come una gemma(forse) ma non è una gemma...

cmq ditemi se devo testare tutte le collisioni, o questo compito passa a un prox task(magari con in mezzo il refactoring di pairGem). Cosi tolgo il test per le collisioni gia realizzato e implemento correttamente il movimento(i test precedenti secondo me non sono completi, devo creare un altro test per verificare...), e aggiungo l'init e il rilascio di 2 gem alla volta(ma per questo devo implementare per forza la collisione dal basso...)
thebol è offline  
 Discussione Chiusa


Hyundai Ioniq 9: dopo due settimane di test non avremmo voluto restituirla Hyundai Ioniq 9: dopo due settimane di test non ...
LG UltraGear evo GM9: 27 pollici, 5K, Mini LED e Dual Mode LG UltraGear evo GM9: 27 pollici, 5K, Mini LED e...
Motorola edge 70 Fusion FIFA World Cup 26 Edition: un ottimo smartphone per i fan del calcio Motorola edge 70 Fusion FIFA World Cup 26 Editio...
Renault 5 elettrica al giudizio definitivo: solo stupore iniziale o premi meritati? Renault 5 elettrica al giudizio definitivo: solo...
HONOR CHOICE Projector Air Pro: piccolo, portatile e con Netflix HONOR CHOICE Projector Air Pro: piccolo, portati...
Proseguono le operazioni di ripristino d...
Il razzo spaziale NASA SLS e la capsula ...
Starship: il recupero di Ship 40 prosegu...
Prezzi iPhone 17 in aumento: gli ultimi ...
Edge segue Chrome: a rischio molte esten...
Studi su batteri e archaea: la vita sull...
Claude Code, le diverse sessioni ora par...
I sistemi di sicurezza attuali non basta...
iPhone, nuove indiscrezioni sul modello ...
Le iconiche Sony WH-1000XM4 stanno per t...
TV 55 pollici in offerta: Xiaomi 4K a 32...
Robot per le piscine in offerta su Amazo...
Nessun downgrade a Vera e Rubin Ultra, s...
Ho costruito un agente IA locale dentro ...
TOP 10 Amazon del weekend, si inizia col...
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: 05:27.


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