Objective-C/კლასის ინტერფეისი
Objective-C სინტაქსი კლასი შესაქმნელად ძალიან მარტივია. ის როგორც წესი ორი ნაწილისგან შედგება.
კლასის ინტერფეისი როგორ წესი ინახება .h გაფართოების ფაილში, რომლის სახელი ემთხვევა კლასის სახელს, და განსაზღვრავს ეგზემპლარის ცვლადებს და ღია მეთოდებს.
იმპლემნტაცია არის ფაილში გაფართოებით .m, და შეიცავს ინტერფეისში გამოცხადებული მეთოდების განხორციელებას. აქ აგრეთვე შეიძლება განისაზღვროს მეთოდები, რომლებიც არაა ხელმისაწვდომი ამ კლასის კლიენტისთვის.
ქვემოთ მოყვანილია მაგალითი, თუ როგორ შეიძლება გამოიყურებოდეს ინტერფეისი. კლასის სახელი Photo, ამიტომ ფაილს ქვია Photo.h:
#import <Cocoa/Cocoa.h>
@interface Photo : NSObject {
NSString* caption;
NSString* photographer;
}
@end
პირველ რიგში ჩვენ ვაიმპორტებთ Cocoa.h ინტერფეისს, რათა ჩავრთოთ ყველა ძირითადი კლასი Cocoa პროგრამიდან. #import დირექტივი გვიცავს ერთი და იგივე გამოცხადების მრავალჯერადი გამოყენებისგან (განსხვავებით #include-სგან).
@interface აღნიშნავს რომ ეს არის Photo კლასის დეკლარაცია. ოწრერტილი განსაზღვრავს დედა კლასს, რომელიცაა NSObject.
ფიგურულ ფრჩხილებში გვაქვს ორი ეგზემპლარის ცვლადი: caption და photographer. ორივე NSStrings ტიპის, თუმცა ისინი შეიძლება იყოს ნებისმიერი ობიექტური ტიპის, id-ს ჩათვლით.
@end სიმბოლო აბოლოებს ინტერფეისის გამოცხადებას.
მეთოდების გამოცხადება
[რედაქტირება]დავამატოთ რამოდენიმე მიმღები ობიექტი ეგზემპლარის ცვლადებისთვის:
#import <Cocoa/Cocoa.h>
@interface Photo : NSObject {
NSString* caption;
NSString* photographer;
}
- caption;
- photographer;
@end
Objective-C მეთოდები ჩვეულებრივ არ იყენებენ "get" პეფიქსს. მინუსის ნიშანი მეთოდის სახელის წინ აღნიშნავს, რომ ეს არის ეგზემპლარის მეთოდი. პლიუსის ნიშანი მეთოდის სახელის წინ აღნიშნავს, რომ ეს არის კლასის მეთოდი.
საწყისად კომპილატორი თვლის, რომ მეთოდი აბრუბენს id ობიექტს, და რომ ყველა შემომავალი სიდიდე არის id ტიპის. წინა კოდი, ტექნიკურად სწორია, მაგრამ ის არადამახასიათებელია. დავამატოთ მასში დასაბრუნებელი სიდიდის ტიპი ცხადად:
#import <Cocoa/Cocoa.h>
@interface Photo : NSObject {
NSString* caption;
NSString* photographer;
}
- (NSString*) caption;
- (NSString*) photographer;
@end
ახლა დავამატოთ მნიშვნელობის დამყენებელი მეთოდები:
#import <Cocoa/Cocoa.h>
@interface Photo : NSObject {
NSString* caption;
NSString* photographer;
}
- (NSString*) caption;
- (NSString*) photographer;
- (void) setCaption: (NSString*)input;
- (void) setPhotographer: (NSString*)input;
@end
მნიშვნელობის დამყენებელი არ არის აუცილებელი აბრუნებდეს რამეს. ამიტომ ჩვენ მას მიუთითეთ void დაბრუნების ტიპში.