ინკაფსულაცია vs აბსტრაქცია
ენკაფსულაცია და აბსტრაქცია არის ორი განსხვავებული, მაგრამ დაკავშირებული ცნებები, რომლებიც გვხვდება OOP (ობიექტზე ორიენტირებული პროგრამირების) ენებში. ინკაფსულაცია არის მონაცემთა და ქცევის ერთად გაერთიანების კონცეფცია, როგორც ერთიანი ერთეული. მეორეს მხრივ, აბსტრაქცია არის წარმოდგენის პროცესი, თუ როგორ იქცევა ერთეული\გამოიყურება მისი განხორციელებისგან განსხვავებით.
რა არის ინკაფსულაცია?
ინკაფსულაცია არის მონაცემთა და ოპერაციების შეფუთვის პროცესი, რომელიც მოქმედებს მათზე ერთ ერთეულში. ეს არსებითად ნიშნავს, რომ მონაცემების წვდომისთვის უნდა იქნას გამოყენებული გარკვეული წინასწარ განსაზღვრული მეთოდები.სხვა სიტყვებით რომ ვთქვათ, ინკაფსულირებული მონაცემები არ არის პირდაპირ წვდომა. ეს უზრუნველყოფს მონაცემების მთლიანობის შენარჩუნებას, რადგან მომხმარებელს არ შეუძლია პირდაპირ წვდომა და შეცვალოს მონაცემები, როგორც მას სურს. მომხმარებლები მიიღებენ ან დააყენებენ მონაცემთა მნიშვნელობებს მხოლოდ იმ მეთოდებით, რომლებიც ხელმისაწვდომია მომხმარებლებისთვის. ეს მეთოდები ჩვეულებრივ უზრუნველყოფს მონაცემთა ვალიდაციას ისე, რომ მხოლოდ შესაბამისი ფორმატის მონაცემების ნებადართულია ველებში ჩასმა. ამიტომ, ინკაფსულაციის სარგებელი სამმაგია. Encapsulation-ის საშუალებით პროგრამისტს შეუძლია კლასის ველების შექმნა მხოლოდ წასაკითხად ან მხოლოდ ჩაწერისთვის. მეორეც, კლასს შეუძლია ჰქონდეს სრული კონტროლი მის ველებში შენახულზე. და ბოლოს, კლასის მომხმარებლებს არ სჭირდებათ ფიქრი, თუ როგორ ინახება მისი მონაცემები. Java-ში პროგრამისტს შეუძლია გამოაცხადოს ყველა ინსტანციის ცვლადი კერძოდ და მიაწოდოს get and set მეთოდები (რომლებიც საჯაროა) კერძო ველებზე წვდომისა და შესაცვლელად.
რა არის აბსტრაქცია?
აბსტრაქცია არის პრეზენტაციის დეტალების განცალკევების პროცესი განხორციელების დეტალებისგან.ეს კეთდება იმისთვის, რომ დეველოპერი გათავისუფლდეს განხორციელების უფრო რთული დეტალებისგან. ამის ნაცვლად, პროგრამისტს შეუძლია ფოკუსირება მოახდინოს პრეზენტაციაზე ან ერთეულის ქცევის დეტალებზე. მარტივი სიტყვებით რომ ვთქვათ, აბსტრაქცია ფოკუსირებულია იმაზე, თუ როგორ შეიძლება გამოიყენოს გარკვეული ერთეული და არა როგორ განხორციელდეს იგი. აბსტრაქცია არსებითად მალავს განხორციელების დეტალებს, ასე რომ, იმ შემთხვევაშიც კი, თუ განხორციელების მეთოდოლოგია დროთა განმავლობაში შეიცვლება, პროგრამისტს არ მოუწევს ფიქრი, თუ როგორ იმოქმედებს ეს მის პროგრამაზე. სისტემა შეიძლება იყოს აბსტრაქტული რამდენიმე ფენაში ან დონეზე. მაგალითად, დაბალი დონის აბსტრაქციის შრეები გამოავლენს ტექნიკის დეტალებს, ხოლო მაღალი დონის აბსტრაქცია გამოავლენს მხოლოდ ერთეულის ბიზნეს ლოგიკას. ტერმინი აბსტრაქცია შეიძლება გამოყენებულ იქნას როგორც ერთეულზე, ასევე პროცესზე და ეს იწვევს გარკვეულ დაბნეულობას. როგორც პროცესი, აბსტრაქცია ნიშნავს არსებითი დეტალების ამოღებას ნივთის ან ნივთების ჯგუფის არსებითი დეტალების იგნორირებაში, ხოლო როგორც ერთეული, აბსტრაქცია ნიშნავს მოდელს ან ხედვას ერთეულის მხოლოდ არსებითი დეტალებით.ჯავაში პროგრამისტს შეუძლია გამოიყენოს საკვანძო სიტყვა აბსტრაქტული კლასის აბსტრაქტულ ერთეულად გამოსაცხადებლად, რომელიც წარმოადგენს რეალური სამყაროს ერთეულის არსებით განმსაზღვრელ მახასიათებლებს.
რა განსხვავებაა ინკაფსულაციასა და აბსტრაქციას შორის?
მიუხედავად იმისა, რომ ინკაფსულაცია და აბსტრაქცია ძალზედ დაკავშირებული ცნებებია, რომლებიც გვხვდება ობიექტზე ორიენტირებულ პროგრამირების ენებში, მათ აქვთ ძირითადი განსხვავებები. აბსტრაქცია არის ტექნიკა, რომელიც გვეხმარება განვსაზღვროთ რა უნდა იყოს ხილული და რა უნდა დაიმალოს. ინკაფსულაცია არის ინფორმაციის შეფუთვის ტექნიკა ისე, რომ ხილული გახადოს ის, რაც უნდა იყოს ხილული და მალავს იმას, რაც უნდა იყოს დამალული. სხვა სიტყვებით რომ ვთქვათ, ინკაფსულაცია შეიძლება განისაზღვროს, როგორც აბსტრაქციის მიღმა ერთი ნაბიჯი. მიუხედავად იმისა, რომ აბსტრაქცია ამცირებს რეალურ სამყაროს ობიექტს მის არსებით განმსაზღვრელ მახასიათებლამდე, ინკაფსულაცია აფართოებს ამ იდეას ამ ერთეულის ამ ფუნქციის მოდელირებით და აკავშირებით.