Programmering

Utforske generalisering, spesialisering og avhengighet i OOP

OOP (objektorientert programmering) er et paradigme som er sentrert på objekter og data i stedet for handlinger og logikk. Når du jobber med OOP, er det viktig at du identifiserer gjenstandene og deres forhold.

I OOP blir et problem nedbrutt i et antall objekter og hvordan de forholder seg til hverandre - en prosess kjent som datamodellering. De vesentlige forholdene mellom objekter inkluderer: assosiasjon, generalisering, spesialisering, aggregering, avhengighet og komposisjon. I denne artikkelen vil vi diskutere avhengighet og arveforhold i OOP med kodeeksempler i C # for å illustrere begrepene.

Avhengighet

En avhengighet er et forhold mellom to eller flere objekter der et objekt er avhengig av det eller de andre objektene for implementering. Hvis et av disse objektene endres, kan det / de andre objektene påvirkes. Avhengighetsforholdet mellom to eller flere objekter er avbildet i UML ved hjelp av stiplede piler. Med andre ord, når det er et avhengighetsforhold mellom to eller flere objekter, må objektet vite om det eller de andre objektene det er avhengig av.

Vurder klassene BlogEntry og View. Mens førstnevnte inneholder all relatert informasjon relatert til blogginnleggene, er sistnevnte opptatt av å vise dataene mottatt fra BlogEntry-klassen på brukergrensesnittet. Så Vis-klassen er avhengig av BlogEntry-klassen for å vise innhold (blogginnlegg) i brukergrensesnittet. Derfor eksisterer det et avhengighetsforhold mellom visning og BlogEntry-klassene. Et avhengighetsforhold er representert i UML ved hjelp av en stiplet pil.

offentlig klasse BlogEntry

    {

// Medlemmer av BlogEntry-klassen

    }

offentlig klasse Visning

    {

// Medlemmer av Vis-klassen

    }

Generalisering og spesialisering

Generalisering kan defineres som teknikken for å trekke ut de essensielle egenskapene (disse inkluderer attributter, egenskaper og metoder) fra to eller flere underklasser og deretter kombinere dem i en generalisert basisklasse (også kalt en superklasse). Tvert imot, spesialisering er det motsatte av generalisering - den brukes til å representere "type-of" -forhold ved å lage underklasser fra eksisterende baseklasser.

Arv er definert som evnen til en klasse å utvide en eller flere klasser (også kjent som baseklasser). Vær oppmerksom på at generalisering er den sterkeste formen for klasseforhold, ettersom klassene som deltar i et generaliseringsforhold er tett sammenkoblet med hverandre - de fleste av foreldreklassens interne forviklinger er synlige for barneklassen.

Klassen som utvider basen eller foreldreklassen er også kjent som barneklassen eller den avledede klassen. Den arvede eller generaliserte klassen utvider eller arver basen eller foreldreklassen. I arv arver en barneklasse metodene og attributtene til basen eller foreldreklassen bortsett fra de som er private. I det vesentlige arves ikke de private medlemmene av baseklassen, ettersom de tilhører "utelukkende" til den klassen de er en del av. Derfor bør du bare dra nytte av generalisering når du trenger å representere en klasse som faktisk er en mer spesialisert form for en annen klasse.

Arv er av følgende typer:

  • Enkelt
  • Flere
  • Flernivå
  • Hierarkisk
  • Hybrid

Enkel arv er den enkleste formen for arv der en klasse utvider en annen klasse. Følgende kodebit illustrerer denne formen for arv - legg merke til hvordan BlogAuthor-klassen utvider forfatterklassen.

offentlig klasse Forfatter

    {

// Medlemmer av forfatterklassen

    }

public class BlogAuthor: Author

    {

// Medlemmer av BlogAuthor-klassen

    }

I flere arv har du flere baseklasser som en klasse kommer fra. Merk at flere arv ikke støttes i OOP-programmeringsspråk som Java eller C #.

Den neste arven på listen vår er arv på flere nivåer. I denne arvformen har du klasser arvet fra hverandre for å danne en kjede. Følgende kodebit illustrerer dette.

offentlig klasse Person

    {

// Medlemmer av Person-klassen

    }

offentlig klasse Forfatter: Person

    {

// Medlemmer av forfatterklassen

    }

public class BlogAuthor: Author

    {

// Medlemmer av BlogAuthor-klassen

    }

I hierarkisk arv har du klasser som representerer en hierarkisk struktur gjennom arv, som ligner på et slektstre. I denne typen arv har du mer enn én barneklasse som har samme base eller foreldreklasse. Dette er med andre ord en type arv der en eller flere avledede klasser har en felles base eller foreldreklasse.

Hybrid arv er en type arv der to eller flere former for arv kombineres til en. I hovedsak er denne arven en kombinasjon av to eller flere former for arv for å danne en lukket struktur. Merk at hybrid arv heller ikke støttes i OO programmeringsspråk som C # eller Java.

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