Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Java: Objektien (luokkien) muokkaus keskenään

tunnus000 [20.02.2018 22:25:39]

#

Kuinka saadaan luokat lukemaan ja muuttamaan toistensa muuttujia. Tarkoitan tässä siis sellaisia luokkia, jotka on luotu samalle tasolle pääohjelmassa (omat tiedostonsa jokaisesta) mutta siis kommunikoisivat keskenään suoraan. Onko se edes mahdollista? Esimerkiksi luokat A,B, ja C manipuloisivat luokan D muuttujia, tai sitten voisivat manipuloida toistensa muuttujia ristiin mielin määrin.

Karkea esimerkki tässä:

class A {
   A() {
      manipulate_D_variables();
   }
   manipulate_D_variables() {
      // Don't know how to do it, and if it is possible
   }
}

class B {
   B() { manipulate_D_variables();
   }
   manipulate_D_variables() {
      // Don't know how to do it
   }
}

class C
   C() {
      manipulate_D_variables();
   }
   manipulate_D_variables() {
      // Don't know how to do it
   }
}

class D {
   public variable1; private variable2;
   D() {
   }
   setVariable2(in a) {
      variable2=a;
   }
}

Grez [21.02.2018 09:28:08]

#

Ei tuossa teknisesti ole mitään estettä, annat vaan kullekin objektille viittauksen siihen toiseen objektiin, jonka muuttujia sen täytyy päästä muokkaamaan. Tai jos kyseessä on luokan muuttujat (static) niin sittenhän niitä voi käpistellä suoraan mistä vaan jos ovat julkisia.

Kokonaan toinen juttu sitten tietenkin on, että miksi ne edes ovat erillisiä luokkia, jos ne käpistelevät toisiaan ristiin suoraan.

The Alchemist [21.02.2018 17:16:23]

#

Ristiin rastiin käpistely kuulostaa pahasti spagettikoodilta. Vaikka se onkin mahdollista, niin koodissa on jotain vikaa.

Metabolix [21.02.2018 17:30:54]

#

Yksinkertaista:

// staattinen muuttuja:
D.value = 1;

// olion muuttuja:
D d = new D();
d.value = 1;
d.setValue(2);

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta