Тафовут байни абстраксия ва инкапсуляция

Навсозии охирин: 24/04/2023

Абстраксия ва инкапсуляция чист?

La абстраксия ва инкапсулятсия Онҳо ду мафҳуми муҳим дар барномасозӣ мебошанд объект нигаронида шудааст (ПО). Ҳарду барои ташкил ва сохтори коди мо ва пешгирӣ кардани хатогиҳо ё ихтилофоти эҳтимолӣ хидмат мекунанд.

Реферат

La абстраксия раванди муайян кардани хусусиятҳои асосӣ мебошад аз объект ва хусусиятҳои ғайримуқаррариро тарк кунед. Дар барномасозии OOP, абстраксия ба мо имкон медиҳад, ки бидуни ташвиш дар бораи ҷузъиёти дохилии татбиқи он синф эҷод кунем.

Масалан, агар мо як бозии пойга эҷод кунем, мо метавонем синфи "Мошин" -ро эҷод кунем, ки дорои хосиятҳое ба монанди "Суръат" ё "Шитоб" аст, аммо ба мо лозим нест, ки бидонем, ки муҳаррик чӣ гуна кор мекунад ё чӣ гуна қувва ба мошин интиқол дода мешавад. чархҳо.

Мисол:

Биёед мисоли кодеро бубинем, ки абстраксияро нишон медиҳад:

class Car { private int CurrentSpeed; шитоби хусусӣ; Мошини ҷамъиятӣ () {Суръати ҷорӣ = 0; шитоб = 0; } public void accelerate(int increment) { суръатбахшӣ += афзоиш; } public void decelerate(int decrement) { суръатбахшӣ -= коҳиш; } // Дигар хосиятҳо ва усулҳо... }
  

Дар ин мисол, мо синфи "Мошин" -ро эҷод карда истодаем, ки дорои ду хосият (суръат ва суръатбахшии ҷорӣ) ва ду усул (шитоб ва тормоз). Бо вуҷуди ин, ба мо лозим нест, ки ҷузъиёти дохилии ҳаракати мошинро бидонем ва мо метавонем бо он кор кунем, ки гӯё он як объекти абстрактӣ бошад.

Мундариҷаи истисноӣ - Ин ҷо клик кунед  Тафовут байни калимаи калидӣ ва идентификатор

Инкапсулясия

La инкапсулятсия, аз тарафи дигар, раванди пинҳон кардан ё муҳофизат кардани ҷузъиёти дохилии синф ва танҳо имкони дастрасӣ тавассути интерфейси ҷамъиятӣ мебошад. Ин барои пешгирӣ кардани ихтилофҳо ё хатогиҳои эҳтимолӣ анҷом дода мешавад.

Масалан, агар мо синфи "Шахс" дошта бошем, ки дорои хосиятҳои монанди "Синну сол" ё "Ном" ҳастем, мо мехоҳем боварӣ ҳосил кунем, ки онҳо аз берун аз синф ба таври ногаҳонӣ тағир дода намешаванд. Барои ин, мо метавонем ин хосиятҳоро ҳамчун хусусӣ таъин кунем ва барои дастрасӣ ба онҳо усулҳои ҷамъиятӣ эҷод кунем, ба монанди "getAge()" ё "setName()".

Мисол:

Биёед мисоли кодеро бубинем, ки инкапсуляцияро нишон медиҳад:

class Person { private int age; номи сатри хусусӣ; ҷамъиятӣ Шахси(int e, String n) { синну сол = e; ном = n; } public int getAge() { бозгашти синну сол; } String public getName() { баргардонидани номи; } public void setName(String n) {name = n; } // Дигар хосиятҳо ва усулҳо... }
  

Дар ин мисол, мо синфи "Person" -ро бо ду хосият (синну сол ва ном) ва якчанд усулҳои дастрасӣ ба онҳо (getAge, getName ва setName) эҷод мекунем. Аммо ин хосиятҳо танҳо аз дохили синф дастрасанд ва онҳоро аз хатогиҳо ё ихтилофоти эҳтимолӣ муҳофизат мекунанд.

Мундариҷаи истисноӣ - Ин ҷо клик кунед  Миёни ҳалқаи токен ва Ethernet ошуфтааст?: Фарқиятҳои калидиро барои шабакаи муассиртар омӯзед

Хулоса

Хулоса, абстраксия ва инкапсулятсия ду мафҳуми калидӣ дар барномасозии ба объект нигаронидашуда мебошанд. Абстраксия ба мо имкон медиҳад, ки бо объектҳои абстрактӣ бе ташвиш дар бораи тафсилоти дохилии татбиқи онҳо кор кунем, дар ҳоле ки инкапсуляция ба мо имкон медиҳад, ки ҷузъиёти дохилии синфро муҳофизат кунем ва танҳо ба воситаи интерфейси ҷамъиятӣ дастрасӣ пайдо кунем.

Фаҳмидани ин мафҳумҳо барои тарҳрезӣ ва таҳияи барномаҳои муассир ба объект нигаронидашуда ва хуб сохта шудааст.

Маводҳо