მიმოხილვები

მონაცემთა Encapsulation

მონაცემთა Encapsulation

მონაცემთა დაშიფვრა ყველაზე მნიშვნელოვანი კონცეფციაა ობიექტებთან პროგრამირებისას. ობიექტზე ორიენტირებულ პროგრამირებაში მონაცემების კაფსულაცია ეხება:

  • მონაცემთა გაერთიანება და როგორ ხდება ეს მანიპულირება ერთ ადგილზე. ეს მიიღწევა ობიექტის სახელმწიფოს (კერძო სფეროების) და ქცევის (საზოგადოებრივი მეთოდების) საშუალებით.
  • მხოლოდ დაუშვებელია ობიექტის მდგომარეობის წვდომა და მოდიფიცირება ქცევით. მაშინ ობიექტის მდგომარეობაში შემავალი ღირებულებები მკაცრად კონტროლდება.
  • დეტალების დამალვა, თუ როგორ მუშაობს ობიექტი. ობიექტის ერთადერთი ნაწილი, რომელიც გარე სამყაროსთვისაა ხელმისაწვდომი, არის მისი ქცევა. რა ხდება ამ ქცევების შიგნით და როგორ ინახება სახელმწიფო, იმალება ხედვისგან.

მონაცემების ინკაფაციის განხორციელება

პირველ რიგში, ჩვენ უნდა დავადგინოთ ჩვენი ობიექტები ისე, რომ მათ ჰქონდეთ მდგომარეობა და ქცევა. ჩვენ ვქმნით კერძო სფეროებს, რომლებიც ფლობენ სახელმწიფო და საზოგადოებრივ მეთოდებს, რომლებიც ქცევას წარმოადგენს.

მაგალითად, თუ პიროვნების ობიექტს ვქმნით, შეგვიძლია შევქმნათ კერძო ველები, რომ შევინახოთ პირის სახელი, გვარი და მისამართი. ამ სამი ველის მნიშვნელობები გაერთიანებულია ობიექტის მდგომარეობის შესაქმნელად. ჩვენ ასევე შეგვიძლია შევქმნათ მეთოდი, სახელწოდებით displayPersonDetails, რათა აჩვენოთ ეკრანზე სახელი, გვარი და მისამართი.

შემდეგი, ჩვენ უნდა გავაკეთოთ ქცევები, რომლებიც წვდომენ და შეცვალონ ობიექტის მდგომარეობა. ეს შეიძლება განხორციელდეს სამი გზით:

  • კონსტრუქტორის მეთოდები. ობიექტის ახალი ნიმუში იქმნება კონსტრუქტორის მეთოდის გამოძახებით. ღირებულებების გადატანა შესაძლებელია კონსტრუქტორის მეთოდით ობიექტის საწყისი მდგომარეობის დასადგენად. აღსანიშნავია ორი საინტერესო რამ. ჯერ ჯავა არ ამტკიცებს, რომ ყველა ობიექტს აქვს კონსტრუქტორის მეთოდი. თუ მეთოდი არ არსებობს, მაშინ ობიექტის მდგომარეობა იყენებს კერძო ველების ნაგულისხმევი მნიშვნელობებს. მეორე, შეიძლება არსებობდეს ერთზე მეტი კონსტრუქტორის მეთოდი. მეთოდები განსხვავდება იმ ფასეულობათა მიხედვით, რომლებიც მათ გადაეცემა და როგორ განსაზღვრავენ ისინი ობიექტის საწყის მდგომარეობას.
  • დაშვების მეთოდები. ყოველი კერძო სფეროსთვის შეგვიძლია შევქმნათ საჯარო მეთოდი, რომელიც დაუბრუნებს მის მნიშვნელობას.
  • მუტატორის მეთოდები. ყოველი კერძო სფეროსთვის შეგვიძლია შევქმნათ საჯარო მეთოდი, რომელიც განსაზღვრავს მის მნიშვნელობას. თუ გსურთ პირადი ველი წაკითხული მხოლოდ მას არ შექმნათ მუტატორის მეთოდი.

მაგალითად, ჩვენ შეგვიძლია დავაყენოთ პიროვნების ობიექტი, რომ ჰქონდეს ორი კონსტრუქტორი. პირველი არ მიიღებს რაიმე მნიშვნელობებს და უბრალოდ განსაზღვრავს ობიექტს, რომ ჰქონდეს ნაგულისხმევი მდგომარეობა (მაგ., სახელი, გვარი და მისამართი ცარიელი სტრიქონები იქნება). მეორე ადგენს საწყის მნიშვნელობებს სახელი და გვარი მასში გადატანილი მნიშვნელობებიდან. ჩვენ ასევე შეგვიძლია შევქმნათ სამი დაშვების მეთოდი, სახელწოდებით getFirstName, getLastName და getAddress, რომლებიც უბრალოდ დააბრუნებენ შესაბამის კერძო ველების მნიშვნელობებს. შექმენით მუტატორი ველი, სახელწოდებით setAddress, რომელიც დააწესებს მისამართის პირად ველს.

დაბოლოს, ჩვენ ვმალავთ ჩვენი ობიექტის შესრულების დეტალებს. სანამ ჩვენ ვიცავთ სახელმწიფო სფეროების პირად დაცვას და ქცევას, არ არსებობს საშუალება გარე სამყაროსთვის იცოდეს როგორ მუშაობს შინაგანად.

მონაცემთა Encapsulation მიზეზები

მონაცემთა დაბლოკვის ძირითადი მიზეზებია:

  • ობიექტის მდგომარეობის კანონიერად დაცვა. იძულებით, რომ ობიექტის პირადი ველი შეიცვალოს საზოგადოებრივი მეთოდით, ჩვენ შეგვიძლია დავამატოთ კოდი მუტატორის ან კონსტრუქტორის მეთოდებში, რათა დავრწმუნდეთ, რომ მნიშვნელობა არის კანონიერი. მაგალითად, წარმოიდგინეთ, რომ ობიექტი ობიექტი ასევე ინახავს მომხმარებლის სახელს, როგორც მისი სახელმწიფოს ნაწილს. მომხმარებლის სახელი გამოიყენება ჯავის პროგრამაში, რომელსაც ჩვენ ვაშენებთ, მაგრამ ათი პერსონაჟის სიგრძეზე შეზღუდულია. რისი გაკეთება შეგვიძლია არის მომხმარებლის სახელის მუტატორის მეთოდით დამატება, რაც დარწმუნებულია, რომ სახელი არ არის მითითებული ათი სიმბოლოზე მეტი მნიშვნელობით.
  • ჩვენ შეგვიძლია შევცვალოთ ობიექტის განხორციელება. სანამ ჩვენ შევინარჩუნებთ საჯარო მეთოდებს იგივე, ჩვენ შეგვიძლია შევცვალოთ როგორ მუშაობს ობიექტი კოდის დარღვევის გარეშე, რომელიც მას იყენებს. ობიექტი არსებითად არის "შავი ყუთი" იმ კოდისა, რომელსაც მას ეძახიან.
  • ობიექტების ხელახლა გამოყენება. ჩვენ შეგვიძლია გამოვიყენოთ იგივე ობიექტები სხვადასხვა აპლიკაციებში, რადგან ჩვენ შევადგინეთ მონაცემები და როგორ ხდება ეს მანიპულირება ერთ ადგილზე.
  • თითოეული ობიექტის დამოუკიდებლობა. თუ ობიექტი არასწორედ არის კოდირებული და იწვევს შეცდომებს, ადვილია შესამოწმებლად და გამოსწორებით, რადგან კოდი ერთ ადგილზეა. სინამდვილეში, ობიექტის შემოწმება შესაძლებელია დანარჩენი პროგრამისგან დამოუკიდებლად. იგივე პრინციპი შეიძლება გამოყენებულ იქნას დიდ პროექტებში, სადაც სხვადასხვა პროგრამისტს შეუძლია დაავალოს სხვადასხვა ობიექტების შექმნა.