KompiuteriaiProgramavimas

Kas yra inkapsuliavimas? Kapsuliavimas programuojant

Encapsulation yra viena iš trijų pagrindinių Objektinis programavimo (OOP) bruožų . Kiti du yra polimorfizmas ir paveldėjimas. Kartu jie sudaro PLO bazę, kuri nustato visas galimybes rašyti programas įvairiomis kalbomis, naudojant šiuos tris principus. Savo ruožtu objektyvioms kalboms reikia aiškiai juos sekti.

OOP pagrindai

Objektinis programavimas stovi ant trijų jos visatos ramsčių:

  • Polimorfizmas, atsakant į klausimą, kaip tam tikra programavimo kalba traktuoja objektus, kurie turi santykius tarpusavyje panašiai.
  • Paveldėjimas, atsakymas, kaip kartojasi kodo naudojimo stimuliavimas.
  • Apibendrinimas, kuris yra atsakymas į klausimą, kaip įgyvendinimas yra paslėptas, todėl saugoma duomenų vientisumas.

Terminologija

Kapsuliavimas (programavimas) - tai prieigos modifikatorių naudojimas, siekiant paslėpti galutinio vartotojo kodo dalis. Pagal tai, savo ruožtu, reiškia kūrėją ar paveldimą objektą.

"Inkapsuliavimo" koncepcijos esmė

Apibrėžimas apibrėžia, kad "encapsulation" reiškia viso arba dalies kodo nuslėpimą. "Inkapsuliavimo" koncepcijos esmė - manipuliuoti prieigos modifikatoriais. Tai reiškia, kad pats kūrėjas pats nusprendžia, kokios savybės, metodai ir klasės bus atidarytos kliento klasei, o kurios iš jų yra paslėptos.

Prieigos modifikatoriai

Yra tokie prieigos modifikatoriai, kurie, be kita ko, gali manipuliuoti inkapsuliacija (Java programavimas):

  • Vieša (viešoji - viešoji, atvira, prieiga) - bendroji prieiga tiek dabartiniams objektams ir klasėms, tiek išoriniam pasauliui;
  • Privati ("privati" - privati, privati, paslėpta prieiga) - privati prieiga, kurios esmė yra visiškai priešinga ankstesnei. Pateikia prieigą tik iš dabartinės klasės;
  • Saugoma (saugoma, pusiau paslėpta, prieiga) - prieiga prie dabartinės klasės ir iš jos išvestinių;
  • Pagal numatytuosius nustatymus nepaaiškintas prieigos modifikatorius reiškia, kad laukas / metodas yra matomas visai dabartinei klasės paketai.

C # ("C Sharp"), be nurodytos (be pastarosios), vis dar yra tokių modifikatorių:

  • Vidinis (vidinis) - prieinamumas dabartinėje kolekcijoje, uždaroji prieiga visais kitais atvejais;
  • Vidinė apsauga ("vidinė apsaugota prieiga") - dviejų modifikatorių derinys į vieną, kuriame abu jų savybės pasireiškia.

Inkapsuliavimo vaidmuo

Kapsuliavimo mechanizmas leidžia pašalinti išorinę įtaką programos kodui ir neteisingai naudoti jame įterptus duomenis. Tai atliekama sujungiant kodą ir duomenis į vieną.

Objektas ir encapsuliavimas

Programos modulio ir duomenų, įterptų į programavimo kodą, derinys vadinamas objektu. Jo ryšio su inkapsuliacija esmė yra tai, kad būtent šis metodas leidžia išlaikyti ir užtikrinti integruotą nagrinėjamo mechanizmo veikimą.

Inkapsuliavimo pranašumas

Encapsulation yra būdas supaprastinti kodavimo procesą. Daugybė eilučių kodo išlieka "už scenų", o pagrindinės klasės darbas eina su objektų egzemplioriais.

Duomenų apsaugos idėja

Encapsulation taip pat yra mechanizmas, kuris įgyvendina duomenų apsaugos idėją. Objektinio programavimo logikos programa grindžiama tuo, kad prieigos modifikatorius paslėptų daugumą duomenų privačių (privataus, privataus) arba saugomų (apsaugotų). Išorinis pasaulis, klientas netyčia ar tyčia negali sugadinti programinės įrangos modulio įdiegimo. Kadangi iš tiesų tai yra labai lengva padaryti net tikslingai, įkapsuliavimas yra labai geras principas.

Inkapsuliavimo vienetai

Klasė, kaip pagrindinis įkapsuliavimo elementas, aprašo duomenis ir yra kodas, kuris gali veikti su šiais duomenimis. Tai taip pat yra pastato objekto bazė. Pastaroji, savo ruožtu, atstovaujama kaip klasės pavyzdys.

Taip pat vartojama ši terminologija:

  • Nariai yra kodas ir duomenys, įtraukti į klasę;
  • Laukai arba instancijos kintamieji - vadinamieji duomenys, kurie apibrėžia klasę;
  • Narių funkcijos - jose yra pats kodas. Nario funkcijos yra generinis pavadinimas. Ypatingas atvejis yra metodai.

Konkretaus pavyzdžio inkapsuliavimas

Pavyzdys:

* Pastaba:

Aprašymas yra metodo / nuosavybės / kintamojo aprašymas, ty komentaras apie tai, kas iš tikrųjų vyksta programoje. Parodyta naudojant atidarymo / uždarymo žymas

Sistemos naudojimas;

Vardų sritis OOPLibrary.Auto

{

///

/// Ši klasė skirta aprašyti automobilio savybes ir veiksmus

///

Viešoji klasė Auto

{

///

/// Kintamasis sukurtas, kad parašyti jam, kiek metų yra automobilis, nes išorinis įsikišimas į šį turtą kūrėjo nuomone yra nereikalingas

/// tai pažymėta modifikatoriumi privačiu, tai yra, privataus, privataus prieigos (žr. Aprašymą aukščiau).

///

Privati int _age;

///

/// Būlio kintamasis (tik dvi galimos reikšmės - taip arba ne), kuris apibūdina, ar automobilis šiuo metu juda

/// Ji taip pat neturėtų būti atvira galutiniam vartotojui, nesvarbu, kas jis yra. Todėl šis kintamasis priskiriamas privataus prieigos modifikatoriui "privat"

///

Privati bool _isMoving;

///

/// Šiame eilutiniame kintamajame turi būti informacija apie automobilio spalvą. Tai gali priklausyti nuo išorinių veiksnių pokyčių

/// kadangi viešosios prieigos modifikatorius "public" pasirinktas spalvą.

///

Viešoji eilutė spalva;

///

/// Šiuo konkrečiu atveju mes manome, kad automobilio pavadinimas taip pat gali būti pakeistas

/// priskiria viešą modifikatorių (viešas prieinamas visiems, nepriklausomai nuo klasės ar susirinkimo).

///

Viešas eilutės pavadinimas;

///

/// Atsidaro klasės konstruktorius, o visos savybės, išreikštos kintamaisiais ir anksčiau nurodytais, gauna jų vertes

///

Viešasis "Auto" ()

{

_age = 5;

_isMoving = klaidinga;

Spalva = "Violetinė";

Pavadinimas = "Skoda Octavia";

}

///

/// Metodas įgyvendina automatinio amžiaus vertes grąžinimą. Kodėl tai reikalinga?

/// privataus prieigos modifikatorius neleidžia klientui jo keisti.

///

/// grąžina automobilio amžių.

Public string GetAge ()

{

Grįžti "Šiuo metu pasirinkta mašina yra" + _age + "metai.";

}

///

/// Jei automobilis nejuda, šis metodas įgyvendina judesio pradžią. Patikrinamas kintamasis, nurodantis automobilio būseną (ar jis keliauja, ar ne), ir, priklausomai nuo rezultatų, atliekamas atitinkamas veiksmas / rodomas atitinkamas pranešimas.

///

Public void Start ()

{

Jei (_isMoving)

{

Console.WriteLine ("judėjimas jau prasidėjo");

}

Kitaip

{

_isMoving = true;

Console.WriteLine ("Pradėti, atkreipti dėmesį ... Persiųsti! Eikime!");

}

}

///

/// Jei judėjimas buvo pradėtas, tai šis metodas jį sustabdo. Ta pati programavimo logika kaip ir ankstesniame.

///

Viešoji void Stop ()

{

Jei (_isMoving)

{

_isMoving = klaidinga;

Console.WriteLine ("Stop, machine");

}

Kitaip

{

Console.WriteLine ("Klaida: automobilis jau yra, nejudamas");

}

}

///

/// Pasukite į kairę, jei yra transporto priemonės judėjimas

///

Public void MoveLeft ()

{

Jei (_isMoving)

{

Console.WriteLine ("pasukta kairėn");

}

Kitaip

{

Console.WriteLine ("Klaida: automobilis stovi, rotacijos funkcija šiuo metu nepasiekiama");

}

}

///

/// Panašus metodas su sukimu į dešinę

///

Viešas negaliojantis MoveRight ()

{

Jei (_isMoving)

{

Console.WriteLine ("Pasukti į dešinę buvo sėkminga");

}

Kitaip

{

Console.WriteLine ("Klaida: automobilis dar nėra persikeltas". Šiuo metu galimas dešinys yra neįmanomas veiksmas. ");

}

}

}

}

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 lt.birmiss.com. Theme powered by WordPress.