КампутарыПраграмаванне

Інкапсуляцыя - гэта што такое? Інкапсуляцыя у праграмаванні

Інкапсуляцыя - гэта адна з трох асноўных асаблівасцяў аб'ектна-арыентаванага праграмавання (ААП). Дзве іншыя - палімарфізм і спадчыну. Разам яны складаюць базу ООП, якая вызначае цэлы спектр магчымасцяў напісання праграм на розных мовах, выкарыстоўваючы гэтыя тры прынцыпу. Аб'ектна-арыентаваныя мовы, у сваю чаргу, абавязаны канкрэтна ім прытрымлівацца.

асновы ООП

Аб'ектна-арыентаванае праграмаванне стаіць на трох кітах свайго светабудовы:

  • Палімарфізме, які адказвае на пытанне, як пэўны мова праграмавання трактуе аб'екты, якія маюць паміж сабой сувязь, падобнай выявай.
  • Атрыманнi спадчыны, давальным адказ, якім чынам адбываецца стымуляцыя выкарыстання кода шматкроць.
  • Інкапсуляцыі, якая з'яўляецца адказам на пытанне, як адбываецца ўтойванне рэалізацыі, а значыць і захавання цэласнасці дадзеных.

тэрміналогія

Інкапсуляцыя (праграмаванне) - гэта выкарыстанне мадыфікатараў доступу з мэтай утойвання частак праграмнага кода ад канчатковага карыстальніка. Пад ім, у сваю чаргу, маецца на ўвазе распрацоўшчык або спадчыннік аб'ект.

Сутнасць паняцця "інкапсуляцыя"

Дэфініцыя вызначае, што пад інкапсуляцыі маецца на ўвазе ўтойванне усяго або часткі праграмнага кода. Сутнасць жа паняцця "інкапсуляцыя" заключаецца ў маніпуляванні мадыфікатарамі доступу. Гэта азначае, што распрацоўшчык сам вырашае, якія ўласцівасці, метады і класы будуць адкрыты класу-кліенту, а якія - схаваныя.

мадыфікатары доступу

Існуюць такія мадыфікатары доступу, якімі, у ліку іншых, здольная манипуляривать інкапсуляцыя (праграмаванне Java):

  • public ( "паблік" - публічны, адкрыты, доступ) - агульны доступ як для бягучых аб'ектаў і класаў, так і для знешняга свету;
  • private ( "прайват" - прыватны, прыватны, схаваны доступ) - закрыты доступ, сутнасць якога цалкам процілеглая папярэдняму. Забяспечвае доступ толькі з бягучага класа;
  • protected ( "протектед" - абаронены, напалову схаваныя, доступ) - доступ для бягучага класа і вытворных ад яго;
  • па змаўчанні - неадзначаныя мадыфікатар доступу мае на ўвазе, што поле / метад відаць для ўсяго бягучага пакета класаў.

У мове C # ( "Сі Шарп"), акрамя названых (выключаючы апошні), ёсць яшчэ такія мадыфікатары:

  • internal ( "интернал" - унутраны доступ) - агульнадаступнасць у бягучым зборы, закрыты доступ па ўсіх астатніх выпадках;
  • internal protected ( "интернал протектед" - унутраны абаронены доступ) - аб'яднанне двух мадыфікатараў ў адзін, у якім выяўляюцца ўласцівасці абодвух з іх.

ролю інкапсуляцыі

Механізм інкапсуляцыі дазваляе выключыць знешні ўплыў на праграмны код і няправільнае выкарыстанне закладзеных у ім дадзеных. Гэта адбываецца за кошт аб'яднання кода і дадзеных у адно цэлае.

Аб'ект і інкапсуляцыя

Аб'яднанне рэалізацыі праграмнага модуля і дадзеных, закладзеных у кодзе, у праграмаванні называецца аб'ектам. Сутнасць сувязі яго з інкапсуляцыі заключаецца ў тым, што менавіта такая методыка дазваляе падтрымліваць і забяспечваць цэласнае функцыянаванне разгляданага механізму.

перавага інкапсуляцыі

Інкапсуляцыя - гэта спосаб спрасціць працэс кадавання. Шматлікія радкі кода застаюцца "за кулісамі", а ў асноўным класе праца ідзе з асобнікамі аб'ектаў.

Ідэя абароны дадзеных

Інкапсуляцыя - гэта таксама механізм, які рэалізуе ідэю абароны дадзеных. Праграмная логіка аб'ектна-арыентаванага праграмавання пабудавана на базе таго, што большая частка дадзеных будзе схаваная мадыфікатарам доступу private (прыватны, прыватны) або protected (абаронены). Знешні свет, кліент выпадкова ці наўмысна не змогуць пашкодзіць рэалізацыі праграмнага модуля. Паколькі на самай справе зрабіць гэта вельмі лёгка нават не знарок, інкапсуляцыя - гэта вельмі добры прынцып.

адзінкі інкапсуляцыі

Клас, як асноўная адзінка інкапсуляцыі, апісвае дадзеныя і змяшчае код, які гэтымі дадзенымі здольны апераваць. Таксама ён з'яўляецца базай для пабудовы аб'екта. Апошні, у сваю чаргу, прадстаўлены як асобнік класа.

Выкарыстоўваецца таксама наступная тэрміналогія:

  • члены - гэта код і дадзеныя, якія ўваходзяць у клас;
  • поля, або зменныя асобніка - так называюцца дадзеныя, якія вызначае клас;
  • функцыі-члены - у іх утрымліваецца сам код. Функцыі-члены - агульная назва. Прыватны выпадак - метады.

Інкапсуляцыя на канкрэтным прыкладзе

Інкапсуляцыя (праграмаванне) прыклад:

* Заўвага:

description - гэта апісанне метаду / ўласцівасці / зменнай, то ёсць каментаванне таго, што, уласна, адбываецца ў праграме. Прадэманстравана пры дапамозе адкрываюцца / зачыняюцца тэгаў

using System;

namespace OOPLibrary.Auto

{

///

/// Дадзены клас прызначаны для таго, каб апісваць ўласцівасці і дзеянні аўтамабіля

///

public class Auto

{

///

/// Ясна, створаная для таго, каб у яе запісваць, колькі аўтамабілю гадоў, так як знешняе ўмяшанне ў гэта ўласцівасць распрацоўшчык лічыць лішнім

/// яно пазначаецца мадыфікатарам private, то ёсць закрыты, прыватны доступ (гл. Апісанне вышэй).

///

private int _age;

///

/// Булеўская пераменная (толькі два магчымых значэння - альбо так, альбо не), якая апісвае, рухаецца ці аўтамабіль на дадзены момант

/// Яна таксама не павiнна быць адкрыта для канчатковага карыстальніка, кім бы ён ні быў. Таму і гэтай зменнай прысвойваецца закрыты мадыфікатар доступу "прайват"

///

private bool _isMoving;

///

/// У дадзенай радковыя зменнай павінна ўтрымлівацца інфармацыя аб колеры аўтамабіля. Ён можа падвяргацца зменам з боку вонкавага ўздзеяння

/// таму для Колеры абраны мадыфікатар адкрытага доступу "паблік".

///

public string Color;

///

/// У дадзеным канкрэтным выпадку дапускаем, што імя аўтамабіля таксама можна мяняць

/// прысвойваецца мадыфікатар паблік (адкрыты доступ для ўсіх, па-за залежнасці ад класа або зборкі).

///

public string Name;

///

/// Адкрываецца канструктар класа і ўсе ўласцівасці, выяўленыя зменнымі і зададзеныя ледзь раней, атрымліваюць свае значэння

///

public Auto ()

{

_age = 5;

_isMoving = false;

Color = "Фіялетавы";

Name = "Шкода Актавія";

}

///

/// Метад рэалізуе вяртанне значэння ўзросту аўто. Навошта гэта трэба?

/// закрыты мадыфікатар доступу не робіць яго магчымым для змены кліентам.

///

/// Вяртае ўзрост аўтамабіля.

public string GetAge ()

{

return "На дадзены момант абранай машыне" + _age + "гадоў.»;

}

///

/// Калі аўтамабіль не рухаецца, гэты метад рэалізуе старт руху. Выконваецца праверка зменнай, обознался, у якім стане знаходзіцца аўтамабіль (едзе ён ці не), і, у залежнасці ад вынікаў, выконваецца адпаведнае дзеянне / выводзіцца адпаведнае паведамленне.

///

public void Start ()

{

if (_isMoving)

{

Console.WriteLine ( "Рух ўжо было пачата");

}

else

{

_isMoving = true;

Console.WriteLine ( "На старт, увага .. Наперад! Паехалі!");

}

}

///

/// Калі рух было пачата, то гэты метад яго спыняе. Тая ж праграмная логіка, што і ў папярэднім разгледжаным выпадку.

///

public void Stop ()

{

if (_isMoving)

{

_isMoving = false;

Console.WriteLine ( "Стоп, машына");

}

else

{

Console.WriteLine ( "Памылка. Аўтамабіль і так стаіць на месцы, не рухаецца");

}

}

///

/// Ажыццяўляецца паварот налева, калі мае месца руху аўтамабіля

///

public void MoveLeft ()

{

if (_isMoving)

{

Console.WriteLine ( "Ажыццёўлены паварот налева");

}

else

{

Console.WriteLine ( "Памылка. Аўтамабіль стаіць на месцы. Функцыя павароту на дадзены момант недаступная");

}

}

///

/// Аналагічны метад з паваротам направа

///

public void MoveRight ()

{

if (_isMoving)

{

Console.WriteLine ( "Паварот направа быў ажыццёўлены паспяхова");

}

else

{

Console.WriteLine ( "Памылка. Аўтамабіль яшчэ не рухаўся з месца. Паварот направа з'яўляецца на дадзены момант дзеяннем, немагчымым для выканання.");

}

}

}

}

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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