• 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

    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....  

  • 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? 
     
  • 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 :)  
  • HelloWorld
    Gräsrot skrev 2013-07-02 17:02:18 följande:
    Sitter håret kvar på huvudet förresten.
    aha tack :) ska prova om en stund .NU har jag suttit sen imorse och fått en fruktansvärd migrän. Håret sitter kvar men hjärnan håller på och rinner ut genom ena örat... (kokat över ;)  )

    vill nästan ge upp vilken sekund som helst... tack ÄNNU en gång 
  • HelloWorld
    Gräsrot skrev 2013-07-02 16:48:27 följande:

    Åå tack kamrat.

    Okej så här kan man förklara det hela.

    Du har först klassen du ska skapa.
    Överst i UML står namnet på klassen och det ska alltid börja på stor bokstav (vilket kallas att göra strong naming) MinFörstaKlass

    Därefter i första rutan skriver du alla variabler denna ska innehålla vad de ska heta och vilken typ de är och vilken accessnivå de ska ha osv. (observera att ordningen är omvänd den som står i din UML där namnet står först och datatyp sist)

    Private (kan endast användas internt i klassen) Int (datatyp integer) price (namnet i uml) 
    Public (öppen för anrop från andra klasser eller andra projekt)            

    Därefter i UML står metoderna (egenskaper) som klassen (aka objectet) ska ha
    public void getPrice()
    { return this.price; }   

    För att datorn ska fatta att du nu skapat en klass som ska utföra något och inte bara skrivit en massa text så måste det finnas en construktor. oftast skapas denna by default om du använder en IDE men skriver du allt själv i tex antekningar så måste du skriva en default själv

    Public Class Vara()
    {}

    Nu först fattar maskinen att det är frågan om en klass som det går att skapa objekt ifrån.

    Själva skapandet (eller användandet) av en klass är det som kallas instansiera ett objekt.
    det är det du gör i din testklass när du skrev
    Vara vara = new Vara();
    New ordet anger att det är en ny instans av vara som skapas.. Se set som att klassen vara är ritningen
    och instansierandet är själva byggandet av huset. För att kunna bo i det måste du först bygga det. Varje
    instans måste vara unik och kompilatorn klagar om det finns 2 med samma namn. (Du kan inte bygga ett likadant hus inuti ditt hus). Det är först när du byggt huset efter ritningen som du ser om det blev rätt eller om du saknar en dörr att gå in genom.

    Jag kan skicka kursmaterialet jag en gång hade om du vill.. Det är visserligen från C# (microsoft) men det objektorienterade är detsamma. Det fick mig att fatta en gång..

    Alltid kul att kunna hjälpa någon..      
    Ah helt sjukt vad duktig du är och på att förklara med :)
    Den här javan har fått mig att känna mig som en imbecill men jag fått höra från många att de kände sig så i början så jag ska väl inte vara för hård mot mig själv.
    Måste tyvärr dock ta en paus nån timme eftersom jag suttit sen imorse och ta en migräntablett haha, men du får gärna skicka materialet om du tycker det skulle hjälpa mig. Kan man göra det via familjeliv? Jag är inte inne här sååå ofta egentligen, det blir väl när jag behöver gnälla ang javan mest

     
  • HelloWorld
    sportpappa skrev 2013-07-02 16:38:40 följande:
    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";
    tack försökte dock det men fick nån error där med...  måste ha gjort nåt fel nån annanstans antar jag. Känner att det är bäst att börja om 
     
Svar på tråden UML diagram behöverhjälp