0% found this document useful (0 votes)
60 views24 pages

Object Oriented Programming: Objective-C

Objective-C is an object-oriented programming language that adds Smalltalk-style messaging to the C programming language. It was created in the 1980s and adopted by NeXT and later Apple. Objective-C uses dynamic typing and just-in-time compilation for flexibility at runtime. Programmers define classes with interfaces and implementations, and send messages between instances to call methods. Classes and objects are allocated and freed dynamically using alloc, release, and autorelease.

Uploaded by

psrikanth88
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
60 views24 pages

Object Oriented Programming: Objective-C

Objective-C is an object-oriented programming language that adds Smalltalk-style messaging to the C programming language. It was created in the 1980s and adopted by NeXT and later Apple. Objective-C uses dynamic typing and just-in-time compilation for flexibility at runtime. Programmers define classes with interfaces and implementations, and send messages between instances to call methods. Classes and objects are allocated and freed dynamically using alloc, release, and autorelease.

Uploaded by

psrikanth88
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 24

Object Oriented Programming

Objective-C

Presentation by Kevin Layer

CS 331
21 April 2008
Overview
 Objective-C is an object oriented language.
 follows ANSI C style coding with methods
from Smalltalk
 There is no formal written standard
 Relies mostly on libraries written by others
 Flexible almost everything is done at runtime.
 Dynamic Binding
 Dynamic Typing
 Dynamic Linking
Inventors
 Objective-C was invented by two men,
Brad Cox and Tom Love.
 Both were introduced to Smalltalk at ITT
in 1981
 Cox thought something like Smalltalk
would be very useful to application
developers
 Cox modified a C compiler and by 1983
he had a working Object-oriented
extension to C called OOPC.
Development
 Tom Love acquired a commercial copy
of Smalltalk-80 while working for
Schlumberger Research
 With direct access Smalltalk, Love
added more to OOPC making the final
product, Objective-C.
 In 1986 they release Objective-C
through their company “Stepstone”
NeXT and NeXTSTEP
 In 1988 Steve Jobs acquires Objective-
C license for NeXT
 Used Objective-C to build the
NeXTSTEP Operating System
 Objective-C made interface design for
NeXTSTEP much easier
 NeXTSTEP was derived from BSD Unix
 In 1995 NeXT gets full rights to
Objective-C from Stepstone
OPENSTEP API
 Developed in 1993 by NeXT and Sun
 An effort to make NeXTSTEP-like
Objective-C implementation available to
other platforms.
 In order to be OS independent
 Removed dependency on Mach Kernel
 Made low-level data into classes
 Paved the way for Mac OS X, GNUstep
Apple and Mac OS X
 NeXT is taken over by Apple in 1996
and put Steve Jobs and his Objective-C
libraries to work
 Redesigned Mac OS to use objective-C
similar to that of NeXTSTEP
 Developed a collection of libraries
named “Cocoa” to aid GUI development
 Release Mac OS X (ten), which was
radically different than OS 9, in March
2001
The Cocoa API
 Primarily the most frequently used
frameworks nowadays.
 Developed by Apple from NeXTSTEP and
OPENSTEP
 Has a set of predefined classes and types
such as NSnumber, NSstring, Nsdate, etc.
 NS stands for NeXT-sun
 Includes a root class NSObject where words
like alloc, retain, and release come from
Dynamic Language
 Almost everything is done at runtime
 Uses dynamic typing, linking, and
binding
 This allows for greater flexibility
 Minimizes RAM and CPU usage
To Import or Include?

#import head.h

 C/C++’s #include will insert head.h into


the code even if its been added before.
 Obj-C’s #import checks if head.h has
been imported beforehand.
Messages
 Almost every object manipulation is
done by sending objects a message
 Two words within a set of brackets, the
object identifier and the message to
send.
[Identifier message ]

 Because of dynamic binding, the


message and receiver are joined at
runtime
Basic syntax structure

C++ syntax
void function(int x, int y, char z);
Object.function(x, y, z);

Objective-C syntax
-(void) function:(int)x, (int)y, (char)z;
[Object function:x, y, z];
Keyword: id
 The word ‘id’ indicates an identifier for
an object much like a pointer in c++
 This uses dynamic typing
 For example, if Pen is a class…

extern id Pen;
id myPen;
myPen = [Pen new ];
(Cox, 59)
Memory Allocation
 Objects are created dynamically
through the keyword, “alloc”
 Objects are dynamically deallocated
using the words “release” and
“autorelease”
 autorelease dealocates the object once
it goes out of scope.
 NOTE: None of these words are built-in
Ownership
 Objects are initially owned by the id that
created them.
 Like C++ pointers, multiple IDs can use
the same object.
 However, like in C++ if one ID releases
the object, then any remaining pointers
will be referencing invalid memory.
 A method like “retain” can allow the
object to stay if one ID releases it.
Prototyping functions
 When declaring or implementing
functions for a class, they must begin
with a + or -
 + indicates a “class method” that can
only be used by the class itself. In other
words, they’re for private functions.
 - indicates “instance methods” to be
used by the client program (public
functions).
Class Declaration (Interface)
#import <Cocoa/Cocoa.h>
@interface Node : NSObject { node.h
Node *link;
int contents;
}
+(id)new;
-(void)setContent:(int)number;
-(void)setLink:(Node*)next;
-(int)getContent;
-(Node*)getLink;
@end
Class Definition (Implementation)
#import "node.h”
@implementation Node
+(id)new
node.m
{ return [Node alloc];}
-(void)setContent:(int)number
{contents = number;}
-(void)setLink:(Node*)next {
[link autorelease];
link = [next retain];
}
-(int)getContent
{return contents;}
-(Node*)getLink
{return link;}
@end
C++ VS. Objective-C
 Adds OOP,  Only adds OOP to C
metaprogramming  Has no standard
and generic library; is dependant
programming to C on other libraries
 Comes with a std  Mostly used for
library application building
 Has numerous uses  Simpler way of
 Large and complex handling classes
code for OOP and objects
Objective-C 2.0
 In October 2007, Apple Inc. releases
Objective-C 2.0 for Mac OS 10.5
(Leopard)
 Adds automatic garbage collection
 Instance Methods (public functions) are
defined differently using @property
linkList class linkList.m

#import "linkList.h" -(void)append:(int)value {


@implementation linkList id last = [head getLink];
while ([last getLink] != nil)
+(id)new {last = [last getLink];}
{return [linkList alloc];} id temp = [Node new];
-(void)insert:(int)value { [temp setContent:value];
id temp = [Node new]; [last setLink:temp];
[temp release];
[temp setContent:value]; }
[temp setLink:head]; -(void)remove {
head = [temp retain]; id temp = head;
[temp release]; head = [head getLink];
[temp release];
} }
-(int)getValue {
return [head getContent];}
@end
Stack class
#import "linkList.h”
@interface Stack : linkList #import "stack.h”
{}
+(id)new; @implementation Stack
-(void)push:(int)value; +(id)new
-(int)pop; {return [Stack alloc];}
@end
-(void)push:(int)value
{[self insert:value];}

-(int)pop {
int ret = [self getValue];
[self remove];
return ret;
}
stack.h stack.m
@end
Example: main.c
#import "stack.h”
int main(){
Stack *s = [Stack new]; main.c
[s push:1];
[s push:2];
printf("%d\t", [s pop]);
[s push:3];
printf("%d\t", [s pop]);
printf("%d\t", [s pop]);
[s release];
return 0;
}

$ gcc -x objective-c node.m linkList.m stack.m main.c -framework Cocoa -o


stackTest
$./stackTest
2 3 1
References
 Cox, Brad. Object Oriented Programming: an
Evolutioary Approach
 Sebesta, Robert. Concepts of Programming
Languages
 Apple Inc. Apple Developer Connection
http://developer.apple.com
 Stevenson, Scott. Theocacao
http://theocacao.com/document.page/510
 Various Authors. Wikipedia: the Free
Encyclopedia
http://en.wikipedia.org

You might also like