Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2 è la nuova handheld PC gaming con processore AMD Ryzen Z2 Extreme (8 core Zen 5/5c, GPU RDNA 3.5 16 CU) e schermo OLED 8,8" 1920x1200 144Hz. È dotata anche di controller rimovibili TrueStrike con joystick Hall effect e una batteria da 74Wh. Rispetto al dispositivo che l'ha preceduta, migliora ergonomia e prestazioni a basse risoluzioni, ma pesa 920g e costa 1.299€ nella configurazione con 32GB RAM/1TB SSD e Z2 Extreme
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
A re:Invent 2025, AWS mostra un’evoluzione profonda della propria strategia: l’IA diventa una piattaforma di servizi sempre più pronta all’uso, con agenti e modelli preconfigurati che accelerano lo sviluppo, mentre il cloud resta la base imprescindibile per governare dati, complessità e lock-in in uno scenario sempre più orientato all’hybrid cloud
Cos'è la bolla dell'IA e perché se ne parla
Cos'è la bolla dell'IA e perché se ne parla
Si parla molto ultimamente di "bolla dell'intelligenza artificiale", ma non è sempre chiaro perché: l'IA è una tecnologia molto promettente e che ha già cambiato molte cose dentro e fuori le aziende, ma ci sono enormi aspettative che stanno gonfiando a dismisura i valori delle azioni e distorcendo il mercato. Il che, com'è facile intuire, può portare a una ripetizione della "bolla dotcom", e forse anche di quella dei mutui subprime. Vediamo perché
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 03-09-2009, 10:19   #1
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
[OOP-Generico-Java] Pare mentali per uno switch-case

Buondì,
ho una enum java scritta così:
Codice:
public enum Posizione
{
        CENTRO, N, NE, E, SE, S, SW, W, NW;

        public Point asPoint()
        {
            int stepW = SCREEN.width/3;
            int stepH = SCREEN.height/3;

            Point point = new Point();
            switch (this) {
                case CENTRO:    point.setLocation(1.5*stepW, 1.5*stepH);
                break;
                case N:     point.setLocation(1.5*stepW, 0.5*stepH);
                break;
                case NE:    point.setLocation(2.5*stepW, 0.5*stepH);
                break;
                case E:     point.setLocation(2.5*stepW, 1.5*stepH);
                break;
                case SE:    point.setLocation(2.5*stepW, 2.5*stepH);
                break;
                case S:     point.setLocation(1.5*stepW, 2.5*stepH);
                break;
                case SW:    point.setLocation(0.5*stepW, 2.5*stepH);
                break;
                case W:     point.setLocation(0.5*stepW, 1.5*stepH);
                break;
                case NW:    point.setLocation(0.5*stepW, 0.5*stepH);
                break;
            }
            return point;
        }
}
Viene usata altrove, da oggetti grafici capaci di disegnarsi sullo schermo, tipo così:
Codice:
// altrove...

    private void posizionaOggetti()
    {
        oggettoIniziale.centerOn(pos1.asPoint());

        Point p = pos2.asPoint();
        for (Drawable d : oggettiFinali) {
            d.centerOn(p);
        }
    }
La cosa in se funziona, ma non mi dispiacerebbe eliminare il costrutto switch-case, se possibile.

Di primo acchitto mi verrebbe da usare il polimorfismo: creo una interfaccia Posizione che come contratto dichiara un metodo "getPoint" che non prende nulla e restituisce un Point.
Ma così dovrei implementare 9 sottoclassi: una per ogni "posizione" (CENTRO, N, NE, E, SE, S , SW, W, NW).

Esiste un'alternativa?
Non è che non ci dormo la notte, lo switch può anche restare, ma mi domandavo se esistesse una soluzione della serie "semplice & elegante" a la OOP
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 03-09-2009, 11:51   #2
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Gli enumerativi possono avere un costruttore. Possono anche concretizzare interfacce ma sfortunatamente non c'è un'interfaccia alla radice dei punti quindi asPoint non è una cattiva idea. Comunque:

Codice:
public enum Posizione {
    CENTRO(1.5,1.5), N(1.5,0.5), ECCETERA...

    private final Point BUFFER = new Point();
    private final int X, Y;
    Posizione(int x, int y) {
        int stepW = SCREEN.width/3;
        int stepH = SCREEN.height/3;
        X = stepW * x;
        Y = stepH * y;
    }
    public Point asPoint() { BUFFER.x = X; BUFFER.y = Y; return BUFFER; }
}
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 03-09-2009, 11:54   #3
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Credo basti una mappa ENUM -> (X, Y), e una volta ottenuti questi valori sarebbe sufficiente un banale point.setLocation(X, Y).
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 03-09-2009, 12:12   #4
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
@PGI-Bis:
Grazie mille, prezioso come sempre!
Sapevo della faccenda dei costruttori per gli enum type, ma non riuscivo a visualizzare il modo di utilizzarlo... grazie!

@cdmauro:
grazie del suggerimento; a livello pratico, con le enum di Java si traduce nella soluzione proposta da PGI, se non ho capito fischi per fiaschi.
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'...
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti AWS re:Invent 2025: inizia l'era dell'AI-as-a-Se...
Cos'è la bolla dell'IA e perché se ne parla Cos'è la bolla dell'IA e perché se...
BOOX Palma 2 Pro in prova: l'e-reader diventa a colori, e davvero tascabile BOOX Palma 2 Pro in prova: l'e-reader diventa a ...
FRITZ!Repeater 1700 estende la rete super-veloce Wi-Fi 7 FRITZ!Repeater 1700 estende la rete super-veloce...
Scoperto un nuovo esopianeta che orbita ...
Blue Origin NS-37: successo per la missi...
Potrebbe essere stata rilevata una super...
La cometa interstellare 3I/ATLAS è...
Xiaomi 17 Ultra: l'autonomia non sarà un...
Il processo produttivo a 2 nm di TSMC è ...
L'atteso aggiornamento dei driver della ...
The Elder Scrolls VI nel 2029 e Fallout ...
Il Ryzen 7 9850X3D appare nel catalogo d...
Weekend pre natalizio Amazon, ecco tutte...
Prezzi giù su Oral-B iO: spazzolini elet...
19.000 Pa a un prezzo senza precedenti: ...
Narwal in super offerta su Amazon: robot...
SK hynix e NVIDIA lavorano a un SSD spec...
Roborock in super offerta su Amazon: pre...
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: 06:05.


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