სხვაობა კლასებსა და სტრუქტურებს შორის

სხვაობა კლასებსა და სტრუქტურებს შორის
სხვაობა კლასებსა და სტრუქტურებს შორის

ვიდეო: სხვაობა კლასებსა და სტრუქტურებს შორის

ვიდეო: სხვაობა კლასებსა და სტრუქტურებს შორის
ვიდეო: მართკუთხა პარალელეპიპედის ზედაპირის ფართობი 2024, ივლისი
Anonim

კლასები სტრუქტურების წინააღმდეგ

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

რა არის კლასები?

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

რა არის სტრუქტურები?

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

რა განსხვავებაა კლასებსა და სტრუქტურებს შორის?

მიუხედავად იმისა, რომ კლასები და სტრუქტურები მსგავსი კონსტრუქტებია, რომლებიც გვხვდება პროგრამირების ენებში, მათ აქვთ დახვეწილი განსხვავებები. როგორც წესი, კლასი არის სტრუქტურის გაფართოება და, შესაბამისად, სტრუქტურებს აქვთ გარკვეული შედარებითი შეზღუდვები. მაგალითად, სტრუქტურები შეიძლება ჩაითვალოს ისევე, როგორც კლასები C++-ში, მაგრამ წევრები არ არის საჯარო ნაგულისხმევად კლასებში (სტრუქტურებისგან განსხვავებით).ეს რეალურად ნიშნავს, რომ თქვენ შეგიძლიათ განსაზღვროთ კლასი და სტრუქტურა ზუსტად იგივე მახასიათებლებით C++-ში შესაბამისი წვდომის მოდიფიკატორების გამოყენებით. თუმცა C-ში სტრუქტურები არ შეიძლება შეიცავდეს რაიმე ფუნქციას ან გადატვირთულ ოპერაციებს. საკვანძო სიტყვები class და struct გამოიყენება კლასის და სტრუქტურის განსაზღვრისთვის C++-ში, შესაბამისად. რაც შეეხება. NET ენებს (C, VB. NET და ა.შ.), კლასი არის საცნობარო ტიპი, ხოლო სტრუქტურა არის მნიშვნელობის ტიპი. და, როგორც წესი, სტრუქტურები გამოიყენება პატარა ობიექტებისთვის, მაგრამ კლასები გამოიყენება უფრო დიდი ობიექტებისთვის, რომლებიც ინახება მეხსიერებაში უფრო ხანგრძლივად.

გირჩევთ: