• HelloWorld

    UML diagram behöverhjälp

    Hej, jag håller på att sliter av mig håret just nu med en uppgift till skolan och jag hittar inga bra artiklar eller förklaringar på youtube som förklarar exakt hur man gör för att skapa en java kod utifrån ett UML klass diagram eller tvärtom.
    Vi ska översätta det här bifogade klassdiagrammet till java kod. Jag har kommit en bit och vill veta om det är korrekt och om någon kan hjälpa mig om jag gjort fel..

    Här är UML diagrammet

    och här har jag försökt koda så gott jag kan utifrån det:

     


    class vara
    //Instance Fields

    private String name;
    private double pris;
    private int antal;

    //methods

    public void setNamn(String namn)
    public void setPris (String double pris)
    public void setAntal (int antal)
    public getNamn

    Nu undrar jag om jag är på rätt väg och hur man gör med resten... jag blir så arg för det finns ingen bra sida som beskriver hur man gör.... tycker det här är svårare än vanligt kodande.
    Tacksam för hjälp


     
  • Svar på tråden UML diagram behöverhjälp
  • HelloWorld
    jaghopparhögt skrev 2013-07-05 00:06:30 följande:
    Mm så nu kan du testa dom andra, printa värdena efter att du skapat objektet och sen ändrar du om med metoderna och printar igen.
    ok då ska ja försöka det.. nu ska jag lämna er ifred era stackare :)
    Jag uppskattar allt ni hjälpt mig med ska ni veta.. :) 
  • Gräsrot
    HelloWorld skrev 2013-07-05 00:13:10 följande:
    ok då ska ja försöka det.. nu ska jag lämna er ifred era stackare :)
    Jag uppskattar allt ni hjälpt mig med ska ni veta.. :) 

    Inga problem kamrat.. Det är ju därför vi finns :)
  • sportpappa

    Det blir också extra rörigt när vi är så många kockar och alla säger lite olika.
    Det går absolut att instansiera Test-klassen i main-metoden, men det fyller ingen funktion för dig. Test-klassen är helt meningslös och rör bara till det.

    För att göra det så enkelt för dig som möjligt så säger jag återigen att du ska flytta in main-metoden in i Vara-klassen och radera Test-klassen helt. Då slipper du att ha flera filer och kan fokusera på att få igång din Vara-klass. Keep it Simple. Gör bara så lite jobb som möjligt. Ju fler grejer du försöker göra samtidigt desto större risk är det att det blir fel.
    Sen när du förstår hur det första fungerar så kan du börja använda andra klasser. Du kommer att behöva ha flera klasser när du går vidare och skapar ditt gränssnitt så du kommer dit du också.

  • HelloWorld

    Sådär ja, då var det kirrat :D


    import java.lang.String;
    class Vara {

    //Deklarerar variabler

    private String name;
    private double price;
    private int antal;

    //tildela konstruktorer för de deklarerade variablerna
    public Vara (String name, int antal, double price) {
    this.name = name;
    this.antal = antal;
    this.price = price;
    } // slut constructor

    public void setName(String name) {
    this.name = name; }

    public void setPrice (double price) {
    this.price = price; }

    public void setAntal (int antal) {
    this.antal = antal; }

    public String getName() {
    return this.name;}

    public double getPrice() {
    return this.price; }

    public int getAntal() {
    return this.antal; }
    }

    //testklassen ska stå som en egen klass
    class Test {
    public static void main(String[] args){
    Vara var = new Vara("Banan",5, 12.5);

    System.out.println("Namnet är " +var.getName() +" och priset är " +var.getPrice() +" och antalet är "+var.getAntal() );// här slutar system.out

    }
    }

    run:
    Namnet är Banan och priset är 12.5 och antalet är 5
    BUILD SUCCESSFUL (total time: 0 seconds)

    Nu ska jag försöka skirva ut detta i en JFrame och textArea ... :D Sen är det kirraaaat. tack tack tack till er, tack vare er börjar jag greppa det här lite bättre. Det är rätt..man måste kämpa lite för att förstå    
  • Gräsrot
    HelloWorld skrev 2013-07-05 12:36:15 följande:
    Sådär ja, då var det kirrat :D

    import java.lang.String;
    class Vara {

    //Deklarerar variabler

    private String name;
    private double price;
    private int antal;

    //tildela konstruktorer för de deklarerade variablerna
    public Vara (String name, int antal, double price) {
    this.name = name;
    this.antal = antal;
    this.price = price;
    } // slut constructor

    public void setName(String name) {
    this.name = name; }

    public void setPrice (double price) {
    this.price = price; }

    public void setAntal (int antal) {
    this.antal = antal; }

    public String getName() {
    return this.name;}

    public double getPrice() {
    return this.price; }

    public int getAntal() {
    return this.antal; }
    }

    //testklassen ska stå som en egen klass
    class Test {
    public static void main(String[] args){
    Vara var = new Vara("Banan",5, 12.5);

    System.out.println("Namnet är " +var.getName() +" och priset är " +var.getPrice() +" och antalet är "+var.getAntal() );// här slutar system.out

    }
    }

    run:
    Namnet är Banan och priset är 12.5 och antalet är 5
    BUILD SUCCESSFUL (total time: 0 seconds)

    Nu ska jag försöka skirva ut detta i en JFrame och textArea ... :D Sen är det kirraaaat. tack tack tack till er, tack vare er börjar jag greppa det här lite bättre. Det är rätt..man måste kämpa lite för att förstå     
    Grattis kamrat..
    ser du nu.. Du kan ju riktigt bra.. 
  • HelloWorld
    Gräsrot skrev 2013-07-05 20:03:44 följande:
    Grattis kamrat..
    ser du nu.. Du kan ju riktigt bra.. 
    Tack :)

    Nu är det såhär att med risk för att vara tjatig har jag fastnat igen och verkligen läst, letat igenom försökt ersätta med nya tänk och koder igen nu i 2-3 dygn eller vad det nu blir (tappat räkningen)
    Den där koden som ni hjälpte mig med skulle omvandlas till GUI så att variablerna namn, price och antal skulle skrivas in i 3 varsina textfält för att sedan returnera strängen banan , nästa textfält skulle returnera en 12.5 och den tredje 5. Allt detta i en textarea.

    Nu får jag inte till det igen, och jag vet inte om jag sabbar i mitt tänk men jag tycker mig verka gjort rätt. Jag får inte upp något error utan enbart en tom ruta....

    Skickar in koden om nån orkar kika för jag har verkligen slut på hjärnceller.import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JTextArea;
    import javax.swing.JTextField;
    import java.lang.String;
    import java.awt.TextField;

    public class MinVara extends javax.swing.JFrame {

    //Skapar upp variabler
    JFrame frame = new JFrame();
    private String name;
    private int antal;
    private double price;

    /**
    * Creates new form MinVara
    */
    //Skapar konstruktor för

    public MinVara(String name, int antal, double price) {
    this.name = name; //this "Det här objektet name"
    this.antal = antal; //""
    this.price = price;//""

    initComponents();
    }

    // slut constructor

    @Override
    public void setName(String name) {
    this.name = name; }

    public void setAntal (int antal) {
    this.antal = antal; }

    public void setPrice (double price) {
    this.price = price; }

    @Override
    public String getName() {
    return this.name;}

    public int getAntal() {
    return this.antal; }

    public double getPrice() {
    return this.price; }

    /**
    * This method is called from within the constructor to initialize the form.
    * WARNING: Do NOT modify this code. The content of this method is always
    * regenerated by the Form Editor.
    */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

    jPanel1 = new javax.swing.JPanel();
    jScrollPane1 = new javax.swing.JScrollPane();
    jTextArea1 = new javax.swing.JTextArea();
    jTextField1 = new javax.swing.JTextField();
    jTextField2 = new javax.swing.JTextField();
    jTextField3 = new javax.swing.JTextField();
    jButton1 = new javax.swing.JButton();

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

    jTextArea1.setColumns(20);
    jTextArea1.setRows(5);
    jScrollPane1.setViewportView(jTextArea1);

    jTextField1.setText("jTextField1");

    jTextField2.setText("jTextField2");

    jTextField3.setText("jTextField3");

    jButton1.setText("jButton1");
    jButton1.addActionListener(new java.awt.event.ActionListener() {
    public void actionPerformed(java.awt.event.ActionEvent evt) {
    jButton1ActionPerformed(evt);
    }
    });

    javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
    jPanel1.setLayout(jPanel1Layout);
    jPanel1Layout.setHorizontalGroup(
    jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
    .addGap(36, 36, 36)
    .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
    .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
    .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
    .addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
    .addComponent(jTextField3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
    .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 137, javax.swing.GroupLayout.PREFERRED_SIZE))
    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
    .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 194, Short.MAX_VALUE)
    .addGap(27, 27, 27))
    );
    jPanel1Layout.setVerticalGroup(
    jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
    .addGroup(jPanel1Layout.createSequentialGroup()
    .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
    .addGroup(jPanel1Layout.createSequentialGroup()
    .addContainerGap()
    .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 249, javax.swing.GroupLayout.PREFERRED_SIZE))
    .addGroup(jPanel1Layout.createSequentialGroup()
    .addGap(59, 59, 59)
    .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
    .addGap(18, 18, 18)
    .addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
    .addGap(18, 18, 18)
    .addComponent(jTextField3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
    .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 47, javax.swing.GroupLayout.PREFERRED_SIZE)))
    .addContainerGap(40, Short.MAX_VALUE))
    );

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
    getContentPane().setLayout(layout);
    layout.setHorizontalGroup(
    layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
    .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
    );
    layout.setVerticalGroup(
    layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
    .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
    );

    pack();
    }// </editor-fold>

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
    jTextArea1.setText(null); //tömmer textarean
    name = jTextField1.getText();
    antal = Integer.parseInt( jTextField3.getText() );
    price = Double.parseDouble(jTextField2.getText() );

    jTextArea1.setText(jTextField1.getText());
    jTextArea1.setText(jTextField2.getText());
    jTextArea1.setText(jTextField3.getText());

    //Deklarerar variabler och tilldelar dem värden
    MinVara var = new MinVara("banan",5, 12.5);

    jTextArea1.append("Varan består av " +var.getName() +" och priset är " +var.getPrice() +"kr och antalet är "+var.getAntal() );

    }

    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
    /*
    * Set the Nimbus look and feel
    */
    //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
    /*
    * If Nimbus (introduced in Java SE 6) is not available, stay with the
    * default look and feel. For details see
    * download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
    */
    try {
    for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
    if ("Nimbus".equals(info.getName())) {
    javax.swing.UIManager.setLookAndFeel(info.getClassName());
    break;
    }
    }
    } catch (ClassNotFoundException ex) {
    java.util.logging.Logger.getLogger(MinVara.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (InstantiationException ex) {
    java.util.logging.Logger.getLogger(MinVara.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (IllegalAccessException ex) {
    java.util.logging.Logger.getLogger(MinVara.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (javax.swing.UnsupportedLookAndFeelException ex) {
    java.util.logging.Logger.getLogger(MinVara.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    }
    //</editor-fold>

    /*
    * Create and display the form
    */
    java.awt.EventQueue.invokeLater(new Runnable() {
    @Override
    public void run() {
    JFrame frame = new JFrame("Resultat");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);

    }
    });
    }
    // Variables declaration - do not modify
    private javax.swing.JButton jButton1;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTextArea jTextArea1;
    private javax.swing.JTextField jTextField1;
    private javax.swing.JTextField jTextField2;
    private javax.swing.JTextField jTextField3;
    // End of variables declaration
    }  
  • HelloWorld
    jaghopparhögt skrev 2013-07-08 16:23:35 följande:
    Men vad är det som är fel? Och snälla använd pastie :)
    ok sorry... :)

    Jag tror jag måste använda mig av input metod kanske... grejen är att jag jag inte få till biten där jag ska skriva in en strängen "namn"  och få ut svaret banan i en textarea
    nästa textfält ska jag kunna skriva pris och få ut 12.5 som svar i textarea
    och sista ska jag skriva antal och få ut 5 i textarean. Just nu är felet att det inte fungerar och jag får bara upp en blank ruta men inga errors

    Men jag antar jag måste ha med input metoden men jag vet inte riktigt vart jag ska klämma in den..  Försökte skapa en container också som det stod nånstans att man skulle men det funkar inte!

    http://pastie.org/8121493 
  • HelloWorld
    jaghopparhögt skrev 2013-07-08 17:55:17 följande:
    Men du ska ju plocka ut värdena ur guit som ritas upp?
    Jag har tydligen förstått vår uppgift helt fel. 

    Vi ska skriva in priset, antalet och varans namn i textfält sen ska samma visas i text area sen.JAg gjorde det  mer komplicerat än jag behövde... suck
  • HelloWorld
    jaghopparhögt skrev 2013-07-08 18:33:26 följande:
    Du kan kolla lite t ex här.

    " rel="nofollow" target="_blank">



    Ni verkar ha fått väldigt mycket kod av er lärare, måste ni använda denna?
    Nu har jag försökt fixa mitt fel 
    http://pastie.org/8121722

    Nej den koden jag klistrade in var det som skapats by default av designen, jag tog bort den denna gången från pastie så det ska synas bättre.

    Nu tycker jag liksom att det borde fungera men icke sa nicke. Är det såhär man  blr en bra programmerare? Genom att sitta hemma och ruttna i 5 dygn i sträck...hå hå jaja :)  
  • jaghopparhögt
    HelloWorld skrev 2013-07-08 19:08:22 följande:
    Nu har jag försökt fixa mitt fel 
    pastie.org/8121722

    Nej den koden jag klistrade in var det som skapats by default av designen, jag tog bort den denna gången från pastie så det ska synas bättre.

    Nu tycker jag liksom att det borde fungera men icke sa nicke. Är det såhär man  blr en bra programmerare? Genom att sitta hemma och ruttna i 5 dygn i sträck...hå hå jaja :)  
    Men exakt vad händer när du kör koden?
  • HelloWorld
    jaghopparhögt skrev 2013-07-08 19:16:38 följande:
    Men exakt vad händer när du kör koden?
    En liten ruta dyker upp helt tillplattad som jag får förstora och den är helt grå..dvs dyker inte upp något alls.. :/
  • HelloWorld
    jaghopparhögt skrev 2013-07-08 19:16:38 följande:
    Men exakt vad händer när du kör koden?
    Ingen textArea , inga textfält... inget alls alltså.. 
  • HelloWorld
    jaghopparhögt skrev 2013-07-08 20:07:39 följande:
    Till att börja med vad utgår du ifrån när du kodar, vilken litteratur använder du?
    Dietels upplaga 9, föreläsningar vi har i skolan samt googlar. 
     
  • Gräsrot

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                            jTextArea1.setText(null); //tömmer textarean name  = jTextField1.getText(); antal  = Integer.parseInt( jTextField3.getText() ); price = Double.parseDouble(jTextField2.getText() );
      jTextArea1.setText(jTextField1.getText());   jTextArea1.setText(jTextField2.getText());    jTextArea1.setText(jTextField3.getText());   

    //Deklarerar variabler och tilldelar dem värden    MinVara var = new MinVara("banan",5, 12.5);   jTextArea1.append("Varan består av " +var.getName() +" och priset är " +var.getPrice() +"kr och antalet är "+var.getAntal() );             
        }            

    varför gör du så här???

    Du gör textfält för att skriv in i och sedan vill du lägga det du skriver in i textArea..

    du borde väl skicka det du skriver till konstruktorn för din vara klass.. annars förstår jag inte
    meningen med att ha den.. Övningen är väl att göra en MVC applikation...

    Eller vad går den egentligen ut på..     
      

  • HelloWorld
    Gräsrot skrev 2013-07-08 22:25:01 följande:
    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                            jTextArea1.setText(null); //tömmer textarean name  = jTextField1.getText(); antal  = Integer.parseInt( jTextField3.getText() ); price = Double.parseDouble(jTextField2.getText() );
      jTextArea1.setText(jTextField1.getText());   jTextArea1.setText(jTextField2.getText());    jTextArea1.setText(jTextField3.getText());   

    //Deklarerar variabler och tilldelar dem värden    MinVara var = new MinVara("banan",5, 12.5);   jTextArea1.append("Varan består av " +var.getName() +" och priset är " +var.getPrice() +"kr och antalet är "+var.getAntal() );             
        }            

    varför gör du så här???

    Du gör textfält för att skriv in i och sedan vill du lägga det du skriver in i textArea..

    du borde väl skicka det du skriver till konstruktorn för din vara klass.. annars förstår jag inte
    meningen med att ha den.. Övningen är väl att göra en MVC applikation...

    Eller vad går den egentligen ut på..     
      
    Ja du... jag är verkligen värdelös på det här... 
    Sitter och försöker läsa i Dietelboken nu för jag antar att jag inte riktigt förstår det här med konstruktorer så bra. Tack för svar igen iaf :) 
Svar på tråden UML diagram behöverhjälp