Avatar billede ultragames Nybegynder
23. oktober 2004 - 19:54 Der er 15 kommentarer og
1 løsning

sammenkæd 2 klasser

hej eksperter..

Jeg er igang med et skoleprojekt, hvori vi skal laves et program der kan oprette nogle bøger, med tilhørende forfatter..

Vi skal lave minimum 2 klasser..

Forfatter
og
Bog

Jeg er ret ny i java, og kan ikke lige lure hvordan jeg skal få forbundet de 2 klasser, sådan at 1 forfatter kan lave fx 3 vbøger, og når jeg viser forfatter info, skal jeg se de 3 bøger han har lavet..
Avatar billede arne_v Ekspert
23. oktober 2004 - 19:57 #1
Forfatter skal vel indeholde en reference til de Bog'er som hører til. Noget a la:

import java.util.*;

public class Forfatter {
  private ArrayList boger;
  ...
  public void addBog(Bog b) {
      boger.add(b);
  }
  ...
}
Avatar billede ultragames Nybegynder
23. oktober 2004 - 20:05 #2
jeg har min klasse Forfatter: (Forfatter.java)

------------------------------------------------

public class Forfatter {
   
    public String navn;
    public String cpr;
    public int telefon;

    public Forfatter(String navn, String cpr, int telefon) // Her oprettes en contructor
   
    {
        this.navn=navn;
        this.cpr=cpr;
        this.telefon=telefon;
    }

    public void setNavn(String navn) // Opretter metoden setNavn
    {
        this.navn=navn;
    }
   
    public void setTelefon(int telefon) // Opretter metoden setTelefon
        {
        this.telefon=telefon;
                   
        }
   
    public void setCPR(String cpr) // Opretter metoden setCPR
            {
            this.cpr=cpr;
                   
            }
}

---------------------------------------------------

og klassen Bog ( BOg.java)
---------------------------------------------------

ublic class Bog {

    public String Titel;
    public String ISBN;
    public String Fag;
    public String Aargang;
    public String Udgivelses_aar;
    public int Antal_sider;
    public double Pris;


    public Bog(
        String Titel,
        String ISBN,
        String Fag,
        String Aargang,
        String Udgivelses_aar,
        int Antal_sider) // Her oprettes en cuntructor

    {
        this.Titel = Titel;
        this.ISBN = ISBN;
        this.Fag = Fag;
        this.Aargang = Aargang;
        this.Udgivelses_aar = Udgivelses_aar;
        this.Antal_sider = Antal_sider;
           
       
    }

    public void setTitel(String Titel) // Opretter metoden setNavn
    {
        this.Titel = Titel;
    }

    public void setISBN(String ISBN) // Opretter metoden setTelefon
    {
        this.ISBN = ISBN;

    }

    public void setFag(String Fag) // Opretter metoden setCPR
    {
        this.Fag = Fag;

    }

    public void setAargang(String Aargang) // Opretter metoden setCPR
    {
        this.Aargang = Aargang;

    }
    public void setUdgivelses_aar(String Udgivelses_aar) // Opretter metoden setCPR
    {
        this.Udgivelses_aar = Udgivelses_aar;

    }
   
    // Udskrivnings metoden
   
   
    public void udskriv_bog(String Titel, String ISBN, String Fag, String Aargang, String Udgivelses_aar) // Opretter metoden setCPR
    {
        System.out.println("Titel: " + this.Titel);
        System.out.println("ISBN: " + this.ISBN);
        System.out.println("FAG: " + this.Fag);
        System.out.println("Årgang: " + this.Aargang);
        System.out.println("Udgivelses ÅR: " + this.Udgivelses_aar);

    } // slut på udskrivning
   
   
   
   
   
   
    public void setAntal_sider(int Antal_sider, double Pris) // Opretter metoden setCPR
    {
        this.Antal_sider = Antal_sider;
       
        double side150over = 0;
        double side100til149 = 0;
        double side50til99 = 0;
        double side1til49 = 0;
       
       

       
        if(this.Antal_sider > 150)
            {
            side150over = this.Antal_sider-149;                                        // antal_sider - 149                
            side100til149 = this.Antal_sider-99-side150over;           
            side50til99 = this.Antal_sider-49-side100til149-side150over;       
            side1til49 =  this.Antal_sider-0-side50til99-side100til149-side150over;

       
           
            this.Pris = (side150over * 1) + (side100til149 * 1.5) + (side50til99 * 2) + (side1til49 * 3); 
           
            }
        else if(this.Antal_sider >= 100 && this.Antal_sider <= 149)
            {
            side150over = 0;                   
            side100til149 = this.Antal_sider-99-side150over;           
            side50til99 = this.Antal_sider-49-side100til149-side150over;       
            side1til49 =  this.Antal_sider-0-side50til99-side100til149-side150over;
       
            this.Pris = (side100til149 * 1.5) + (side50til99 * 2) + (side1til49 * 3);

           
            }
        else if(this.Antal_sider >= 50 && this.Antal_sider <= 99)
            {
            side150over = 0;                   
            side100til149 = 0;           
            side50til99 = this.Antal_sider-49-side100til149-side150over;       
            side1til49 =  this.Antal_sider-0-side50til99-side100til149-side150over;
           
            this.Pris = (side50til99 * 2) + (side1til49 * 3);

            }
        else if(this.Antal_sider >= 1 && this.Antal_sider <= 49)
            {
            side150over = 0;                   
            side100til149 = 0;           
            side50til99 = 0;       
            side1til49 =  this.Antal_sider-0-side50til99-side100til149-side150over;
                       
            this.Pris = (side1til49 * 3);

            }

    }
}


-----------

skal jeg så laveen metode som opretter en bod til forfatteren i min "opret forfatter" klasse?
Avatar billede arne_v Ekspert
23. oktober 2004 - 20:08 #3
Du skal tilføje en metode til Forfatter som kan tilføje en bog (addBog)
og formentlig en metode som henter alle bøger (getBoger).
Avatar billede ultragames Nybegynder
23. oktober 2004 - 20:12 #4
ok.. men lad os så lige ta udgangspunkt i dit eksempel:

import java.util.*;

public class Forfatter {
  private ArrayList boger;
  ...
  public void addBog(Bog b) {
      boger.add(b);
  }
  ...
}

hvad er b?.. et enkelt "id".. eller er det en række informationer omkring bogen?

eller mener du bare jeg skal have alle mine objektet med fra bog-klassen ind i morgen opretBog-metode?
Avatar billede arne_v Ekspert
23. oktober 2004 - 20:14 #5
b er et objekt af typen Bog
Avatar billede ultragames Nybegynder
23. oktober 2004 - 20:16 #6
dvs jeg skal bare lave den om til

public void addBog(Bog Titel, Bog Sider, Bog Fag) { // osv osv ??
      boger.add(b);


og hvad så nede i boger.add(b)?
Avatar billede arne_v Ekspert
23. oktober 2004 - 20:18 #7
Nej.

public void addBog(Bog b) {

er fint.
Avatar billede arne_v Ekspert
23. oktober 2004 - 20:18 #8
Skal jeg lige prøve at lave et lidt mere komplet eksempel ?
Avatar billede arne_v Ekspert
23. oktober 2004 - 20:32 #9
public class Bog {
    private String titel;
    private String forlag;
    private int udgivelse;
    public Bog() {
        this("", "", 0);
    }
    public Bog(String titel, String forlag, int udgivelse) {
        this.titel = titel;
        this.forlag = forlag;
        this.udgivelse = udgivelse;
    }
    public String getTitel() {
        return titel;
    }
    public void setTitel(String titel) {
        this.titel = titel;
    }
    public String getForlag() {
        return forlag;
    }
    public void setForlag(String forlag) {
        this.forlag = forlag;
    }
    public int getUdgivelse() {
        return udgivelse;
    }
    public void setUdgivelse(int udgivelse) {
        this.udgivelse = udgivelse;
    }
    public String toString() {
        return (titel + " " + forlag + " " + udgivelse);
    }
}
Avatar billede arne_v Ekspert
23. oktober 2004 - 20:32 #10
import java.util.*;

public class Forfatter {
    private String navn;
    private List boger;
    public Forfatter() {
        this("");
    }
    public Forfatter(String navn) {
        this.navn = navn;
        boger = new ArrayList();
    }
    public String getNavn() {
        return navn;
    }
    public void setNavn(String navn) {
        this.navn = navn;
    }
    public void addBog(Bog b) {
        boger.add(b);
    }
    public String toString() {
        StringBuffer sb = new StringBuffer(navn + ": ");
        for(int i = 0; i < boger.size(); i++) {
            if(i > 0) {
                sb.append(",");
            }
            sb.append(boger.get(i).toString());
        }
        return sb.toString();
    }
}
Avatar billede arne_v Ekspert
23. oktober 2004 - 20:33 #11
public class TestForfatterBog {
    public static void main(String[] args) {
        Forfatter f = new Forfatter("Anders Andersen");
        f.addBog(new Bog("En A historie", "Superforlaget", 1990));
        f.addBog(new Bog("Essay", "Superforlaget", 1992));
        System.out.println(f);
    }
}
Avatar billede arne_v Ekspert
23. oktober 2004 - 20:33 #12
Output:

Anders Andersen: En A historie Superforlaget 1990,Essay Superforlaget 1992
Avatar billede ultragames Nybegynder
23. oktober 2004 - 20:36 #13
ja tak :)
Avatar billede arne_v Ekspert
23. oktober 2004 - 20:43 #14
Allerede postet !
Avatar billede ultragames Nybegynder
23. oktober 2004 - 20:58 #15
hehe... jeg har ikke tid til at prøve det nu!,. men smid et svar. så får du point ;)
Avatar billede arne_v Ekspert
23. oktober 2004 - 21:04 #16
ok
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester