Objective-C
                vs. C++ / Java




Studenckie Koło Naukowe “MacKN”
Błażej Biesiada
Agenda
• Co to jest Obj-C?
• Historia
• Dlaczego Obj-c?
• Składnia
• Elementy charakterystyczne
• Co dalej?
Co to jest Obj-C?

• skrót od Objective-C ;-)
• rozszerzenie języka C
• obiektowość oparta na Smalltalku-u
• wykorzystywan...
Historia

StepStone    NeXT      GNU Obj-C

  1986        1988       1993



 Apple      Mac OS X   Obj-C 2.0
  1996      ...
Dlaczego Obj-C?

• Cocoa
• iPhone OS
• Objective-C 2.0
• A dlaczego C++? Think different!
[obj msg] vs. obj.met()


[obiekt wiadomosc];
[obiekt wiadomosc: arg1: arg2: arg3];
[obiekt ustawSzerokosc: arg1 Wysokosc:...
*.m vs. *.cpp
//ClassName.h                          //ClassName.m

@interface ClassName : ItsSuperclass   @implementation...
val / setVal vs. getVal / setVal


• sekcje @private, @protected, @public
• domyślnie @protected
• Key Value Coding, czyli...
id vs. void

• id - typ wskaźnikowy
• void - brak wyniku funkcji
• NIL - obiekt używany zamiast NULL
@try vs. try
Cup *cup = [[Cup alloc] init];

@try {

     [cup fill];

}

@catch (NSException *exception) {

     NSLog(@q...
protokoły vs. interfejsy

@protocol MyProtocol
                                 @interface MyClass ( MyProtocol )
- (void)...
@synchronized() vs. synchronized


- (void)criticalMethod
{
    @synchronized(self) {
        // Critical code.
        .....
Inne różnice

• #import vs. #include
• self vs. this
• [super msg] vs. super.met()
Properties, czyli coś nowego
 @interface MyClass : NSObject
 {
        NSString *value;
 }
 @property(copy, readwrite) NSS...
Kategorie klas
#import quot;ClassName.hquot;
@interface ClassName ( CategoryName )
       // deklaracje metod
@end




#im...
Coś więcej?

• Rozszerzenia klas
• Fast enumeration
• współpraca z C++
Co dalej?


“The Objective-C 2.0 Programming Language”
        http://developer.apple.com/
www.mackn.agh.edu.pl
Dziękuję za uwagę!
Upcoming SlideShare
Loading in …5
×

Objective C

2,707
-1

Published on

Objective C

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
2,707
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
35
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Objective C

  1. 1. Objective-C vs. C++ / Java Studenckie Koło Naukowe “MacKN” Błażej Biesiada
  2. 2. Agenda • Co to jest Obj-C? • Historia • Dlaczego Obj-c? • Składnia • Elementy charakterystyczne • Co dalej?
  3. 3. Co to jest Obj-C? • skrót od Objective-C ;-) • rozszerzenie języka C • obiektowość oparta na Smalltalku-u • wykorzystywany głównie w Mac OS X
  4. 4. Historia StepStone NeXT GNU Obj-C 1986 1988 1993 Apple Mac OS X Obj-C 2.0 1996 2001 2007
  5. 5. Dlaczego Obj-C? • Cocoa • iPhone OS • Objective-C 2.0 • A dlaczego C++? Think different!
  6. 6. [obj msg] vs. obj.met() [obiekt wiadomosc]; [obiekt wiadomosc: arg1: arg2: arg3]; [obiekt ustawSzerokosc: arg1 Wysokosc: arg2 Glebokosc: arg3];
  7. 7. *.m vs. *.cpp //ClassName.h //ClassName.m @interface ClassName : ItsSuperclass @implementation ClassName { + (id)alloc { float height; //... BOOL filled; } NSColor *fillColor; - (void)display { } //... + (id)alloc; } - (void)display; @end @end
  8. 8. val / setVal vs. getVal / setVal • sekcje @private, @protected, @public • domyślnie @protected • Key Value Coding, czyli nie tylko konwencja
  9. 9. id vs. void • id - typ wskaźnikowy • void - brak wyniku funkcji • NIL - obiekt używany zamiast NULL
  10. 10. @try vs. try Cup *cup = [[Cup alloc] init]; @try { [cup fill]; } @catch (NSException *exception) { NSLog(@quot;main: Caught %@: %@quot;, [exception name], [exception reason]); } @finally { [cup release]; }
  11. 11. protokoły vs. interfejsy @protocol MyProtocol @interface MyClass ( MyProtocol ) - (void)requiredMethod; { @optional int myVal; - (void)anOptionalMethod; } - (void)anotherOptionalMethod; - (void)myOwnClassMethod; @required @end - (void)anotherRequiredMethod; @end
  12. 12. @synchronized() vs. synchronized - (void)criticalMethod { @synchronized(self) { // Critical code. ... } }
  13. 13. Inne różnice • #import vs. #include • self vs. this • [super msg] vs. super.met()
  14. 14. Properties, czyli coś nowego @interface MyClass : NSObject { NSString *value; } @property(copy, readwrite) NSString *value; @end @implementation MyClass @synthesize value; @end
  15. 15. Kategorie klas #import quot;ClassName.hquot; @interface ClassName ( CategoryName ) // deklaracje metod @end #import quot;ClassName+CategoryName.hquot; @implementation ClassName ( CategoryName ) // definicje metod @end
  16. 16. Coś więcej? • Rozszerzenia klas • Fast enumeration • współpraca z C++
  17. 17. Co dalej? “The Objective-C 2.0 Programming Language” http://developer.apple.com/
  18. 18. www.mackn.agh.edu.pl
  19. 19. Dziękuję za uwagę!

×