Avatar billede louise&patricia Nybegynder
19. december 2002 - 11:39 Der er 10 kommentarer og
2 løsninger

Tildel et navn til et objekt...

Vi har i en klasse der hedder "UserInterface.java", et indtastet navn gemt i en variabel samNavn. I en anden klasse "Collection.java", har vi en constructor der skal lave et objekt med det gemte navn fra variablen samNavn.

Hvordan laver vi denne constructor, så den opretter objekter med navnet fra samNavn??

Dette er koden fra "UserInterface.java" der gemmer navnet i samNavn:
-----------------------------------------------------------
BufferedReader indtast = new BufferedReader(new InputStreamReader(System.in));
  System.out.print("Indtast navn paa samling: ");
  String samNavn = indtast.readLine();
-----------------------------------------------------------

Dette er den kode vi har fra Collection.java:
-----------------------------------------------------------
import java.util.*;

class Collection {
  String ArrayList;
  String navn;

  Collection(){
      navn = samNavn;
      navn = new ArrayList();
  }   
}
-----------------------------------------------------------
Avatar billede korup Nybegynder
19. december 2002 - 11:49 #1
Kan du ikke overfører samNavn som en parameter i dit kald til Collecion()

Colleciont(String samNavn)
{
  navn = samNavn;
}
/korup
Avatar billede arne_v Ekspert
19. december 2002 - 11:53 #2
Grundliggende kan I:

1)  Have samNavn som argument i constructoren (som Korup foreslår)

2)  Have en constructor uden argument og lave en setSamNavn
    i Collection metode som kan kaldes efter at objektet er constructet.

3)  Have en constructor uden argument som selv henter samNavn fra
    jeres UserInterfaceKlasse (public member eller via en getSamNavn).

#3 er ikke særlig køn. Så jeg vil anbefale #1 eller #2.
Avatar billede arne_v Ekspert
19. december 2002 - 11:54 #3
PS: Jeg vil forslå at I kalder den klasse noget andet end
    Collection (det navn kan skabe forvirring, da der er en
    java.util.Collection !).
Avatar billede carstenknudsen Nybegynder
19. december 2002 - 11:56 #4
Her er et eksempel på hvordan I kan lave klassen.
I bør dog vælge et andet navn da der allerede
er noget der hedder Collection endda i java.util.
import java.util.*;
public class Collection {
private List list;
private String navn;
public Collection(String navn) {
this.navn = navn;
list = new ArrayList();
}
}
Avatar billede louise&patricia Nybegynder
19. december 2002 - 12:54 #5
hvad betyder this.navn = navn; helt præcist??
Avatar billede carstenknudsen Nybegynder
19. december 2002 - 13:02 #6
this.navn henviser til variablen i klassen, dvs den der er erklæret ved
private String navn; mens navn refererer til den lokale parameter
erklæret ved public Collection(String navn).
Avatar billede louise&patricia Nybegynder
19. december 2002 - 13:19 #7
..og hvorfår opretter du så en private List list?
Avatar billede carstenknudsen Nybegynder
19. december 2002 - 13:22 #8
Det er for at få en pæn klasse hvor de instans varible
der erklæres (list og navn) ikke umiddelbart kan ses
(og ændres) udefra. Det er det der kaldes for
"information hiding" (det er også "data encapsulation"
men det er irrelevant her). Sådan bør man gøre i
så godt som alle tilfælde når man opretter
instans variable i en klasse.
Avatar billede arne_v Ekspert
19. december 2002 - 13:24 #9
Han formodede vel at det var det I ville og ikke:
  String ArrayList;
Avatar billede arne_v Ekspert
19. december 2002 - 13:27 #10
Mine løsning #1 og #2 vil så se ud som:

import java.util.*;

public class OurCollection {
    private List list;
    private String navn;
    public OurCollection(String navn) {
        this.navn = navn;
        list = new ArrayList();
    }
}

og:

import java.util.*;

public class OurCollection {
    private List list;
    private String navn;
    public OurCollection() {
        navn = "";
        list = new ArrayList();
    }
    public void setNavn(String navn) {
        this.navn = navn;
    }
}
Avatar billede arne_v Ekspert
19. december 2002 - 13:32 #11
carsten> Det er ganske rigtigt pænt at have de members som private,
men det er vel mere væsentligt med data typen !!
Avatar billede carstenknudsen Nybegynder
19. december 2002 - 13:41 #12
Ja, men jeg troede ærlig talt at det var en
skrive fejl.
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