immutable object
Megjelenés
Főnév
immutable object (tsz. immutable objects)
- (informatika) Egy immutable object (megváltoztathatatlan objektum) olyan objektum, amelynek állapota létrehozás után többé nem módosítható. Ez a fogalom kulcsfontosságú a funkcionális programozásban, többszálú programozásban, valamint a hibamentes kód írásában.
🧠 Mi az az immutábilis objektum?
Egy objektum akkor immutábilis, ha az összes mezője konstans vagy csak olvasható, és nincs mód a belső állapot megváltoztatására.
📌 Példák különböző nyelveken
C++
struct Point {
const int x;
const int y;
Point(int x, int y) : x(x), y(y) {}
};
- Itt a
xésymezőkconst, tehát nem módosíthatók a konstruktor után. - Ez egy immutable value object.
Python
point = (3, 4) # tuple
- A
tupletípusa immutábilis – nem lehet elemeit módosítani.
s = "hello"
s[0] = "H" # ❌ TypeError: 'str' object does not support item assignment
- A
str(karakterlánc) is immutábilis típus.
Java
final class Point {
private final int x;
private final int y;
public Point(int x, int y) {
this.x = x;
this.y = y;
}
public int getX() { return x; }
public int getY() { return y; }
}
- Minden mező
final, és nincs setter – ez egy klasszikus immutable osztály.
✅ Előnyök
| Előny | Leírás |
|---|---|
| Biztonságos párhuzamosítás | Többszálú környezetben nem okoz adatversenyt. |
| Egyszerű hibakeresés | Állapot nem változik, kevesebb mellékhatás. |
| Referenciák megosztása biztonságos | Nem okoz gondot, ha többen ugyanarra az objektumra hivatkoznak. |
⚠️ Hátrányok
| Hátrány | Leírás |
|---|---|
| Több memóriahasználat | Minden “változtatás” új objektumot eredményez. |
| Több példány | Módosítás helyett új példány kell. |
| Nehézkes mutáció igény esetén | Ha mégis kellene változtatni, workaround kell (pl. másolat, builder minta). |
🔄 Módosítás immutábilis objektum esetén
Mivel nem lehet módosítani, ezért új példányt kell létrehozni:
point = (3, 4)
new_point = (point[0], point[1] + 1) # új tuple, nem a régit módosítjuk
Vagy C++-ban:
Point p(3, 4);
// nincs mód p.x = 5-re, csak új Point példány készíthető
🧩 Minták, ahol gyakori
- Value Object (DDD – Domain-Driven Design)
- Functional Programming
- Concurrency-safe Systems
- String interning / caching
🔁 C++-os megközelítés: const mindenhol
class Config {
const int port;
public:
Config(int p) : port(p) {}
int getPort() const { return port; }
};
constadattagok- csak olvasó függvények (
constmetódusok) - nincs setter
🧭 Összegzés
| Tulajdonság | Érték |
|---|---|
| Definíció | Objektum, amely nem módosítható |
| Példák | std::string (C++ valójában mutálható), tuple (Python), String (Java) |
| Cél | Stabilitás, biztonság, kiszámíthatóság |
| Használat | Többszálúság, értékobjektumok, funkcionális kód |
- immutable object - Szótár.net (en-hu)
- immutable object - Sztaki (en-hu)
- immutable object - Merriam–Webster
- immutable object - Cambridge
- immutable object - WordNet
- immutable object - Яндекс (en-ru)
- immutable object - Google (en-hu)
- immutable object - Wikidata
- immutable object - Wikipédia (angol)