Inkapseling - wat is dit? Inkapseling in programmering
Inkapseling - dit is een van die drie belangrikste kenmerke van objekgeoriënteerde programmering (OOP). Die ander twee - polimorfisme en erfenis. Saam maak hulle die PLO raamwerk wat bepaal 'n verskeidenheid van funksies van die skryf van programme in verskillende tale, met behulp van hierdie drie beginsels. Objekgeoriënteerde tale, op sy beurt, is verplig om hulle streng te volg.
Objekgeoriënteerde programmering op drie pilare van sy skepping:
Polimorfisme, beantwoord die vraag van hoe 'n bepaalde programmeertaal handel oor voorwerpe wat 'n verhouding met mekaar het, in 'n soortgelyke wyse.
Erfenis, gee 'n antwoord, hoe is die stimulering van die gebruik van herbruikbare kode.
Inkapseling, wat is die antwoord op die vraag van die wegsteek van die implementering plaasvind, en dus die data integriteit.
Inkapseling (programmering) - is om toegang wysigers gebruik om stukke van kode te verberg van die eindgebruiker. Daaronder, op sy beurt, beteken die ontwikkelaar of erfenisterreine.
Die essensie van die konsep van "inkapseling"
Die definisie bepaal dat deur inkapseling bedoel wegkruip of 'n deel van die program kode. Die essensie van die konsep van "inkapseling" is om toegang wysigers manipuleer. Dit beteken dat die ontwikkelaar kan besluit watter eienskappe, metodes, en klasse sal oop wees vir die kliënt-klas wees, en wat - verborge.
Daar is toegang wysigers, wat, onder andere, in staat om van manipulyarivat inkapseling (Java) is:
openbare ( "Public" - openbare oop toegang) - aandeel beide die huidige klasse en objekte, en om die buitewêreld;
private ( "prayvat" - private, private, verborge toegang) - gesluit toegang, die essensie van wat is heeltemal die teenoorgestelde van die vorige een. Dit bied toegang net uit die huidige klas;
beskerm ( "protekted" - beskerm, half weggesteek toegang) - Toegang tot die huidige klas en sy afgeleide;
standaard - ongespesifiseerde toegang wysiger beteken dat die gebied / metode kan gesien word vir al die huidige klasse in die pakket.
In C # taal ( "Si Skerp"), in bykomend tot die bogenoemde (behalwe die laaste), is daar steeds wysigers:
interne ( "interne" - interne toegang) - toeganklikheid in die huidige vergadering, binnenshuise toegang tot alle ander gevalle;
interne beskerm ( "interne protekted" - interne Protected Access) - unie van twee wysigers in een waarin duidelik eienskappe van beide van hulle.
Die rol van inkapseling
inkapseling meganisme elimineer eksterne invloed op die kode en misbruik van data ingesluit in dit. Dit word bereik deur die kombinasie van die kode en data in een.
Voorwerp en inkapseling
Die kombinasie van die implementering van 'n sagteware module en data ingesluit in die kode, is ontwikkeling 'n voorwerp genoem. Die kern van sy verband met die inkapseling is dat so 'n metode laat om in stand te hou en te verseker dat die integriteit van die werking van die meganisme.
Die voordeel van inkapseling
Inkapseling - 'n manier om die enkodering proses te vereenvoudig. Talle reëls van die kode is "agter die skerms", en in die hoofklas werk gaan gevalle beswaar.
Die idee van die beskerming van data
Inkapseling - dit is ook 'n meganisme wat die idee van die beskerming van data besef. Program logika objekgeoriënteerde programmering is gebou op die basis van wat die meeste van die data sal wees verborge toegang wysiger private (private, privaat) of beskerm (beskerm). Die res van die wêreld, die kliënt per ongeluk of doelbewus nie die implementering van 'n sagteware module beskadig. Want in werklikheid is dit maak dit baie maklik om nie eens met 'n doel, inkapseling - dit is 'n baie goeie beginsel.
Klas, as 'n basiese eenheid van inkapseling en beskryf die data 'n kode, wat in staat is om te werk op hierdie data bestaan. Hy is ook die basis vir die konstruksie van die voorwerp. Laasgenoemde het op sy beurt, word aangebied as 'n geval.
Ook gebruik word om die volgende terme:
lede - dit is die kode en die ingesluit in die klas data;
velde of instansie veranderlikes - die sogenaamde data wat die klas definieer;
lid funksies - dit bevat die kode self. funksies lid - 'n algemene naam. 'N Spesiale geval - metodes.
Inkapseling spesifieke voorbeeld
Inkapseling (programmering) voorbeeld:
* Let wel:
beskrywing - 'n beskrywing van die metode / eiendom / veranderlike, dws kommentaar op wat werklik gebeur in die program. Dit word gedemonstreer deur middel van die opening / afsluiting tags
met behulp van System;
/// Hierdie klas is daarop gemik om die optrede van die motor se beskryf
openbare klas Auto
/// veranderlikes geskep om te skryf in dit, hoeveel jaar die motor, aangesien die eksterne inmenging in die eiendomsontwikkelaar van mening oorbodig
/// wysiger gemerk private, maw gesluit, private toegang (sien. Bogenoemde beskrywing).
/// n boolean (slegs twee moontlike waardes - ja of nee), wat beskryf of die voertuig beweeg teen die oomblik
/// Dit moet ook oop wees vir die eindgebruiker wees, wie hy was. Daarom hierdie veranderlike opgedra 'n private toegang wysiger "prayvat"
/// Hierdie stringveranderlike moet inligting oor die kleur van die motor bevat. Dit kan verander word deur eksterne invloede
/// want vir die kleur wysiger gekies oop toegang "openbare".
openbare string Kleur;
/// In hierdie spesifieke geval, ons aanvaar dat die naam van die motor, ook kan verander
/// opgedra 'n wysiger van openbare (oop toegang vir almal, ongeag klas of vergadering).
openbare string Naam;
/// Maak die klas konstruktor, en alle eiendom van die uitgespreek veranderlike en stel 'n bietjie vroeër, kry hul waardes
openbare Auto ()
_isMoving = vals;
Name = "Skoda Octavia";
/// Die metode besef 'n terugkeer waarde van die motor ouderdom. Hoekom is dit nodig?
/// private toegang wysiger dit nie moontlik vir die kliënt veranderinge aan te bring.
/// Returns die ouderdom van die motor.
openbare string GetAge ()
terugkeer "Op die oomblik is, die gekose masjien" + _age + "jaar.";
/// As die motor nie beweeg, hierdie metode implementeer die begin van die beweging. Tjeks veranderlike oboznalsya, die toestand van die voertuig (reis of nie), en, afhangende van die resultate, is die gepaste optrede / boodskap vertoon.
openbare leemte Start ()
Console.WriteLine ( "Die beweging het reeds begin");
Console.WriteLine ( "Gereed, Stel .. Gaan af!");
/// Indien die mosie is geïnisieer, hierdie metode stop hom. Dieselfde program logika as in die vorige geval oorweeg word.
openbare leemte Stop ()
Console.WriteLine ( "Stop Machine");
Console.WriteLine ( ". Fout motor en so staan stil, moenie beweeg");
/// Geïmplementeer links draai, as daar 'n voertuig
openbare leemte MoveLeft ()
Console.WriteLine ( "links is gedoen");
Console.WriteLine ( ". Fout voertuig stilstaan rotasie funksie is tans nie beskikbaar nie.");
/// n soortgelyke metode met die reg op sy beurt
openbare leemte MoveRight ()
Console.WriteLine ( "Draai regs is suksesvol geïmplementeer");
Console.WriteLine ( ". Fout Die motor het nie verskuif vanaf die plek regsdraai dit is op die oomblik die aksie, is dit onmoontlik om uit te voer is ..");