Avatar billede perle Nybegynder
24. marts 2003 - 07:23 Der er 11 kommentarer og
1 løsning

Tilgå en attribut i en anden klasse

Jeg skal lave et lille programeksempel som går ud p at jeg har to klasser eks A og B. Øvelsen går i sin enklethed ud på hvordan jeg i en metode i klassen A kan anvende en attribut i klassen B. (Der må ikke være tale om nedarvede klasser)
Avatar billede riversen Nybegynder
24. marts 2003 - 07:36 #1
simpel at abstrakt datatype? hvordan tilgå...få en kopi eller ændre direkte?
Avatar billede riversen Nybegynder
24. marts 2003 - 07:39 #2
men du skal jo bare lave instanserne public, protected eller "package scobe", hvis de ligger i samme pakke. Eller hvis du vil have dem private (hvilket for det meste er konventionen), skal du lave en get-metode der returnerer den del af datakernen du vil have fat i. Husk at tænke på om abstrakte datatyper skal returnerer en reference kopi eller den egentlige reference
Avatar billede arne_v Ekspert
24. marts 2003 - 08:04 #3
Du kalder en get metode !

Eller har jeg misset noget ?

(pointene antyder at der er komplikationer)
Avatar billede mosquito Nybegynder
24. marts 2003 - 08:05 #4
prøv:
          A.b-attribut

returnerer b-attribut fra A, hvis den er public
Avatar billede arne_v Ekspert
24. marts 2003 - 08:06 #5
B b = new B();
X x = b.getX();
Avatar billede mosquito Nybegynder
24. marts 2003 - 08:06 #6
hov.. omvendt hvis dit eksempel skal følges..

B.a-attribut

returnere a-attributten fra B, igen hvis den er public
Avatar billede soreno Praktikant
24. marts 2003 - 08:06 #7
public class A
{
  private B b;
  private String value;

  public A(B b)
  {
    this.b = b;
  }

  public void setVal(String value)
  {
    this.value = value;
    b.setVal(this.value);
  }

  public String getVal()
  {
    return b.getVal();
  }
}

public class B
{
  private String value;
  public B()
  {
  }
 
  public void setVal(String value)
  {
    this.value = value;
  }
 
  public String getVal()
  {
    return this.value;
  }
}

public class Main
{
  public static void main(String args[])
  { 
    A a = new A(new B());
    a.setVal("Hello World");
    System.out.println(a.getVal());
  }
}
Avatar billede arne_v Ekspert
24. marts 2003 - 08:09 #8
Hvis problemet er det klassiske med at få fat i referancen, så er en
typisk løsning at sende referance med over i konstruktor:

Hvis B opretter A som:

A a = new A(this);

og A ser ud som:

public class A {
    private B b;
    public A(B b) {
      this.b = b;
    }
    ...
}

så kan metoder i A bruge b.getX() når som helst.
Avatar billede disky Nybegynder
24. marts 2003 - 08:56 #9
hvad er lige årsagen til alle de point du gerne vil af med ?
Avatar billede arne_v Ekspert
02. april 2003 - 21:06 #10
perle>

Har du fået løst dit problem ?
Avatar billede perle Nybegynder
08. april 2003 - 12:14 #11
Jeg vil lige afprøve ovenstående. jeg har brug for løsningn af problemet til at lave en parser der kan analysere kobling mellem objekter i en studieopgave
Avatar billede arne_v Ekspert
22. maj 2003 - 22:38 #12
perle>

Tid at lukke spørgsmålet ?
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