composite data type
Főnév
composite data type (tsz. composite data types)
- (informatika) Az összetett (composite) adattípus (angolul: composite data type vagy compound data type) olyan adattípus, amely több más (lehet: eltérő típusú) adattípusból áll. Ezeket az adattípusokat a programozó maga is létrehozhatja, és általában több, egymáshoz logikailag kapcsolódó adatot csoportosítanak.
Egyszerű típusok (primitive types): pl. int, char, float Összetett típusok: pl. tömb, struktúra, osztály, rekord, unió, tuple, lista, stb.
Miért jó? Azért, mert a valós életben az adataink is összetettek: egy embernek lehet neve, életkora, magassága, címe stb. Ezeket nem akarjuk szétbontva, hanem egy egységben kezelni.
2. Főbb típusai és példái
a) Tömb (Array)
Azonos típusú elemekből álló, fix méretű sorozat.
Példa (C++):
int tomb[10]; // 10 elemű int tömb
b) Struktúra (struct, record)
Eltérő típusú elemeket fog össze.
Példa (C/C++):
struct Szemely { char nev[50]; int eletkor; float magassag; };
Rekord néven is ismert adatbázisokban, Pascalban.
c) Osztály (class)
Az OOP kiterjeszti a struktúra fogalmát: adatok + metódusok.
Példa (C++):
class Pont { int x, y; public: void set(int _x, int _y) { x = _x; y = _y; } };
d) Unió (union)
- Olyan adatstruktúra, amely egyidejűleg csak egy tagot tartalmazhat.
- Pl. C/C++ union
e) Tuple (n-es)
Véges, fix elemszámú, különböző típusú értékek sorozata.
Példa (Python):
t = ("abc", 42, 3.14)
f) Lista (List)
Elemei lehetnek különböző típusúak (dinamikus nyelvben), vagy csak egyfélék (statikus nyelvben).
Példa (Python):
lista = [1, "kettő", 3.14]
g) Dictionary / Map
Kulcs-érték párokból álló összetett típus.
Példa (Python):
d = {"név": "Anna", "életkor": 25}
3. Elvi és matematikai háttér
Az összetett adattípus lehet rekurzívan is összetett (pl. struktúra mezője egy másik struktúra, lista, stb.). Matematikailag a szorzat fogalmával rokon (Cartesian product): Egy Szemely = (Név, Életkor, Magasság) hármas.
4. Hogyan működik?
- Memóriában: Az összetett adattípusok több egyszerű adattípus memóriaterületét egymás mellé (vagy után, vagy címkézve) foglalják le.
- Használat: Az egyes elemek elérhetők névvel (struktúra, osztály, rekord) vagy index-szel (tömb), vagy kulccsal (map, dict).
5. Példák különböző nyelveken
C
struct Pont {
int x;
int y;
};
Pont p;
p.x = 10;
p.y = 20;
C++
struct Auto {
std::string rendszam;
int evjarat;
double ar;
};
Auto bmw = {"ABC-123", 2019, 7890000};
Python
class Auto:
def __init__(self, rendszam, evjarat, ar):
self.rendszam = rendszam
self.evjarat = evjarat
self.ar = ar
auto1 = Auto("XYZ-789", 2018, 5200000)
Java
class Auto {
String rendszam;
int evjarat;
double ar;
public Auto(String rendszam, int evjarat, double ar) {
this.rendszam = rendszam;
this.evjarat = evjarat;
this.ar = ar;
}
}
6. Felhasználási területek
- Adatmodellezés: Személyek, termékek, események, minden összetett objektum leírására.
- Adatbázisok: Sorok (rekordok) tárolása.
- Fájlformátumok: Pl. bináris fájlban rekordokat, fejléceket összetett típusokkal írunk-olvasunk.
- OOP: Az osztályok szinte mindig összetett adattípusok.
7. Miért előnyös az összetett adattípus?
- Logikus csoportosítás: Kapcsolódó adatokat egyben kezel.
- Átláthatóság: Kód olvashatóbb, hibakeresés könnyebb.
- Modularitás: Komplex adatszerkezetek építhetők.
- Újrafelhasználhatóság: Egy összetett típus többször, sok helyen felhasználható.
8. Összetett típusok és absztrakció
Az összetett adattípus az absztrakció eszköze is: nem kell tudnunk, hogy az adat belül hogyan van elrendezve, csak azt, hogy milyen mezői, tulajdonságai, vagy metódusai vannak.
9. Speciális összetett típusok
- Többszörös összetétel: Pl. lista, amely struktúrákat tartalmaz, a struktúra mezője pedig egy másik lista.
- Rekurzív típusok: Pl. fa, láncolt lista – ahol egy elem mutatója ugyanilyen típusú további elemekre mutat.
10. Belső reprezentáció
Tömb: Az elemek egybefüggő memóriaterületen, index-szel elérhetők.
Struktúra: A mezők sorrendben egymás után helyezkednek el a memóriában.
Lista: Elemei láncoltan, minden elem tartalmazza a következő címét (mutatóját).
11. Összegzés
Az összetett (composite) adattípusok elengedhetetlenek a programozásban, hiszen a valós problémák is összetettek. Lehetővé teszik, hogy egységben, logikus csoportban kezeljünk különböző típusú adatokat. Használatukkal bonyolultabb adatszerkezeteket is hatékonyan, átláthatóan modellezhetünk.
- composite data type - Szótár.net (en-hu)
- composite data type - Sztaki (en-hu)
- composite data type - Merriam–Webster
- composite data type - Cambridge
- composite data type - WordNet
- composite data type - Яндекс (en-ru)
- composite data type - Google (en-hu)
- composite data type - Wikidata
- composite data type - Wikipédia (angol)