• 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
  • Gräsrot

    Hej HelloWorld

    Ser att du är i början av din karriär som utvecklare..

    Class Vara
    {
    //Deklarerar variabler 
    private String name;
    private double pris;
    private int antal;

    //Constructor        
    public vara ()
    {



    // gör antagande att du ska nå detta från en extern testklass och sätter metoderna som Public 

    public void setName(string name) 
    {
      this.name = name
    // this.name syftar på name i deklarerade variabler (private string name) och name syftar på det som står i parrantesen i void metoden 
      }

    public void  setPrice (double price) //antar att det är tryckfel i din uml
    {
      this.price = price;
    }

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

    public string getName()
    {
       return this.name;


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

    public int getAntal()
    {
       return this.antal;
    }  
    } // end class vara

    vet du hur man gör när man gör testklassen förresten.

    det finns många sidor med exempel
    http://stackoverflow.com/questions/6638964/set-and-get-methods-in-java

    observera att inte göra det så avancerat då din lärare ser att du gjort copy paste  
        

  • HelloWorld

    Hej! Tack så mycket snälla du, det var mer utvecklat än jag kunde önska mig, ska kolla in den där sidan också... vill banne mig lära mig men det är lit svårt när våran bok inte tar upp det så bra,

    Jag ska skapa en konstruktor också av namn, pris och antal..

    blir det här rätt då?

    namn n = new namn ();
    antal a = new antal ();
    pris p = new pris ();

    vill bara veta om jag förstått rätt hur man skapar en konstruktor....  

  • Gräsrot
    HelloWorld skrev 2013-07-01 12:29:15 följande:
    Hej! Tack så mycket snälla du, det var mer utvecklat än jag kunde önska mig, ska kolla in den där sidan också... vill banne mig lära mig men det är lit svårt när våran bok inte tar upp det så bra,

    Jag ska skapa en konstruktor också av namn, pris och antal..

    blir det här rätt då?

    namn n = new namn ();
    antal a = new antal ();
    pris p = new pris ();

    vill bara veta om jag förstått rätt hur man skapar en konstruktor....  

    Öhhh inte helt.. Men snälla var läser du och vilken litteratur har du för här har vi grundläggande brister.
    new kommandot får inte användas på metoder (void) utan endast på instanser (objekt) eller variabler
    (string) och arrays.
     
    Construktor kan vara enkel som den jag använde:
    När du skapar en instans av den i testklassen (den med main i)
    så skapar du en tom vara.

    Vara var = new Vara () //skapar en ny instans av vara med namnet var.

    därefter får du kalla på metoderna genom "var"

    var.SetPrice() =   12,5; //det är ju en double
    var.SetName() = "Bananer" ;       
     
    när du ska ha ut värdet i price igen så måste du antingen deklarera en ny variabel av typ
    double annars fattar datorn inte var den ska göra av den. (Kan inte stoppa en fyrkantig kloss i ett runt hål).

    double priset = var.GetPrice();  

    eller så får du skriva ut det med System.Out.Write(var.GetPrice());  

    Det finns även överlagrade construktor .

    då ska detta in i Vara klassen

    public Vara(string name, int antal, double price )
    {
      this.name = name;
    this.antal = antal;
    this.double = price;  

      
     låt den andra konstruktorn sitta kvar som default (det skadar inget) och skriv detta i main

    Vara andraVaran = new Vara("Burk",1,14,67)  // string, int , double

    jag vet att det kan vara tjurigt i början med att förstå objekt instanser etc. 
    jag använde dietels böcker i början med Java och tyckte det var ok.

    vänta bara tills det är dags för generics och trådning..   

        
  • HelloWorld
    Gräsrot skrev 2013-07-01 13:45:44 följande:

    Öhhh inte helt.. Men snälla var läser du och vilken litteratur har du för här har vi grundläggande brister.
    new kommandot får inte användas på metoder (void) utan endast på instanser (objekt) eller variabler
    (string) och arrays.
     
    Construktor kan vara enkel som den jag använde:
    När du skapar en instans av den i testklassen (den med main i)
    så skapar du en tom vara.

    Vara var = new Vara () //skapar en ny instans av vara med namnet var.

    därefter får du kalla på metoderna genom "var"

    var.SetPrice() =   12,5; //det är ju en double
    var.SetName() = "Bananer" ;       
     
    när du ska ha ut värdet i price igen så måste du antingen deklarera en ny variabel av typ
    double annars fattar datorn inte var den ska göra av den. (Kan inte stoppa en fyrkantig kloss i ett runt hål).

    double priset = var.GetPrice();  

    eller så får du skriva ut det med System.Out.Write(var.GetPrice());  

    Det finns även överlagrade construktor .

    då ska detta in i Vara klassen

    public Vara(string name, int antal, double price )
    {
      this.name = name;
    this.antal = antal;
    this.double = price;  

      
     låt den andra konstruktorn sitta kvar som default (det skadar inget) och skriv detta i main

    Vara andraVaran = new Vara("Burk",1,14,67)  // string, int , double

    jag vet att det kan vara tjurigt i början med att förstå objekt instanser etc. 
    jag använde dietels böcker i början med Java och tyckte det var ok.

    vänta bara tills det är dags för generics och trådning..   

        
    Ok tack ännu en gång.. Jo det är aningen tungt..jag har hållt på i 3 månader ungefär men inte 3 månader i sträck och jag tycker aldrig det lossnar ordentligt.
    jag har använt Dietel men jag tycker inte det framgår bra och ordentligt beskrivet hur ett UML diagram skrivs i 9onde upplagan...jag har bläddrat igenom hela boken och visst finns exempel men de exemplen är inte bra anser jag..eller så är jag trög...vet inte längre. Jag ska försöka klura här lite så lossnar det nog så småningom hoppas jag. Tack så mycke tför att du orkade ta sig tid att gå igenom det här. Är du erfaren programmerare? 
     
  • Gräsrot
    HelloWorld skrev 2013-07-01 18:30:42 följande:
    Ok tack ännu en gång.. Jo det är aningen tungt..jag har hållt på i 3 månader ungefär men inte 3 månader i sträck och jag tycker aldrig det lossnar ordentligt.
    jag har använt Dietel men jag tycker inte det framgår bra och ordentligt beskrivet hur ett UML diagram skrivs i 9onde upplagan...jag har bläddrat igenom hela boken och visst finns exempel men de exemplen är inte bra anser jag..eller så är jag trög...vet inte längre. Jag ska försöka klura här lite så lossnar det nog så småningom hoppas jag. Tack så mycke tför att du orkade ta sig tid att gå igenom det här. Är du erfaren programmerare? 
     

    Aha.. Okej nu förstår jag hur du menar. Okej litet tips om du vill jobba som utvecklare är att UML inte är allt.
    I många fall så skippas den (tyvärr) eftersom de agila metoderna inte prioriterar den. Där prioriteras att koda framför att dokumentera (åsikter om detta är vettigt varierar). Men vill du bli bra på det med exempel så kolla
    Applying UML and Patterns av Larman.   

    Du kan lära dig detta (det är inte raketvetenskap trots allt) om någon kan förklara det för dig på ett bra sätt.

    Ett bra sätt är att gå via överkurs. Jag lärde mig efter att jag sökte jobb  fick ett test som egentligen var avsett för mer seniora personer. Efter en mycket förnedrande sågning av den kod jag producerat behöll jag uppgiften och satsade på att knäcka den. Jag upptäckte då att ett av felen med böckerna var att de fokuserar mycket på "gömma integer" exempel istället för real World. (hur ofta gör du en fizzbuzz egentligen när du utvecklar en app). Dessutom märker du snart att konsolprogram inte lär dig mer än hur datatyper funkar.
    Ska du göra grafiskt så blir det problem.

    Jag är inte enligt mig själv en större utvecklare (Linus Torvald som gjorde Linux OS är en bra utvecklare) utan jag ser mig mer som en i mängden. Ibland blir det rätt och ibland inte alls. 

    Vilken skola går du på förresten.        

         
  • HelloWorld

    Jag studerar vid högskolan Dalarna.
    Jag vill tacka dig jättemycket för din hjälp , för tack vare dig insåg jag att jag måste läsa på mer om vad instanser och konstruktorer är för något. Jag har läst om det 100 gånger men av nån aledning vill det inte fastna. 
    Så man kan ju inte direkt koda bra om man inte fattar vad sakerna gör :)
    Jo precis , UML var mer en träning och tillhör ju kursen som "grundkunskaper" så det är ju inte mitt största problem egentligen men anta att jag arbetar någonstans och får ett UML diagram framför mig och inte ens kan översätta diagrammet till kod..ja då ser jag ett problem. :)
    jag har inte löst uppgiften helt ännu..jag ska ta och läsa igenom om konstruktorer och istanser , objekt osv...kolla på det du skickat mig och se om jag kan förstå kopplingen (det gör jag lite halvt) förutom att jag inte riktigt fattar det här med att instansiera osv.  Vi får väl se, jag kan ju demonstrera när jag är klar så kanske du kan ge mig en guldstjärna hehe

    ja jag vet inte vad du vill kalla dig men i mina ögon verkar du påläst och duktig iallafall.  

  • HelloWorld

    Hej igen, jag sliter fortf med den där uppgiften..nåt jag fastnat på nu är det här :


    public void setName(String name) {
    var.setName() = "Halstabletter";

    jag får ett error på setName som lyder:

    method set name in class Vara.vara cannot be  applied to given types.

    Jag går igenom en vide om set och get methods samt konstruktorer och jag kan inte se något fel i metoden. Vad är det jag missar? Svara bara om du orkar... jag håller på och letar här under tiden så kanske hinner lösa det innan du ser detta :)  
  • sportpappa

    Det du försöker göra är att tilldela en metod värdet "Halstabletter".
    Från tidigare inlägg så gissar jag att du vill sätta instansvariabeln name till texten "Halstabletter" vilket du skriver:
    this.name = "Halstabletter";

Svar på tråden UML diagram behöverhjälp