ობიექტებთან და კლასის სხვა ინსტანციებთან მუშაობისას, ატრიბუტებზე წვდომა პროგრამისტის ერთ-ერთი ჩვეულებრივი ოპერაციაა. ობიექტებში შენახულ გარკვეულ მონაცემებზე წვდომის მიღება შეიძლება რთული იყოს, მათთვის უსაფრთხოების მეთოდების გათვალისწინებით. ასე რომ, კერძო და დაცული დამაკონკრეტებლების მიერ დახურული ატრიბუტები შეიძლება ამოღებულ იქნას კლასის ინსტანციიდან მხოლოდ იმავე ან ბავშვის (დაცული) კლასის ობიექტის კუთვნილი მეთოდით.
ინსტრუქციები
Ნაბიჯი 1
შექმენით ობიექტი ან მაჩვენებელი იმ კლასის იმ ინსტანციისთვის, რომლის ატრიბუტიც გჭირდებათ თქვენს პროგრამაში. ასეთი ოპერაციის სტანდარტული კონსტრუქციაა CMyClass myObj1. ზოგჯერ, ობიექტის ინიციალიზაციისთვის, გარკვეული პარამეტრები უნდა გადასცეთ კლასის კონსტრუქტორს. ამ შემთხვევაში, ობიექტის შექმნის ჩანაწერი შეიძლება ასე გამოიყურებოდეს: CMyClass myObj1 (param1, param2, param3), სადაც CMyClass კლასის სახელია, myObj1 არის შექმნილი ობიექტის სახელი და ჩამოთვლილია ყველა პარამეტრი, რომელსაც ითხოვს კონსტრუქტორი. ფრჩხილებში. კლასის ინსტანციის მაჩვენებელი იქმნება შემდეგნაირად: CMyClass * pObj1 = new CMyClass (param1, param2, param3).
ნაბიჯი 2
ატრიბუტის გამოძახების უმარტივესი გზაა პროგრამის ნებისმიერ ადგილას პირდაპირ მითითება. ამასთან, ეს შესაძლებელია მხოლოდ ღია მონაცემებისთვის, რომელიც აღწერილია კლასში საჯარო მოდიფიკატორით. ობიექტის საშუალებით პირდაპირი წვდომა ასე გამოიყურება: myObj1.attr1, სადაც attr1 არის ამ კლასის ატრიბუტი. მაჩვენებლისთვის ზარი იქნება: pObj1–> attr1.
ნაბიჯი 3
თუ ატრიბუტი, რომელზეც უნდა მიმართოთ, დამალული სტატუსი აქვს და აღწერილია კერძო მოდიფიკატორის კლასში, მაშინ მასზე წვდომა შესაძლებელია მხოლოდ იმავე კლასის კუთვნილი მეთოდით. კლასის მეთოდს ან ფუნქციას საჯარო სტატუსი უნდა ჰქონდეს. კლასს დაამატეთ ახალი მეთოდი, სადაც დაწერეთ საჭირო ატრიბუტის დამუშავება. ამ შემთხვევაში, პარამეტრების გადაცემა შესაძლებელია ფუნქციაზე, რაც დამოკიდებულია იმის მიხედვით, თუ რომელი მნიშვნელობისაა შესრულებული გარკვეული მოქმედებები. თავისთავად ფუნქციას ასევე შეუძლია დააბრუნოს მონაცემები, მაგალითად ატრიბუტის შინაარსი. C ++ პროგრამის კოდი, რომელიც ახორციელებს ორივე ფუნქციას კერძო ატრიბუტთან მუშაობისთვის: CMyClass class {protection: int attr1; // public ატრიბუტი: void funcA1 (int param) {attr1 = param; } int funcA2 () {return attr1; }};
ნაბიჯი 4
ამრიგად, კერძო ატრიბუტის attr1 მნიშვნელობის დასაყენებლად, დარეკეთ იმავე კლასის მეთოდის გამოყენებით ადრე შექმნილი ობიექტის გამოყენებით: myObj1.funcA1 (10) - მსგავსი იმპლიცირებული ოპერაციით, მნიშვნელობა 10 მოთავსებულია Attr1 ატრიბუტში. კლასის ინსტანციის მაჩვენებელთან მუშაობისას მსგავსი ოპერაცია ასე გამოიყურება: рObj1–> funcA (10). კერძო ატრიბუტის attr1 მოსაძიებლად და მასში შენახული მნიშვნელობის გასარკვევად, დარეკეთ კლასის სხვა მეთოდზე: int Res = myObj1.funcA2 (). ამ შემთხვევაში, მთელ ცვლადს Res მიენიჭება დამალული კლასის ცვლადის მნიშვნელობა.
ნაბიჯი 5
თუ საჭიროა ბავშვის სტატუსის მქონე ატრიბუტის დარეკვა ბავშვთა კლასების ყველა ობიექტში, პირდაპირ მიმართეთ მის ცვლადს. ამასთან, უცხოური კლასების ფუნქციებში მუშაობისას დაცულ მონაცემებზე წვდომა უნდა იქნას მიღებული ზემოთ აღწერილი გზით.
ნაბიჯი 6
ობიექტის შექმნის გარეშე ატრიბუტის მოსაწვევად, კლასში მისი ცვლადი გამოაცხადეთ როგორც სტატიკური შემდეგი კონსტრუქციის გამოყენებით: static int attr1. ამ შემთხვევაში, თქვენ შეგიძლიათ აიღოთ ატრიბუტი პროგრამის კოდის ნებისმიერ წერტილში, მითითებით ჩანაწერი: CMyClass:: attr1.