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.

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
- A myObstList minden gyümölcséhez
- 'csinálj valamit gyümölcsökkel
- 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
- Nyilvános osztály alaposztálya_gyümölcs
- Halvány súly egész számként
- Halvány cukortartalom egész számként
- Halvány kalória egész számként
- 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
- Nyilvános osztály abglKlasse_apfel
- Dim súly egész számként = 50
- Halvány cukortartalom egész számként = 100
- Halvány kalória egész számként = 200
- 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
- Nyilvános MustInherit osztályú gyümölcs
- Közsúly egészben
- Nyilvános cukortartalom egészként
- Közkalória egész számként
- 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
- Nyilvános osztály alma
- Gyümölcsöt örökít
- Nyilvános al új ()
- Súly = 50
- Cukor = 100
- Kalória = 120
- End Sub
- 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
- 'Hozzon létre egy listát a "Gyümölcs" típusból
- Dim FruchtListe új listaként (Frucht)
- 'Adj almát a listához
- FruchtListe.Add (Új Apple)
- - Menjen végig a listán
- Minden jelenlegi gyümölcsért, gyümölcsként a gyümölcs listában
- Messagebox.Show ("A gyümölcs rendelkezik" & CurrentFruit.Calories & "Kalóriák")
- 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
- Nyilvános osztály 1. nyomtatvány
- Privát algomb1_Click (küldő objektumként, e mint EventArgs) kezeli az 1.gombot.
- Tompítsa el a hűtőszekrényemet új listaként (a Frucht-ból) 'A hűtőszekrény
- MyCridge.Add (New Apple) 'Almát adunk a hűtőszekrénybe
- MeinKridge.Add (New Banana) 'És egy banánt is
- - Most hozzá kell adnod egy mangót, de mivel általában nem veszed meg, nincs osztályod hozzá.
- - Készítsünk tehát egy gyümölcsöt a mangó dátumával
- MyCridge.Add (New Frucht With)
- 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
- MessageBox.Show (String. Format ("Leírás:; Súly:; Cukortartalom:; Kalória:", _
- Gyümölcs a hűtőben. Leírás, _
- Gyümölcs a hűtőben. Súly, _
- Gyümölcs a hűtőszekrényben. Cukortartalom, _
- Gyümölcs a hűtőben. Kalória))
- Következő
- End Sub
- Vége osztály
- Nyilvános osztály gyümölcs
- A köztulajdon megnevezése mint húr
- A köztulajdon súlya kétszeres
- A közvagyon cukortartalma egészben
- A közvagyon kalóriái egészben
- Osztály vége
- Nyilvános osztály alma
- Gyümölcsöt örökít
- Nyilvános al új ()
- Me. Leírás = "Apple"
- Me. Súly = 50
- Me. Cukortartalom = 100
- Me. Kalória = 200
- End Sub
- Vége osztály
- Nyilvános osztály banán
- Gyümölcsöt örökít
- Nyilvános al új ()
- Me. Leírás = "Banán"
- Me .súly = 100
- Me. Cukortartalom = 200
- Me. Kalória = 400
- End Sub
- 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)