; ობიექტზე ორიენტირებული პროგრამირება და პროცედურული პროგრამირება - IT Academy STEP Tbilisi ობიექტზე ორიენტირებული პროგრამირება და პროცედურული პროგრამირება - IT Academy STEP Tbilisi

თბილისი, ჯანო ბაგრატიონის 6

ობიექტზე ორიენტირებული პროგრამირება და პროცედურული პროგრამირება

oop-vs-procedural-programming

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

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

განმარტება

არ არსებობს საერთაშორისოდ აღიარებული სტანდარტი, როცა საქმე ტერმინების განმარტებას ეხება. მარტივად რომ ვთქვათ, ობიექტზე ორიენტირებული პროგრამირება არის ისეთი სტილი, რომელიც მონაცემებს ობიექტებად მიიჩნევს თავისი ატრიბუტებით და მეთოდებით, რომელიც შეიძლება გამოყენებული იყოს ამ ობიექტებზე და ასევე მემკვიდრეობით მიიღოს სხვა ობიექტებმა. Java იმ ენის კარგი მაგალითია, რომელიც ამ კონცეფციას იყენებს. მაგრამ Java მულტი-პარადიგმების ენაა, იგი პროცედურული პროგრამირებისთვის ნაცნობ რამდენიმე კონცეფციას იყენებს. პროცედურული პროგრამირება მეორეს მხრივ არის იმპერატიული პროგრამირების ტიპი, სადაც განცხადებები პროცედურებშია ამოქმედებული. მათი უკან დაბრუნება შესაძლებელია საჭიროების შემთხვევაში. C ენა იყენებს პროცედურულ პროგრამირებას.

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

პროცედურულ პროგრამირებას ობიექტები არ სჭირდება.მისი სახელიდან გამომდინარე მას აქვს პროცედურები, რომლებიც შეიძლება იყოს მონაცემების სტრუქტურები, რუტინები და სუბრუტინები.

ტერმინოლოგია

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

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

მემკვიდრეობა

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

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

ქვეტიპები

ობიექტზე ორიენტირებულ პროგრამირებაში შეიძლება ქვეტიპების პოლიმორფიზმის მიღწევა. მონაცემთა ტიპის (სუპერ ტიპის) ელემენტებისთვის დაწერილი ფუნქცია შეიძლება ავამუშაოთ სხვა, დაკავშირებულ მონაცემთა ტიპის (ქვეტიპის) ელემენტებზე. სხვა სიტყვებით რომ ვთქვათ, ჩანაცვლების პრინციპი შედის ძალაში. შესაძლებელია ერთი ტიპის ობიექტების ჩანაცვლება სხვა ტიპის ობიექტებით თუ ტიპებს შორის არის “is-a-subtype-of” ურთიერთობა. ობიექტზე ორიენტირებული პროგრამირება მრავალმხრივია და ჩანაცვლების განხორციელება შესაძლებელია სხვა თვისებების შეცვლის გარეშე.

პროცედურულ პროგრამირებას ამის საშუალება არ აქვს. ქვეტიპების და სუპერ ტიპების დეკლარირება არ ხდება. პროცედურულ პროგრამირებაში ქვეტიპის ქცევის მიღწევაც შეუძლებელია.

ინკაფსულაცია

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

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

რეგისტრაცია

სახელი, გვარი*
ტელეფონი*
E-mail*
სად გაეცანით ინფორმაციას ღია კარის დღის შესახებ?*


ახალი ამბები