150 likes | 351 Views
Objektum orientált programozás. Az objektumok és az osztályok – példányosodás Nagy Szilvia. Objektum összefoglalása.
E N D
Objektum orientált programozás Az objektumok és az osztályok – példányosodás Nagy Szilvia
Objektum összefoglalása Az objektum olyan modellje egy dolognak, amely a számára kívülről érkező üzenetekre reagálva valamiképpen viselkedik, van egy kívülről nem látható statikus struktúrája, amely magában foglalja az attribútumokat, melyek az objektum állapotát hivatottak leírni. Egy objektum állapota a struktúrát adott pillanatban kitöltő értékek halmaza. (behavior, structure, state)
Osztályok és példányok Bizonyos objektumok viselkedése és struktúrája megegyezhet, csak állapotuk különböző: az ilyen objektumok egy közös minta szerint készülnek. Ez a közös minta az osztály (class). Az osztály avagy objektumosztály azonos viselkedésű és struktúrájú objektumok forrása – az objektum pedig a viselkedését meghatározó osztály egy példánya (instance). Minden objektum egyedi, létező dolog; megkülönböztethetőek, függetlenül az aktuális állapotuktól.
Osztályok és példányok Minden objektum ismeri a saját osztályát. Rajzi jelölés (OMT-módszertan szerint): macska (macska) Brewster-szög (macska) Kiskövércica (macska) Háziállat (macska) Hofi
Osztályok és példányok Az osztály elemeinek attribútumai is jelölhetők: név: text fajta: text kor: integer szín: int v.text macska (macska) Brewster-szög fajtátlan 4 fekete (macska) Hofi perzsa 3 fehér
Osztályok és példányok Az attribútumokon kívül a végrehajtható metódusok is feltüntethetők, sőt kezdőértékek, metódusparaméterek is: név: text fajta: text kor: integer szín: integer macska név: text fajta: text =„fajtátlan” gazda: text otthon: boolean =1 macska csavargás gazdacsere csavargás(otthon):boolean gazdacsere(paraméterlista):eredmény
Osztályok és példányok Egy objektum a többinek csak a metódusait mutatja, az attribútumait és állapotait nem információ elrejtése. Az, hogy maga az objektum mennyi mindent lát a külvilágból, meghatározó szerepű. Célszerű egy-egy metódusba minél kevesebb, a környezettől függő adatot beépíteni, azaz az objektum és a környezete közötti csatolást gyengíteni.
Osztályok és példányok Demeter-törvény: akkor leggyengébb a csatolás az objektum és a környezete között, ha csak • a metódus paramétereire és eredményeire • a metódust tartalmazó osztály attribútumaira • a program globális változóira • a metódus lokális változóira hivatkozik.
Objektumok típusai Típus: egy objektumhalmaz viselkedését specifikálja, definiálja az objektumok által értelmezhető üzeneteket és az operációk szemantikáját. Osztály: a típus által meghatározott viselkedést implementálja, tartalmazza az implementáció részleteit. Egy objektumtípust többféle objektumosztály is leírhat. Különböző objektumtípusok lehetnek kompatibilisek egymással.
Objektumok típusai Ha egy T1 típus kompatibilis egy T2 típussal, akkor bárhol, ahol T2 típus alkalmazása megengedett, ott alkalmazható T1 típus is. minden T2 típus által megértett üzenetet T1 is megérti. T2 típus a T1-nek szupertípusa, T1 viszont T2 szubtípusa. rövidszőrű macska házimacska hosszúszőrű macska T2 típus T1 típus
Objektumok típusai szupertípus sziámi rövidszőrű korat brit macska man-szigeti perzsa hosszúszőrű angóra szubtípus mosómedve
Objektumok típusai A kompatibilitás fontos szerepet játszik az öröklődésnél. Lehet, hogy egy bizonyos szempontból kompatibilis egy típus egy másikkal, de új üzenetet bevezetve nem lesz az