Ohjelmointi

Yleistymisen, erikoistumisen ja riippuvuuden tutkiminen OOP: ssa

OOP (olio-ohjelmointi) on paradigma, joka keskittyy esineisiin ja tietoihin eikä toimintoihin ja logiikkaan. Kun työskentelet OOP: n kanssa, sinun on ehdottomasti tunnistettava objektit ja niiden suhteet.

OOP: ssa ongelma hajotetaan useiksi objekteiksi ja niiden suhteeksi toisiinsa - prosessi, joka tunnetaan nimellä datamallinnus. Kohteiden välisiä olennaisia ​​suhteita ovat: assosiaatio, yleistys, erikoistuminen, aggregaatio, riippuvuus ja koostumus. Tässä artikkelissa keskustelemme riippuvuus- ja perintäsuhteista OOP: ssa C # -koodiesimerkkien avulla käsitteiden havainnollistamiseksi.

Riippuvuus

Riippuvuus on kahden tai useamman objektin välinen suhde, jossa objekti riippuu toisesta kohteesta tai objekteista sen toteuttamiseksi. Jos jokin näistä objekteista muuttuu, muihin objekteihin voi vaikuttaa. Kahden tai useamman objektin välinen riippuvuussuhde kuvataan UML: ssä katkoviivalla. Toisin sanoen, kun kahden tai useamman objektin välillä on riippuvuussuhde, objektin on tiedettävä muista objekteista, joista se riippuu.

Harkitse luokkia BlogEntry ja View. Vaikka ensimmäinen sisältää kaikki blogimerkintöihin liittyvät tiedot, jälkimmäinen koskee BlogEntry-luokalta saatujen tietojen näyttämistä käyttöliittymälle. Joten View-luokka on riippuvainen BlogEntry-luokasta, jotta sisältö (blogimerkinnät) näytetään käyttöliittymässä. Siksi View- ja BlogEntry-luokkien välillä on riippuvuussuhde. Riippuvuussuhde esitetään UML: ssä katkoviivalla.

julkisen luokan BlogEntry

    {

// BlogEntry-luokan jäsenet

    }

public class Näytä

    {

// Näytä-luokan jäsenet

    }

Yleistäminen ja erikoistuminen

Yleistäminen voidaan määritellä tekniikaksi, jolla keskeiset ominaisuudet (mukaan lukien attribuutit, ominaisuudet ja menetelmät) erotetaan kahdesta tai useammasta alaluokasta ja yhdistetään ne sitten yleistetyn perusluokan (jota kutsutaan myös superluokaksi) sisällä. Päinvastoin, erikoistuminen on päinvastainen päinvastoin - sitä käytetään edustamaan "tyypin" suhdetta luomalla alaluokkia olemassa olevista perusluokista.

Perintö määritellään luokan kyvyksi laajentaa yhtä tai useampaa luokkaa (tunnetaan myös nimellä perusluokka). Huomaa, että yleistys on vahvin luokkayhteyksien muoto, koska yleistymissuhteeseen osallistuvat luokat ovat tiukasti yhteydessä toisiinsa - suurin osa vanhempien luokan sisäisistä hienovaraisuuksista näkyy lapsiluokalle.

Perus- tai vanhempaluokkaa laajentava luokka tunnetaan myös alaluokka tai johdettu luokka. Peritty tai yleistetty luokka laajentaa tai perii perus- tai vanhemman luokan. Perinnössä lapsiluokka perii perus- tai vanhempaluokan menetelmät ja määritteet lukuun ottamatta yksityisiä. Pohjimmiltaan perusluokan yksityisiä jäseniä ei peritä, koska he kuuluvat "yksinomaan" luokkaan, johon he kuuluvat. Siksi sinun tulisi hyödyntää yleistystä vain silloin, kun sinun on edustettava luokkaa, joka on tosiasiallisesti toisen luokan erikoistuneempi muoto.

Perintö on seuraavan tyyppistä:

  • Yksittäinen
  • Useita
  • Monitasoinen
  • Hierarkkinen
  • Hybridi

Yksi perintö on yksinkertaisin perintämuoto, jossa yksi luokka laajentaa toista luokkaa. Seuraava koodinpätkä kuvaa tätä perintämuotoa - huomioi, kuinka BlogAuthor-luokka laajentaa Tekijä-luokkaa.

public class Kirjoittaja

    {

// Kirjoittaja-luokan jäsenet

    }

public class BlogAuthor: Kirjoittaja

    {

// BlogAuthor-luokan jäsenet

    }

Moniperinnössä sinulla on useita perusluokkia, joista luokka on johdettu. Huomaa, että useita perintöjä ei tueta OOP-ohjelmointikielissä, kuten Java tai C #.

Seuraava perintötyyppi luettelossamme on monitasoinen perintö. Tässä perintömuodossa sinulla on luokkia peritty toisiltaan ketjun muodostamiseksi. Seuraava koodinpätkä kuvaa tätä.

julkisen luokan henkilö

    {

// Henkilö-luokan jäsenet

    }

public class Kirjoittaja: Henkilö

    {

// Kirjoittaja-luokan jäsenet

    }

public class BlogAuthor: Kirjoittaja

    {

// BlogAuthor-luokan jäsenet

    }

Hierarkkisessa perinnössä sinulla on luokkia, jotka edustavat hierarkkista rakennetta perimisen kautta, samanlainen kuin sukupuu. Tämän tyyppisessä perinnössä sinulla on useampi kuin yksi lapsiluokka, jolla on sama perus- tai vanhempaluokka. Toisin sanoen tämä on eräänlainen perintö, jossa yhdellä tai useammalla johdetulla luokalla on yhteinen perus- tai vanhempaluokka.

Hybridi-perintö on eräänlainen perintö, jossa kaksi tai useampi perintämuoto yhdistetään yhdeksi. Pohjimmiltaan tämän tyyppinen perintö on kahden tai useamman perintämuodon yhdistelmä suljetun rakenteen muodostamiseksi. Huomaa, että hybridiperintöä ei myöskään tueta OO-ohjelmointikielillä, kuten C # tai Java.

$config[zx-auto] not found$config[zx-overlay] not found