A legtöbb osztály a badában az Object osztályból származik. Kivételek azok az osztályok, amelyek csupán statikus metódusokkal rendelkeznek.
Badában az Interfészek (osztályok, amelyek "I" prefixummal kezdődnek) olyan 'absztrakt törzs osztályok', ahol minden metódus tisztán virtuális. Például: IList, IMap, IEvent.
Annak érdekében, hogy elkerüljük az általános buktatóit a többszörös öröklődésnek, az osztályok nem származhatnak egyszerre több alaposztályból. A többszörös interfész öröklõdés megengedett. Amikor bada alaposztályból vagy interfészbõl származtatunk, csak akkor használjuk a "virtual" kulcsszót, ha valóban nyomós okunk van rá.
Ajánlott | Nem ajánlott |
public class MyForm :public Osp::Ui::Controls::Form, public Osp::Ui::IActionEventListener { InheritedClass(void); ~ InheritedClass(void); … }; |
public class MyForm :public Osp::Ui::Controls::Form, virtual public Osp::Ui::IActionEventListener { InheritedClass(void); ~ InheritedClass(void); … }; |
C++ esetében, amikor egy objektum elkészítése közben hiba lép fel az erőforrás kiosztásnál, az objektum már részben elkészült, ám a destruktora nem hívódik meg, és ez sok esetben memóriaszivárgáshoz vezethet.
Hogy elkerüljük a memóriaszivárgást, az erőforrás lefoglalás rész ki lett emelve a konstruktorból, és a Construct() metódusban kapott helyet.
A badában az objektumoknak nincsenek "tulajdonságaik". Minden metódus. Ez a teljes beágyazás. Ez azt jelenti, hogy nincsen direkt hozzáférés az adatokhoz. Mivel nem lehet direkten elérni õket, ezért nem lehet elrontani az adatokat, vagy összeomlást okozni a megsérült adatok által. Ez nagyfokú biztonságot jelent a fejlesztők számára, mert nem kell számolniuk a sérült adatokkal. Ez szintén nagyfokú biztonságot jelent a mobil készülék felhasználóinak is. Ezek az adathozzáférésbeli korlátozások meggátolják, hogy rossz szándékú szoftverek kihasználjanak bizonyos biztonsági réseket, mint például a buffer túlterhelés.
A Samsung bada C++ kivételkezelés helyett hiba-eredményeket használ. A C++ kivételkezelés túl sok futásidőt igényelne az erőforrásokban szegény készülékektől, és túl sok bonyodalommal járna.
Minden kivételt a result típuson keresztül kaphatunk el:
3 eredmény visszaadási típus áll a rendelkezésünkre:
Három formája a hibakezelésnek:
A következő négy esetben példákat láthatunk hiba propagálásra és kivételek konverziójára:
A log bejegyzések vesszőkkel tagoltak. Egy kivétel bejegyzése a logban:
Komplex objektumok megjelenítése:
A tulajdonos köteles törölni a dinamikusan lefoglalt memória tartalmát, ha arra már nincsen szükség a memória szivárgás elkerülése érdekében. Tehát: Bármi a tulajdonosa egy objektumnak, KÖTELESSÉGE törölni azt, ha már nincs rá szükség. Például:
A kizárólagos birtoklás azt jelenti, hogy a birtokolt objektumnak nem lehet több birtokosa. Két szabály van a birtoklásra:
Ha egy metódus 'N' postfixummal végződik, a hívónak KÖTELESSÉGE törölni a visszaadott példányt, miután befejezte a használatát, különben memóriaszivárgás lép fel.