ობიექტი არის ერთმანეთთან დაკავშირებული სტრუქტურისა და ქცევის პროგრამული ნაკრები. პროგრამული ობიექტები არის იმ რეალური ობიეტების მოდელები, რომელსაც ყოველდღიურ ცხოვრებაში ვხვდებით.
ობიექტები არის გასაღები ორიენტზე ორიენტირებული ტექნოლოგიის გასაგებად. თუ მიმოიხედავ რეალურ სამყაროში არსებულ ბევრ ობიექტს დაინახავ. მაგალითად: ძაღლი, მაგიდა, ტელევიზორის სადგამი თუ ველოსიპედი.
რეალურ სამყაროში ობიექტებს ორი რამ ახასიათებს: ყველა მათგანს აქვს სტრუქტურა და ქცევა. ძაღლებს აქვთ სტრუქტურა (სახელი, ფერი, ჯიში) და ქცევა (ყეფა, კუდის ქიცინი). ველოსიპედებსაც აქვს სტრუქტურა (მიმდინარე სიჩქარე, პედლის ტრიალის მიმდინარე ტემპი) და ქცევა (სიჩქარის ცვლა, პედლის ტრიალის ტემპის ცვლა, დამუხრუჭება). რეალური საგნების სტრუქტურისა და ქცევის ამოცნობა კარგი გზაა იმისათვის, რომ დაიწყო სწორი ფიქრი ობიექტზე ორიენტირებული პროგრამირების ცნებაზე.
ახლა რამდენიმე წუთი დაუთმე იმას, რომ დააკვირდე გარე სამყაროს, რომელიც უშუალოდ შენს გარშემოა. თითოეულ ობიექტთან მიმართებაში კი დაფიქრდი, თუ რა სტრუქტურა აქვს და რა შესაძლო ქცევა შეიძლება მას ჰქონდეს. ჩაიწერე თითოეული შენიშვნა. როცა ამას გააკეთებ, შენიშნავ რომ რეალური საგნები სხვადასხვა სირთულისაა. მაგალითად ნათურას შეიძლება ჰქონდეს ორი შესაძლო სტრუქტურა/მდგომარეობა: ანთებული და ჩამქვრალი; და ორი შესაძლო ქცევა: ანთება და ჩაქრობა. თუმცა რადიოს შეიძლება მეტი სტრუქტურა ჰქონდეს: ჩართული, გამორთული, მიმდინარე ხმის სიმაღლე, მიმდინარე სიხშირე; და ქცევა: ჩართვა, გამორთვა, ხმის აწევა, ხმის ჩაწევა, სიხშირის მოძებნა, სიხშირის არჩევა. შეიძლება ასევე შენიშნო, რომ ზოგიერთი ობიექტი სხვა ობიექტსაც მოიცავდეს. ეს რეალური ობიექტები ითარგმნება ობიექტზე ორიენტირებული პროგრამირების ენაზე.
პროგრამული ობიექტები იგივე კონცეფციის არის: შედგება სტრუქტურისა და მასთან დაკავშირებული ქცევისგან. ობიექტი ინახავს მის სტრუქტურას ველებში/fields (ზოგიერთ ენაში 'ცვლადები') და გავლენას ახდენს მის ქცევაზე მეთოდების/methods (ზოგიერთ ენაში 'ფუნქციების') საშუალებით. მეთოდები მოქმედებს ობიექტის შიდა სტრუქტურაში, როგორც ძირითადი კომუნიკაციის მექანიზმი ობიეტებს შორის. შიდა სტრუქტურის დამალვა და მოთხოვნა იმისა, რომ ყველა ურთიერთქმედება მოხდეს ობიექტის მეთოდების საშუალებით ცნობილია, როგორც მონაცემთა ენკაფსულაცია/data encapsulation - ობიექტზე ორიენტირებული პროგრამირების ფუნდამეტური პრინციპი.
სტრუქტურის მინიჭებითა (მიმდინარე სიჩქარე, პედლის ტრიალის მიმდინარე ტემპი) და სტრუქტურის ცვლილებისათვის საჭირო მეთოდების შემუშავებით, ობიექტის კონტროლი შესაძლებელი ხდება საჭიროების მიხედვით. მაგალითად, თუ ველოსიპედს მხოლოდ ექვსი სიჩქარე აქვს, სიჩქარის შემცვლელი მეთოდი უგულებელყოფს ყველა სიდიდეს, რომელიც ერთზე ნაკლებია და ექვსზე მეტი.
კოდის შექმნას ინდივიდუალური პროგრამული ობიექტებისთვის რამდენიმე დადებითი მხარე აქვს, მათ შორის:
პროგრამული ობიექტები იგივე კონცეფციის არის: შედგება სტრუქტურისა და მასთან დაკავშირებული ქცევისგან. ობიექტი ინახავს მის სტრუქტურას ველებში/fields (ზოგიერთ ენაში 'ცვლადები') და გავლენას ახდენს მის ქცევაზე მეთოდების/methods (ზოგიერთ ენაში 'ფუნქციების') საშუალებით. მეთოდები მოქმედებს ობიექტის შიდა სტრუქტურაში, როგორც ძირითადი კომუნიკაციის მექანიზმი ობიეტებს შორის. შიდა სტრუქტურის დამალვა და მოთხოვნა იმისა, რომ ყველა ურთიერთქმედება მოხდეს ობიექტის მეთოდების საშუალებით ცნობილია, როგორც მონაცემთა ენკაფსულაცია/data encapsulation - ობიექტზე ორიენტირებული პროგრამირების ფუნდამეტური პრინციპი.
სტრუქტურის მინიჭებითა (მიმდინარე სიჩქარე, პედლის ტრიალის მიმდინარე ტემპი) და სტრუქტურის ცვლილებისათვის საჭირო მეთოდების შემუშავებით, ობიექტის კონტროლი შესაძლებელი ხდება საჭიროების მიხედვით. მაგალითად, თუ ველოსიპედს მხოლოდ ექვსი სიჩქარე აქვს, სიჩქარის შემცვლელი მეთოდი უგულებელყოფს ყველა სიდიდეს, რომელიც ერთზე ნაკლებია და ექვსზე მეტი.
კოდის შექმნას ინდივიდუალური პროგრამული ობიექტებისთვის რამდენიმე დადებითი მხარე აქვს, მათ შორის:
- მოდულარობა: ობიექტის საწყისი კოდი შეიძლება დაიწეროს და შეინახოს სხვა დანარჩენი ობიექტების საწყისი კოდისგან დამოუკიდებლად. ერთხელ შექმნილი, ის უკვე ადვილად ეშვება სისტემაში.
- ინფორმაციის დაფარვა: მხოლოდ ობიექტის მეთოდებთან ურთიერთქმედებით, მისი შიდა მექანიზმის დეტალები დაფარულია გარე სამყაროსთვის.
- კოდის ხელმეორედ გამოყენება: თუ ობიექტი უკვე არსებობს (თუნდაც სხვა პროგრამისტის დაწერილი), შენ შეგიძლია გამოიყენო ის ობიექტი შენს პროგრამაში. ეს სპეციალისტებს აძლევს საშუალებას, შეამოწმონ/დატესტონ კომპლექსური, სპეციფიური დანიშნულების ობიექტები, რომლებიც შეგიძლია ეჭვის გარეშე გამოიყენო შენს კოდში.
- შეცვლის შესაძლებლობა და შემოწმების სიადვილე: ტუ კონკრეტული ობიექტი პრობლემატური გახდა, შენ შეიძლია, უბრალოდ შეცვალო სხვა ობიექტით. ეს არის რეალურ სამყაროში მექანიკური პრობლემის აღმოფხვრის ანალოგი. თუ მანქანის საკეტი გატყდება, შენ შეგიძლია ის შეცვალო და არა მთლიანი მანქანა.
No comments:
Post a Comment