Kötési tulajdonságok (informatika)
A kötési tulajdonságok az informatikában egy konkurens programtervezési minta, ami azt jelenti, hogy több megfigyelőt kombinálnak ahhoz, hogy biztosítsák különböző objektumok tulajdonságainak szinkronizálását, vagy koordinálását. Ezt a technikát először Victor Porton írta le.[1][2]
Összehasonlítás az aspektusorientált programozással
[szerkesztés]Az aspektusorientált programozás kölcsönös tulajdonságainak alternatívájaként javasoltak a kötési tulajdonságok. A LibPropC++ C++ könyvtár tartalmazza.[3]
A LibPropC++ gyengeségei a kötési tulajdonságokkal:
- Használata nem átlátszó, mivel azt igényli, hogy a kapcsolt tulajdonságokat közönséges tulajdonságokként kell deklarálni, és hozzáférési metódusokat kell biztosítani hozzájuk.
- A kötési tulajdonságok nem helyettesítik a metódushívásokat.
- Nincs együttműködési naplózás.[3]
Megvalósítása
[szerkesztés]Kétféle kötési tulajdonsága van, az egyirányú és a kétirányú. Egyirányút csak akkor szabad használni, ha az egyik tulajdonság csak olvasható, egyébként a kétirányút kell.[2][3]
A végtelen ciklusokat a jel blokkolásával, vagy az új és a régi értékek összehasonlításával, esetleg a fölösleges értékadások kiiktatásával lehet elkerülni.[2][3]
Különböző típusok között típuskonverzióval lehet kötési tulajdonságokat létrehozni. Ha transzformációkra van szükség, akkor a transzformációkat típuskonverzióként kell kezelni.[2][3]
Eredménykontextus
[szerkesztés]A tulajdonságok automatikusan szinkronizálódnak. A könyvtári hívások között az EqualityConstraints invariánsban megadott feltételeknek kell megfelelniük. A változások követése erőforrásokat igényel.
Példa kódok
[szerkesztés]Egyirányú kötés:
bind_multiple_one_way(src_obj, src_prop, dst_objs[], dst_props[])
{
for (i, j) in (dst_objs, dst_props)
{
bind_properties_one_way(src_obj, src_prop, i, j);
}
}
Kétirányú kötés (C++-ban):
// In this pseudo-code are not taken into the account initial values assignments
bind_two_way(prop1, prop2)
{
bind(prop1, prop2);
bind(prop2, prop1);
}
A kötés megvalósítása:
on_property_change(src_prop, dst_prop)
{
block_signal(src_obj, on_property_change);
dst_prop := src_prop;
unblock_signal(src_obj, on_property_change);
}
Jegyzetek
[szerkesztés]- ↑ Binding Properties. Cunningham & Cunningham . Cunningham & Cunningham. (Hozzáférés: 2015. február 4.)
- ↑ a b c d e Porton, V.: Binding together Properties of Objects: Extreme Code Software. Ex-code . Ex-code. [2017. június 20-i dátummal az eredetiből archiválva]. (Hozzáférés: 2008. szeptember 1.)
- ↑ a b c d e f g Evermann, J., The Association Construct in Conceptual Modelling - An Analysis Using the Bunge Ontological Model, Wellington, New Zealand: School of Information Management, Victoria University
Fordítás
[szerkesztés]Ez a szócikk részben vagy egészben a Binding properties pattern című angol Wikipédia-szócikk fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel. Ez a jelzés csupán a megfogalmazás eredetét és a szerzői jogokat jelzi, nem szolgál a cikkben szereplő információk forrásmegjelöléseként.