📖რა არის OOP

რა არის ობიექტი

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

echo gettype(True); // boolean
echo gettype(2); // integer
echo gettype(5.332); // double
echo gettype('hello'); // string
...

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

მაგალითად PHP-ში მსგავსი სტრუქტურა შეიძლება იყოს ასოციაციური მასივი

<?php
    
$figure = [
    "name" => "Horse",
    "color" => "Black",
    "position" => "B5",
];

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

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

გავაერთიანოთ შემდეგი ინფორმაცია

  • ფიგურის სახელი

  • ფერი

  • მიმდინარე პოზიცია

და შესაბამისი ფუნქციონალი

  • სვლის გაკეთება

  • მოწინააღმდეგის ფიგურის მოკვლა

  • და ა.შ

რას არის Object Oriented Programming

OOP-ის მიდგომაში ძირითადი ყურადღება გამახვილებულია თვითონ ოებიექტებზე და მონაცემებზე. რაც ნიშნავს რომ ჩვენს მთავარ ფოკუსს წარმოადგენს მონაცემების კლასების სახით დაყოფა და ამ კლასებში მათი თვისებებისა (მონაცემების) და მეთოდების (ფუნქციონალის) სწორად დაჯგუფება. სხვა სიტყვებით რომ ვთქვათ ჩვენი მთავარი მიზანია რეალური სამყაროს მოდელის აგება ობიექტების გამოყენებით. OOP განსაზღვრულია 4 ძირითადი კონცეფცია (იდეა) რომელთაც მოგვიანებით სათითაოდ განვიხილავთ. ესენია:

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

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

  • აბსტრაქცია

  • პოლიმორფიზმი

👉 რატომ OOP

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

👍 უპირატესობები

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

  • Reusability - მარტივია კოდის მრავალჯერ გამოყენება

  • Maintainability - მარტივია ახალი ფუნქციონალის დამატება და ძველის რედაქტირება

  • Easy to Understand - დეველოპერებისთვის ადვილი აღსაქმელია, როგორც კოდის ავტორისთვის ასევე უცხო პროგრამისტებისთვისაც.

  • Models Real World - რეალური სამყაროს მოდელს წარმოადგენს

  • Clean Code - გვეხმარება სუფთა კოდის წერაში

  • Extensibility - კლასების განვრცობის "დაექსთენდების" საშუალებით ნაკლები კოდის წერაა საჭირო

Last updated