Tömb és az objektum összehasonlítása?
Laikusan:
-Tömb:
Legtöbbször csak egy fajta adatot tárol, de abból többet (pl. számokat, betűket, szavakat stb.), és van egy fix mérete (listának nincs), ez nem bővíthető, és ha kitörlünk valamit, akkor az utána lévő nem jön a helyére, üres hely ottmarad.
-Objektum:
Ez is adattárolásra használt valami, de sokkal komplexebb, ebben már több fajta adatot is lehet tárolni egyszerre (ha most csak így vesszük), pl. ha egy tanulót akarok benne tárolni, annak van neve, tantárgyai (itt több jegy tantárgyanként), jegyátlaga, ilyenek, egy objektumon (osztályon) belül lehet tárolni. Elég jó egy dolog. Lehet benne metódusokat is csinálni...
/Programozás tanárom mondott olyant, hogy van olyan tömb, ami több fajta adatot is tárolhat, de ezzel én még nem találkoztam./
/Programozás tanárom mondott olyant, hogy van olyan tömb, ami több fajta adatot is tárolhat, de ezzel én még nem találkoztam./
Struktúrára gondolhatott
Struktúra esetén maga a struktúra a típus, és akkor minden elem csak ilyen struktúra lehet. Esetleg olyat lehet még, hogy általános pointereket tárol, ami többféle típusú adatra mutathat, de mondjuk ebbe is bele lehet kötni, mert az elem akkor is mind pointer.
Fentebb jól írták, ez csak egy másik megközelítés:
- A tömb azonos típusú elemek rendezett csoportja. Ezek a memóriában folytonosan, sorban helyezkednek el. Csak tárolásra szolgál, a rajta végzendő műveletek nem kapcsolódnak szorosan magához a tömbhöz.
- Az objektumhoz tetszőleges adatok tartozhatnak, akár több tömb is. Az objektum (közvetlen) adatai is egy adott memóriacímtől folytonosan vannak tárolva, de egymástól kb. független adatok is lehetnek (mint a struktúránál). Ezekhez az adatokhoz műveleteket rendelhetünk, ami az objektum sajátja.
Hasonló kérdés, hogy mi a különbség a tömb és a struktúra között. Ha azt érted, akkor ez már tisztább lesz.
"mixelt típusu tömb"
Jogos, de azok inkább már tömbként viselkedő konténer objektumok, mint pl. a Pythonban a list. A háttérben ezek akár dinamikus pointer listák is lehetnek, nem klasszikus "memória-tömbök".
Ilyet lehet, csak kérdés, hogy az is tömbnek számít-e, ezt nem tudom.
A klasszikus tömb elemeit elvileg egységesen kellene tudni kezelni, tehát csak az index változtatásával bármely elemre működnie kell tudni egy műveletnek, és egy egyszerű szorzással és összedással kell tudni címezni bármely tetszőleges elemét. (elem cím = tömb kezdő cím + elemméret * index.)
Szóval nem tudom, a fentebb említett tanár mire gondolhatott. :(
Az assembly-s is tömb. Mert az assembler egymás után foglalja le az elemeket. És az általad említett módon lehet címezni. Vagyis "indexelni".
Én arra is gondoltam hogy C#-ba van egy olyan hogy var. Ez egy multifunkciós tipus. És lehet benne bármit tárolni. Dinamikusan kap típust. Ezzel is meg lehet csinálni. De akkor var "típusu" lesz a tömb. De ha így vesszük akkor a java-ba és C#-ba lévő object-tel is meg lehet csinálni. De akkor object típusu lesz az egész tömb. Ezzel én is kimerültem az ötletekből. De szerintem a tanár a javascript-es tömb nevezetű izére célzott. Legalábbis én azért gondolom ezt mert nekem is így tanították.
Az assembly példa szerinti tömb ebben az esetben egységesen számokat tárol, tekintve hogy a natív kódban csak értelmezés kérdése, hogy az elemek mit reprezentálnak. Vagyis bájt, szó, stb. hosszúságú bináris számok tömbje, amik egyébként tetszőlegesen értelmezhetők lebegőpontos számként, karakterként, stb. Natív kódban nincsenek típusok, a program futása dönti el, hogy pl. egy tömb elemével az FPU fog-e elvégezni egy műveletet, vagy int-ként sima bináris művelet lesz. (A magasabb szintű nyelvekben megadott típus kezelését is a fordító fogja ilyen módon megoldani.)
A tömb objektumok (Java Array, stb.) pedig var elemtípus esetén szerintem pointer tömbök, és további objektumokra mutatnak.
De nem vitázni akarok, az is lehet, hogy én lövök mellé. :)
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!