Programmering

Udforskning af generalisering, specialisering og afhængighed i OOP

OOP (objektorienteret programmering) er et paradigme, der er centreret om objekter og data snarere end handlinger og logik. Når du arbejder med OOP, er det bydende nødvendigt, at du identificerer objekterne og deres forhold.

I OOP nedbrydes et problem i et antal objekter, og hvordan de relaterer til hinanden - en proces kendt som datamodellering. De væsentlige relationer mellem objekter inkluderer: tilknytning, generalisering, specialisering, sammenlægning, afhængighed og sammensætning. I denne artikel vil vi diskutere afhængighed og arveforhold i OOP med kodeeksempler i C # for at illustrere begreberne.

Afhængighed

En afhængighed er et forhold mellem to eller flere objekter, hvor et objekt afhænger af det eller de andre objekter for dets implementering. Hvis et af disse objekter ændres, kan det / de andre objekt påvirkes. Afhængighedsforholdet mellem to eller flere objekter er afbildet i UML ved hjælp af stiplede pile. Med andre ord, når der er et afhængighedsforhold mellem to eller flere objekter, skal objektet vide om det eller de andre objekter, som det afhænger af.

Overvej klasser BlogEntry og View. Mens førstnævnte indeholder alle relaterede oplysninger relateret til blogindgange, er sidstnævnte beskæftiget med at vise de data, der modtages fra BlogEntry-klassen, på brugergrænsefladen. Så klassen Vis er afhængig af klassen BlogEntry for at vise indhold (blogindgange) i brugergrænsefladen. Der eksisterer derfor et afhængighedsforhold mellem klasserne View og BlogEntry. Et afhængighedsforhold er repræsenteret i UML ved hjælp af en stiplet pil.

offentlig klasse BlogEntry

    {

// Medlemmer af BlogEntry-klassen

    }

offentlig klasse Vis

    {

// Medlemmer af Vis-klassen

    }

Generalisering og specialisering

Generalisering kan defineres som teknikken til at udtrække de væsentlige egenskaber (disse inkluderer attributter, egenskaber og metoder) fra to eller flere underklasser og derefter kombinere dem i en generaliseret basisklasse (også kaldet en superklasse). Tværtimod er specialisering det modsatte af generalisering - det bruges til at repræsentere "type-of" -forhold ved at oprette underklasser fra eksisterende basisklasser.

Arv defineres som en klasses evne til at udvide en eller flere klasser (også kendt som baseklasser). Bemærk, at generalisering er den stærkeste form for klasseforhold, da klasserne, der deltager i et generaliseringsforhold, er tæt forbundet med hinanden - de fleste af forældreklassens interne forviklinger er synlige for barneklassen.

Den klasse, der udvider basen eller forældreklassen, er også kendt som underordnet klasse eller den afledte klasse. Den nedarvede eller generaliserede klasse udvider eller arver sin base eller moderklasse. I arv arver en underordnet klasse metoderne og attributterne for basen eller forældreklassen undtagen dem, der er private. I det væsentlige arves ikke de private medlemmer af baseklassen, da de "udelukkende" tilhører den klasse, de er en del af. Derfor bør du kun drage fordel af generalisering, når du har brug for at repræsentere en klasse, der faktisk er en mere specialiseret form for en anden klasse.

Arv er af følgende typer:

  • Enkelt
  • Mange
  • Multilevel
  • Hierarkisk
  • Hybrid

Enkelt arv er den enkleste form for arv, hvor en klasse udvider en anden klasse. Følgende kodestykke illustrerer denne form for arv - bemærk, hvordan BlogAuthor-klassen udvider forfatterklassen.

offentlig klasse Forfatter

    {

// Medlemmer af forfatterklassen

    }

public class BlogAuthor: Author

    {

// Medlemmer af BlogAuthor-klassen

    }

I flere arv har du flere baseklasser, hvorfra en klasse er afledt. Bemærk, at flere arv ikke understøttes i OOP-programmeringssprog som Java eller C #.

Den næste arv på vores liste er arv på flere niveauer. I denne form for arv har du klasser arvet fra hinanden for at danne en kæde. Følgende kodestykke illustrerer dette.

offentlig klasse person

    {

// Medlemmer af Person-klassen

    }

offentlig klasse Forfatter: Person

    {

// Medlemmer af forfatterklassen

    }

public class BlogAuthor: Author

    {

// Medlemmer af BlogAuthor-klassen

    }

I hierarkisk arv har du klasser, der repræsenterer en hierarkisk struktur gennem arv, svarende til et stamtræ. I denne type arv har du mere end en barneklasse, der har samme base eller forældreklasse. Med andre ord er dette en type arv, hvor en eller flere afledte klasser har en fælles base eller overordnet klasse.

Hybrid arv er en type arv, hvor to eller flere former for arv kombineres til en. I det væsentlige er denne type arv en kombination af to eller flere former for arv for at danne en lukket struktur. Bemærk, at hybrid arv heller ikke understøttes i OO programmeringssprog som C # eller Java.

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