Több azonos tulajdonságú objektum kompakt feldolgozása - Egyéb problémák -

Van 6. Válaszok ebben a témában. Az utolsó bejegyzés (2013. július 13., 14:11) a mocede-től származik.

több

mocede

Regisztrált: 2013. július 7

Szeretnék kifejleszteni egy kis programot, amely alapvetően a következőképpen viselkedik:

Mondjuk van nálam banán, dinnye, alma és eper.

Mindegyiknek ugyanazok, de sajátos jellemzői vannak: súly, cukortartalom és kalória.

Most szeretném automatikusan kiszámolni a teljes súlyt, az összes cukortartalmat és az összes kalóriát, ha van 5 banánom, 3 dinnyém és 2 almám. A gyümölcsök száma a felhasználó inputjától függ.

Először valahol meg kell határoznom a tulajdonságokat. A C ++ - ban ezt általában egyszerű funkcióként kiszerveztem egy extra fájlban, ahol csak ilyen definíciók készültek. Ez egyértelművé és könnyebben karbantarthatóvá tette a tényleges forráskódot.

Hogyan tudom ezt megvalósítani a VB-ben? Úgy gondolom, hogy a megoldás meglehetősen egyszerű, de azt hiszem, hogy egy kicsit a csövön vagyok, főleg, hogy gyakorlati példámban körülbelül 30 "gyümölcsöm" van, mindegyiknek 10 azonos, de specifikus tulajdonsága van.

Előre is köszönöm "

RodNémetországból

Regisztrált: 2010. szeptember 30

VB.NET forráskód

  1. A myObstList minden gyümölcséhez
  2. 'csinálj valamit gyümölcsökkel
  3. Következő

mocede

Regisztrált: 2013. július 7

Köszönöm a választ és a helyes szókincset!

Ismételten megismételhetem, hogy jól értettem-e az állítását:

Felmegyek a menübe "Projekt osztály hozzáadása." és hozzon létre egy új (alap) osztályt "Frucht.vb" néven.

Itt hozom létre az általános tulajdonságokat:

VB.NET forráskód

  1. Nyilvános osztály alaposztálya_gyümölcs
  2. Halvány súly egész számként
  3. Halvány cukortartalom egész számként
  4. Halvány kalória egész számként
  5. Vége osztály

Új osztályban(?) egy extra osztályfájlban(?) Most elterítettem a gyümölcsöket az Ön jellemzőivel:

VB.NET forráskód

  1. Nyilvános osztály abglKlasse_apfel
  2. Dim súly egész számként = 50
  3. Halvány cukortartalom egész számként = 100
  4. Halvány kalória egész számként = 200
  5. Vége osztály

Helyes?

Hogy értendő ez a szélhámosság alatt? Ha jól tudom, az objektumok (= embereim?!) Tipizált listáját jelenti, amelyekhez indexen keresztül férhetek hozzá.

Még nem értem teljesen, hogyan mondhatnám, hogy 3 eperrel és 4 dinnyével a programom az eper súlyának háromszorosát (valamint az összes többi tulajdonságot) és a súly négyszeresét dolgozza fel a dinnye összes többi tulajdonságával együtt.

Azt hiszem, itt problémám van a megértéssel. Össze vagyok zavarodva.: wacko: wacko: wacko:

Ezt a bejegyzést már egyszer szerkesztette, utoljára a "mocede" (2013. július 13., 12:29)

Először alaposztályra van szükséged. Ez az osztály tartalmazza az összes tulajdonságot, amelyet az összes gyümölcs megoszt.

VB.NET forráskód

  1. Nyilvános MustInherit osztályú gyümölcs
  2. Közsúly egészben
  3. Nyilvános cukortartalom egészként
  4. Közkalória egész számként
  5. Vége osztály

Ezután minden egyes gyümölcs számára létrehoz egy külön osztályt, amely örökli a gyümölcsosztály tulajdonságait és módszereit. Az új metódust az objektum létrehozásakor hívják meg. A módszerben ezután beállítottuk a gyümölcs megfelelő értékeit.

VB.NET forráskód

  1. Nyilvános osztály alma
  2. Gyümölcsöt örökít
  3. Nyilvános al új ()
  4. Súly = 50
  5. Cukor = 100
  6. Kalória = 120
  7. End Sub
  8. Vége osztály


Most készítsünk egy listát az összes gyümölcsről, és nézzük át a listát.

VB.NET forráskód

  1. 'Hozzon létre egy listát a "Gyümölcs" típusból
  2. Dim FruchtListe új listaként (Frucht)
  3. 'Adj almát a listához
  4. FruchtListe.Add (Új Apple)
  5. - Menjen végig a listán
  6. Minden jelenlegi gyümölcsért, gyümölcsként a gyümölcs listában
  7. Messagebox.Show ("A gyümölcs rendelkezik" & CurrentFruit.Calories & "Kalóriák")
  8. Következő

nafets3646

Reg ([Ee] x) Hasznos szavazatok 276 hozzászólás 2654 pozitív szavazat 276 Nem Férfi Programozási nyelvek VB.NET, C # Korábbi felhasználónevek nafets3646

VB.NET forráskód

  1. Nyilvános osztály 1. nyomtatvány
  2. Privát algomb1_Click (küldő objektumként, e mint EventArgs) kezeli az 1.gombot.
  3. Tompítsa el a hűtőszekrényemet új listaként (a Frucht-ból) 'A hűtőszekrény
  4. MyCridge.Add (New Apple) 'Almát adunk a hűtőszekrénybe
  5. MeinKridge.Add (New Banana) 'És egy banánt is
  6. - Most hozzá kell adnod egy mangót, de mivel általában nem veszed meg, nincs osztályod hozzá.
  7. - Készítsünk tehát egy gyümölcsöt a mangó dátumával
  8. MyCridge.Add (New Frucht With)
  9. Minden egyes FruchtImCridge esetében, mint a Frucht in MeinCridge 'Most átmegyünk minden egyes gyümölcsön a hűtőszekrényben, és kiadjuk az adatait
  10. MessageBox.Show (String. Format ("Leírás:; Súly:; Cukortartalom:; Kalória:", _
  11. Gyümölcs a hűtőben. Leírás, _
  12. Gyümölcs a hűtőben. Súly, _
  13. Gyümölcs a hűtőszekrényben. Cukortartalom, _
  14. Gyümölcs a hűtőben. Kalória))
  15. Következő
  16. End Sub
  17. Vége osztály
  18. Nyilvános osztály gyümölcs
  19. A köztulajdon megnevezése mint húr
  20. A köztulajdon súlya kétszeres
  21. A közvagyon cukortartalma egészben
  22. A közvagyon kalóriái egészben
  23. Osztály vége
  24. Nyilvános osztály alma
  25. Gyümölcsöt örökít
  26. Nyilvános al új ()
  27. Me. Leírás = "Apple"
  28. Me. Súly = 50
  29. Me. Cukortartalom = 100
  30. Me. Kalória = 200
  31. End Sub
  32. Vége osztály
  33. Nyilvános osztály banán
  34. Gyümölcsöt örökít
  35. Nyilvános al új ()
  36. Me. Leírás = "Banán"
  37. Me .súly = 100
  38. Me. Cukortartalom = 200
  39. Me. Kalória = 400
  40. End Sub
  41. Vége osztály

FreakJNS

Akárcsak az 5. hozzászólásban, én is ezt tenném. Néhány pont, amelyet szintén beillesztenék:

Nincs gyümölcs, mint valódi tárgy, ehet almát vagy banánt, de nem „tiszta” gyümölcs - a gyümölcs csak egy általános kifejezés a valódi tárgyakra, de nem maga a valós tárgy. A programozásnál ez azt jelenti, hogy nem hozhat létre gyümölcs típusú objektumot, csak valódi gyümölcsök hozhatók létre. A gyümölcsosztály tehát elvont, és MustInherhit jelöléssel kell ellátni.

A gyümölcsosztály konstruktorának (=> Public Sub New (.)) is lenne értelme. Ezután a súlyt, a cukortartalmat, a kalóriákat, a megjelölést stb. Át kell adni paraméterként. A betongyümölcs osztályok konstruktorától kényelmesen felhívhatja a felső osztály konstruktorát. Szerintem ez különösen fontos, ha bizonyos értékeket KELL beállítani a felsőbb osztályba - konstruktor nélkül gyorsan elfelejti az egyiket.

A cukortartalom, a kalória stb. Biztosan csak tipp, sokkal több lehet. Hasznos lehet egy extra osztály beágyazása csak a tápérték szempontjából. Ezen a ponton elgondolkodhatna azon, hogy a tápértékek listáját használja egy fix tápértékű osztály helyett. Ennek az lenne az előnye, hogy mindig hozzáadja a ténylegesen szükséges tápértékeket. Így nézhet ki az almaosztály konstruktorában: Me.Táplálkozási értékek.Add (új tápérték ("Sugar", 42,7, eUnits.Grams)).

A játékot most is folytatni lehet. Például a kenyérnek is van neve és tápértéke - de ez nem gyümölcs. De mindkettő ehető. Az ehető absztrakt osztály tehát felső osztályként szolgálhat a gyümölcsök, pékáruk stb. Az, hogy hová húzza a határt, az alkalmazásától függ. Ha csak a gyümölcsök érdeklik, nincs értelme ilyen hosszú ideig öröklési hierarchiákat létrehozni (=> zavaros)