Adatbázis-tervezés, Objektumorientált programozás és tervezés során (lásd: objektumorientált programszerkezet), has-a (has_a vagy has a) (magyarul „van neki egy …”) egy kompozíció kapcsolat, ahol az egyik objektum (rész/alkotó/tag objektum) „hozzá tartozik” (része vagy tagja) egy másik objektumhoz (az összetett objektumhoz), és a birtoklás szabályainak megfelelően viselkedik. Magyarul egy objektumban előforduló has-a kapcsolat az lényegében annak egy mezője. Több has-a kapcsolat együttesen birtokló hierarchiát alkot.
Gyakran összehasonlításra kerül az is-a (is_a vagy is a) kapcsolattal, mely osztályozási hierarchiát alkot (altípusok).
A döntés, hogy egy objektum és az alárendeltje közötti kapcsolat is-a, vagy has-a legyen-e, nem mindig egyértelmű. Ez szükségessé tette bizonyos metalingvisztikai kifejezések megfogalmazását. A C++ STL-ben található container-ek jó példaként szolgálnak a has-a kapcsolatra.
Kapcsolatok összegezve:
- Hiperonímia-hiponímia (őstípus-altípus) típusok (osztályok) közötti kapcsolatok, melyek osztályozási hierarchiát definiálnak,
- az Öröklődési kapcsolatban: egy hiponímia (altípus, alosztály) egy un. „olyan, mint” kapcsolattal bír az ő hiperonímiájával (őstípus, ősosztály);
- Holonímia-meronímia (egész - rész, egyed - alkotó, tartalmazó - tag) birtokló hierarchiát alkotnak típusok között, ahol
- az aggregáció (azaz tulajdonos nélkül) kapcsolat:
- a holonímia (egész) has-a kapcsolatban áll a meronímával (rész),
- a kompozíció (azaz tulajdonossal) kapcsolat:
- a meronímia (alkotó) „a része” kapcsolatot alkot a holonímiájával (egyed)
- a behatároló[1] kapcsolat:
- a meronímia (tag) a tagja kapcsolatban áll a holonímiájával (tartalmazó);
- concept-object (típus - token) típusok (osztályok) és objektumok (példányok) közötti kapcsolat, ahol
- egy token (objektum) a példánya kapcsolatban áll az ő típusával (osztály).
- ↑ See also Containment (computer programming).