Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2014
    Messaggi
    4

    Come scrivere progetti in java?

    Buongiorno a tutti!
    Sono una studentessa e al momento sto studiando java.
    Devo poi sostenere un esame finale. Ma mi trovo in grande difficoltà nel realizzare progetti tipici d'esame. Ho studiato il linguaggio e conosco i paradigmi della programmazione ad oggetto e anche alcuni principi necessari ad una buona organizzazione del codice.
    Qualcuno potrebbe darmi consigli sull'approccio adeguato per affrontare problemi da risolvere in linguaggio java?
    Ringrazio tutti .

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Dopo le ore passate sui libri, dovresti provare a scrivere qualcosa. Comincia con programmi mono-classe e applica quanto studiato. Ai miei tempi si cominciava implementando tutti gli ADT (code, liste, set, alberi binari, grafi, dizionari, mappe etc) per poi essere abbandonati a se stessi (nel senso che una volta acquisiti quegli strumenti, non ti restava che decidere se java era un esame a sé oppure se ti interessava approfondirne gli aspetti non accademici). Dividi et impera e vedrai che andrai bene.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2014
    residenza
    Ancona, Italia
    Messaggi
    16
    magari se poni un esempio di progetto tipico d'esame, possiamo "forse" dirti che strada intraprendere per poi scrivere il codice. Di norma ti fai un'idea di quello che ti serve per fare il software, esempio se vuoi fare un CAD, hai almeno bisogno di sapere come funziona la classe Graphics. Poi una volta che hai gli attrezzi, prendi o carta e penna o un software UML e cerchi di dividere quello che vuoi fare in classi, più piccole possibili e che facciano solo ciò che riguarda quella classe. poi scrivi il resto.

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2014
    Messaggi
    4
    Grazie a voi Andrea1979 e MarkRider per la vostra disponibilià ; scusate il ritardo della mia risposta.
    Infatti ci è chiesto all'esame di scrivere codice riutilizzabile e espandibile (usando i principi SOLID e Design Pattern ).
    Un'esempio tipico d'esame è l'editore di Icone :
    Una icona è una immaginetta quadrata molto piccola. Il Disegno di icone può
    essere difficile con strumenti grafici pensati per l'elaborazione di immagini
    più grandi.
    Per questo, si vorrebbe realizzare un piccolo editor di icone. Ogni icona deve
    essere gestita come una matrice quadrata di pixel, ognuno con un colore (in
    formato Red-Green-Blue), e per ora si pensa di supportare le dimensioni 16x16,
    24x24 e 32x32. L'interfaccia deve soddisfare questi requisiti:
    • 1) L'utente può iniziare quando vuole una nuova icona, che è tutta
    bianca, scegliendo il formato.
    • 2) L'utente può selezionare un colore.
    • 3) L'utente può scegliere una delle seguenti operazioni:
    ▪ (A) Matita: quando clicco (o trascino il mouse) su un pixel
    dell'icona, quel pixel si colora col colore (2)
    ▪ (B) Gommino: quando clicco (o trascino il mouse) su un pixel,
    quel pixel si colora di bianco.
    ▪ (C) Pennello colori : colora col colore (2) tutti i pixel che
    stanno all'interno di una certa area del pennello.
    • 4) Un pannello laterale fornisce tre informazioni (costantemente
    aggiornate) che sono il valore minimo, medio e massimo
    dell'intensità di grigio valutata su tutti i pixel. La tonalità di grigio deve essere calcolata con la formula:
    grigio= 0.3 * rosso + 0.59 * verde + 0.11 blu

    Una possibile soluzione che ho tentato fornire a questo problema è il seguente:
    Ultima modifica di sefa; 15-06-2014 a 17:16

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2014
    Messaggi
    4
    codice:
    public class Test0001 {
    
        /**
      * @param args
      */
        public static void main(String[] args) {
      
      Pixel pix = new Pixel(10, 10, 10, 10, Color.WHITE);
      
       Icon icon = new Icon();
      
       JMenuBar bar = new JMenuBar();
       MenuSize menuSize = new MenuSize(); 
       ToolsMenu tools = new ToolsMenu(icon);
       MenuColor colors = new MenuColor();
      IconPanel panel = new IconPanel(icon);
      IconController controller = new IconController(icon);
      
      controller.setPanel(panel);
      controller.setTools(tools);
      controller.setColors(colors);
      controller.setSizes(menuSize);
      
      panel.addMouseListener(controller);
      colors.addActionListener(controller);
      colors.getRed().addActionListener(controller);
      colors.getGreen().addActionListener(controller);
      colors.getBlue().addActionListener(controller);
      tools.addActionListener(controller);
      menuSize.getSize1().addActionListener(controller);
      menuSize.getSize2().addActionListener(controller);
      menuSize.getSize3().addActionListener(controller);
        
      
      icon.setPixels(pix);
      
      icon.addObserver(panel);
      bar.setSize(10000, 20);
      bar.add(menuSize);
      bar.add(tools);
      bar.add(colors);
      
      
      JFrame frame = new JFrame("Pixel");
      frame.setSize(400, 400);
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      //panel.add(bar);
            frame.getContentPane().add(bar,BorderLayout.NORTH);
      frame.getContentPane().add(panel, BorderLayout.CENTER);
      //frame.getContentPane().add(panel1);
      frame.setVisible(true);
        }
    
    }
    
    public class IconPanel extends JPanel implements Observer {
        
        /**
      * 
      */
        private static final long serialVersionUID = 1L;
        //private Pixel pixel;
        private Icon icon;
        
        public IconPanel(Icon icon) {
      super();
      //this.pixel = pixel;
      this.icon = icon;
      icon.update();
        }
    
        public void setIcon(Icon icon) {
      this.icon = icon;
        }
        
        @Override
        public void paintComponent(Graphics g) {
      super.paintComponent(g);
      
      for(int i = 0; i<icon.getSize(); i++){
       for(int j = 0; j<icon.getSize(); j++){
    
        icon.getPixels()[i][j].draw(g);
        
       }
      }
      
        }
    
        @Override
        public void update(Observable o, Object arg) {
      repaint();
      
        }
        
    }
    
    public class ToolsMenu extends JMenu {
        private Icon icon;
        private Colorable tool;
        private JMenuItem pencil = new JMenuItem("Pencil");
        private JMenuItem rubber = new JMenuItem("Rubber");
        
        public ToolsMenu(final Icon icon) {
            super();
            this.icon = icon;
            this.setText("Tools");
            pencil.addActionListener(new ActionListener() {
                
                @Override
                public void actionPerformed(ActionEvent e) {
                    
                tool = new Pencil(Color.ORANGE);
                
    
    
                }
            });
            this.add(pencil);
            rubber.addActionListener(new ActionListener() {
                
                @Override
                public void actionPerformed(ActionEvent e) {
                    tool = new Rubber();
                    
                }
            });
            this.add(rubber);
        }
    
    
        public Colorable getTool() {
            return tool;
        }
    }
    
    public class ToolColor implements Colorable{
    
    
        private Color color;
    
    
        public ToolColor() {
            super();
        }
    
    
        @Override
        public void setColor(Color color) {
            this.color = color;
        }
    
    
        @Override
        public Color getColor() {
            return color;
        }
    
    
    }
    
    public class Rubber  extends ToolColor {
    
    
        
        public Rubber() {
            super();
            this.setColor(Color.WHITE);
        }
        
    //    @Override
    //    public void setColor(Color color) {
    //        
    //    this.color = color.WHITE;
    //    }
    //
    //    @Override
    //    public Color getColor() {
    //        
    //        return color;
    //    }
    
    public class Pixel {
        
        private int x ;
        private int y;
        private int width;
        private int height;
        private Color color;
        
        public Pixel(int x, int y, int width, int height, Color color) {
            super();
            this.x = x;
            this.y = y;
            this.width = width;
            this.height = height;
            this.color = color;
        }
        
        public void draw(Graphics graphics){
            graphics.setColor(color);
            graphics.fillRect(x, y, width, height);
            
            
        }
    
    
        public void setColor(Color color) {
            this.color = color;
        }
        public Color getColor() {
            return color;
        }
        
        public void setX(int x) {
            this.x = x;
        }
        public int getX() {
            return x;
        }
        
        public void setY(int y) {
            this.y = y;
        }
        public int getY() {
            return y;
        }
        public void setWidth(int width) {
            this.width = width;
        }
        public int getWidth() {
            return width;
        }
        public void setHeight(int height) {
            this.height = height;
        }
        public int getHeight() {
            return height;
        }
    
    
    }
    public class Pencil extends ToolColor   {
    
    
        
        
        public Pencil(Color color ) {
            super();
            this.setColor(color);
            
        }
    
    
    //    @Override
    //    public void setColor(Color color) {
    //        this.color = color;
    //        
    //    }
    //
    //    @Override
    //    public Color getColor() {
    //        return color;
    //    }
    
    public class MenuSize extends JMenu {
    
    
        /**
         * 
         */
        private static final long serialVersionUID = 1L;
        private JMenuItem size1 = new JMenuItem("16X16");
        private JMenuItem size2 = new JMenuItem("24X24");
        private JMenuItem size3 = new JMenuItem("32X32");
        
        public MenuSize() {
            super();
            this.setText("Size");
            
            add(size1);
            add(size2);
            add(size3);
            
        }
        
        public JMenuItem getSize1() {
            return size1;
        }
        public JMenuItem getSize2() {
            return size2;
        }
        public JMenuItem getSize3() {
            return size3;
        }
    }
    
    public class MenuColor extends JMenu {
        
    
    
        /**
         * 
         */
        private static final long serialVersionUID = 1L;
        private JMenuItem red = new JMenuItem("Red");
        private JMenuItem green = new JMenuItem("Green");
        private JMenuItem blue = new JMenuItem("Blue");
        
        public MenuColor() {
            this.setText("Colors");
            this.add(red);
            
    
    
            this.add(green);
            
    
    
            this.add(blue);
        }
        
        
        public JMenuItem getRed() {
            return red;
        }
        public JMenuItem getGreen() {
            return green;
        }
        public JMenuItem getBlue() {
            return blue;
        }
        
    }
    
    public class Icon extends Observable implements Observer {
        private static final int defaultSize = 32;
        private int size = defaultSize;
        
        
        
        private Pixel[][] pixels  ;
        
        
        public Icon() {
            super();
            
             pixels = new Pixel[size][size];
             
        }
            
        public void setSize(int size) {
            this.size = size;
        }
        
        public int getSize() {
            return size;
        }
        
        
        
        
        public void setPixels(Pixel pixel){
            int red = pixel.getColor().getRed();
            int green = pixel.getColor().getGreen();
            int blue = pixel.getColor().getBlue();
            
            int x = pixel.getX();
            int y = pixel.getY();
            int width = pixel.getWidth();
            int height = pixel.getHeight();
            
            for(int i = 0; i<size; i++){
                
                for(int j =0; j<size; j++){
                    
                    x = x+10;
                    
                    
                    pixels[i][j] = new Pixel(x, y, width, height,new Color(red, green,blue));
                }
                x = pixel.getX();
                y = y+10;
            }
                    
        }
        
    
    
        
        public Pixel[][] getPixels() {
            return pixels;
        }
        
        public void update(){
            setChanged();
            notifyObservers();
        }
    
    
    
    
        @Override
        public void update(Observable o, Object arg) {
         update();
        }
    
    
    }
    public interface Colorable {
    
    
        public void setColor(Color color);
    
    
        public Color getColor();
    
    
    }
    
    
    public class IconController implements ActionListener, MouseListener{
    
    
        private Icon icon;
        private IconPanel panel;
        private ToolsMenu tools;
        private MenuColor colors;
        private MenuSize sizes;
        
        public IconController(Icon icon) {
            super();
            this.icon = icon;
        }
        
        @Override
        public void actionPerformed(ActionEvent e) {
            if(e.getSource() == colors.getRed()){
                
                
               tools.getTool().setColor(Color.RED);
                
            }else if(e.getSource() == colors.getGreen()){
                tools.getTool().setColor(Color.GREEN);
                
            }else if(e.getSource() == colors.getBlue()){
                tools.getTool().setColor(Color.BLUE);
                
            }else if(e.getSource() == sizes.getSize1() ){
                icon.setSize(16);
            }else if(e.getSource() == sizes.getSize2()){
                icon.setSize(24);
            }else if(e.getSource() == sizes.getSize3()){
                icon.setSize(32);
                
            }
            icon.update();
        }
    
    
        @Override
        public void mouseClicked(MouseEvent e) {
            int x = (e.getX()/10)-2;
            int y = (e.getY()/10)-1;
            
            if(x>=0 && y>=0){
            icon.getPixels()[y][x].setColor(tools.getTool().getColor());
            icon.update();
            }else{;}
            
            
        }
    
    
        @Override
        public void mousePressed(MouseEvent e) {
            // TODO Auto-generated method stub
            
        }
    
    
        @Override
        public void mouseReleased(MouseEvent e) {
            // TODO Auto-generated method stub
            
        }
    
    
        @Override
        public void mouseEntered(MouseEvent e) {
            // TODO Auto-generated method stub
            
        }
    
    
        @Override
        public void mouseExited(MouseEvent e) {
            // TODO Auto-generated method stub
            
        }
    
    
        public void setPanel(IconPanel panel) {
            this.panel = panel;
        }
        public void setTools(ToolsMenu tools) {
            this.tools = tools;
        }
        public void setColors(MenuColor colors) {
            this.colors = colors;
        }
        public void setSizes(MenuSize sizes) {
            this.sizes = sizes;
        }
    }

    è un pò lungo lo so; ma ve ne sarei molto gratta se mi diceste che cosa ne pensate .
    Grazie in anticipo per il vostro aiuto.
    Ultima modifica di LeleFT; 16-06-2014 a 16:10 Motivo: Aggiunti i tag CODE

  6. #6
    Utente di HTML.it L'avatar di minomic
    Registrato dal
    Nov 2010
    Messaggi
    635
    Ciao,
    il codice va postato negli appositi tag CODE, così rimane leggibile ed occupa meno spazio.


  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2014
    Messaggi
    4
    Ok minomic. Grazie per il consiglio.

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.