Programmēšana

Izpētīt vispārinājumu, specializāciju un atkarību OOP

OOP (objektorientētā programmēšana) ir paradigma, kuras centrā ir objekti un dati, nevis darbības un loģika. Strādājot ar OOP, obligāti jāidentificē objekti un to attiecības.

Programmā OOP problēma tiek sadalīta vairākos objektos un to savstarpējā saistībā - process, kas pazīstams kā datu modelēšana. Būtiskās attiecības starp objektiem ietver: asociāciju, vispārinājumu, specializāciju, agregāciju, atkarību un sastāvu. Šajā rakstā mēs apspriedīsim atkarības un mantojuma attiecības OOP ar kodu piemēriem C #, lai ilustrētu jēdzienus.

Atkarība

Atkarība ir attiecības starp diviem vai vairākiem objektiem, kuros objekts ir atkarīgs no cita objekta vai objektiem, lai to īstenotu. Ja viens no šiem objektiem mainās, var ietekmēt citu objektu (-us). Atkarības attiecības starp diviem vai vairākiem objektiem tiek attēlotas UML, izmantojot punktētas bultiņas. Citiem vārdiem sakot, kad starp diviem vai vairākiem objektiem pastāv atkarības attiecības, objektam jāzina par citu objektu (-iem), no kura (-iem) tas ir atkarīgs.

Apsveriet klases BlogEntry un View. Kamēr pirmais satur visu saistīto informāciju, kas saistīta ar emuāra ierakstiem, otrais attiecas uz datu, kas saņemti no BlogEntry klases, parādīšanu lietotāja saskarnē. Tātad skata klase ir atkarīga no BlogEntry klases, lai lietotāja saskarnē parādītu saturu (emuāra ierakstus). Tādējādi pastāv atkarības attiecības starp klasēm View un BlogEntry. Atkarības attiecības tiek attēlotas UML, izmantojot punktētu bultiņu.

publiskā klase BlogEntry

    {

// BlogEntry klases dalībnieki

    }

sabiedrības klases skats

    {

// Skolas klases dalībnieki

    }

Vispārināšana un specializācija

Vispārinājumu var definēt kā paņēmienu, kā iegūt galvenos raksturlielumus (tostarp atribūtus, īpašības un metodes) no divām vai vairākām apakšklasēm un pēc tam tos apvienot vispārinātā pamatklasē (saukta arī par superklasi). Gluži pretēji, specializācija ir pretējs vispārinājumam - to izmanto, lai attēlotu "veida attiecības", izveidojot apakšklases no esošajām bāzes klasēm.

Mantošanu definē kā klases spēju pagarināt vienu vai vairākas klases (pazīstamas arī kā bāzes klases). Ņemiet vērā, ka vispārināšana ir visspēcīgākā klases attiecību forma, jo klases, kas piedalās vispārināšanas attiecībās, ir cieši saistītas viena ar otru - lielākā daļa vecāku klases iekšējo sarežģījumu ir redzama bērnu klasei.

Klase, kas paplašina pamata vai vecāku klasi, ir pazīstama arī kā bērnu klase vai atvasinātā klase. Mantotā vai vispārinātā klase paplašina vai pārņem savu bāzes vai vecāku klasi. Mantojumā bērnu klase manto bāzes vai vecāku klases metodes un atribūtus, izņemot tos, kas ir privāti. Būtībā privātie pamatklases locekļi netiek mantoti, jo viņi pieder "tikai" tai klasei, kurā viņi ietilpst. Tādējādi jums vajadzētu izmantot vispārināšanas priekšrocības tikai tad, kad jums jāpārstāv klase, kas faktiski ir citas klases specializētāka forma.

Mantošana ir šāda veida:

  • Viens
  • Vairāki
  • Daudzlīmeņu
  • Hierarhiska
  • Hibrīds

Viena mantošana ir vienkāršākais mantojuma veids, kurā viena klase paplašina citu klasi. Šis mantojuma veids ilustrē šo koda fragmentu - ņemiet vērā, kā klase BlogAuthor paplašina klasi Autors.

sabiedrības klase Autors

    {

// Autoru klases dalībnieki

    }

public class BlogAuthor: Autors

    {

// BlogAuthor klases dalībnieki

    }

Vairāku mantojumu gadījumā jums ir vairākas bāzes klases, no kurām atvasināta klase. Ņemiet vērā, ka vairākkārtēja mantošana netiek atbalstīta OOP programmēšanas valodās, piemēram, Java vai C #.

Nākamais mantojuma veids mūsu sarakstā ir daudzlīmeņu mantojums. Šajā mantojuma formā jums ir klases mantotas viena no otras, lai izveidotu ķēdi. Tālāk parādītais koda fragments to ilustrē.

sabiedriskā klase Persona

    {

// Personas klases dalībnieki

    }

publiskā klase Autors: Persona

    {

// Autoru klases dalībnieki

    }

public class BlogAuthor: Autors

    {

// BlogAuthor klases dalībnieki

    }

Hierarhiskajā mantojumā jums ir klases, kas caur mantojumu pārstāv hierarhisku struktūru, līdzīgi kā ģimenes kokā. Šāda veida mantojumā jums ir vairāk nekā viena bērnu klase, kurai ir vienāda pamata vai vecāku klase. Citiem vārdiem sakot, tas ir tāds mantojuma veids, kurā vienai vai vairākām atvasinātajām klasēm ir kopīga bāzes vai vecāku klase.

Hibrīds mantojums ir mantojuma veids, kurā divas vai vairākas mantojuma formas tiek apvienotas vienā. Būtībā šis mantojuma veids ir divu vai vairāku mantojuma formu kombinācija, veidojot slēgtu struktūru. Ņemiet vērā, ka hibrīds mantojums netiek atbalstīts arī OO programmēšanas valodās, piemēram, C # vai Java.

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