18. februar 2005 - 01:44 Der er 8 kommentarer og
2 løsninger

OO Designproblem

ja, nu ville jeg ønske jeg kunne tegne for jer...

Mit problem er således at jeg i en Frame vil oprette characterer, ved indtastning af simple attributterder som navn, race osv. Derudover vil jeg give hver character muligheden for at have flere våben og rustninger tilknyttet. Igennem en GUI, kontrol, samt DataList klasse,  kalder jeg således en characterList klasse, der opretter mine characterer ved

arr.add(new character(String name, int hitpoints, int pp, ArrayList weapon, ArrayList armor, int db))

(Datatyperne er kun med her for overskuelighedens skyld)

Problemet er at for at kunne oprette denne character er jeg vel nød til at oprette de to ArrayList weapon og armor først, hvilket jeg ikke er interesseret i, da jeg gerne vil vide characterens index før jeg opretter de to arrays, da jeg ønsker at give dem alle samme index (for min agen nemheds skyld, når jeg senere skal kalde dem)

Desuden... er dette design holdbart?? altså at en dataList Klasse instantierer en characterList Klasse med Characterer og disse characterer instantierer hver især deres egne to ArrayListklasser med weapon og armor.

Eller bør jeg bare have en DataList Klasse der instantierer alle tre ArrayList Klasser på én gang, og vende tilbage til forummet her, når jeg får problemet med hvordan jeg laver referencer fra hver character til characterens egne våben or brynjer?

Jeg uddyber gerne hvis tingene står lidt rodet

På forhånd tak
18. februar 2005 - 01:56 #1
Måske kan dette give lidt overblik:

DataList Klasse    CharacterList  Klasse
  |-------|      |-------|
  |      |      |      |
  |      |-------|      |
  |      |      |      |
  |_______|      |_______|            ArmorList Klasse    Armor Klasse
                      |                    |------|        |------|
                      |                    |      |        |      |
                      |                    |      |---------|      |
                  Character                |      |        |      |
                  |-------|      |---------|______|        |______|
                  |      |      |       
                  |      |------|      WeaponList Lasse    Weapon Klasse
                  |      |      |        |------|        |------|
                  |      |      |        |      |        |      |
                  |_______|      |_________|      |--------|      |
                                          |      |        |      |
                                          |______|        |______|
18. februar 2005 - 01:58 #2
Nå ikke....

Det så ellers flot ud herhjemme, før det blev sendt.
Avatar billede kalp Novice
18. februar 2005 - 08:05 #3
kan du ikke bare sende referencen null med når til din weapon og amor parametre?
Avatar billede kalp Novice
18. februar 2005 - 08:05 #4
hvis ikke så skal du vel lave en konstruktør mere som ikke har de 2 parametre med
Avatar billede arne_v Ekspert
18. februar 2005 - 08:34 #5
Jeg tror at der er noget helt galt med din objekt model.

Hvis en karakter kun kave en af hver type genstand:

Character--(1:1)--Armor
Character--(1:1)--Weapon

public class Armor {
...
}

public class Weapon {
...
}

public class Character {
  private Armor armor;
  private Weapon weapon;
  ...
  private Armor getArmor() {
      return armor;
  }
  private Weapon getWeapon() {
      return weapon;
  }
  private void setArmor(Armor armor) {
      this.armor = armor;
  }
  private void setWaepon(Armor weapon) {
      this.weapon = weapon;
  }
}
Avatar billede arne_v Ekspert
18. februar 2005 - 08:39 #6
Hvis en karakter kun kave flere af hver type genstand:

Character--(1:*)--Armor
Character--(1:*)--Weapon

public class Armor {
...
}

public class Weapon {
...
}

public class Character {
  private ArrayList armor;
  private ArrayList weapon;
  ...
  private Armor getArmor(int ix) {
      return (Armor)armor.get(ix);
  }
  private Weapon getWeapon(int ix) {
      return (Weapon)weapon.get(ix);
  }
  private int noArmor() {
      return armor.size();
  }
  private int noWeapon() {
      return weapon.size();
  }
  private void addArmor(Armor armor) {
      this.armor.add(armor);
  }
  private void setWaepon(Armor weapon) {
      this.weapon.add(weapon);
  }
}
Avatar billede arne_v Ekspert
18. februar 2005 - 08:40 #7
Hov - alle metoderne skal naturligvis være public !
18. februar 2005 - 19:58 #8
hej med jer...

I kan svare begge to, så i kan få nogle point.

Tak for hjælpen
Avatar billede kalp Novice
18. februar 2005 - 19:59 #9
Selv tak;)
Avatar billede arne_v Ekspert
18. februar 2005 - 20:02 #10
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