Lecture 2#- (Intro to Obj-C, Interface Builder and Xcode)

2,162 views
2,083 views

Published on

MVC

Calculator

Objective-C

Declaring and implementing objects

Sending messages between objects



Interface Builder

“Wiring up” objects to send messages to each other

Setting up the properties of objects

Xcode

Managing all your code

Running your application in the simulator

Published in: Education
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,162
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
69
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Lecture 2#- (Intro to Obj-C, Interface Builder and Xcode)

  1. 1. CS193p Spring 2010 Wednesday, March 31, 2010
  2. 2. Enrollment Closed You should have received an e-mail It will confirm your grading status (P/NC or not) As usual, we were oversubscribed for grading option Sorry to anyone who didn’t get the option they wanted If you received e-mail, but are not in Axess, do it! ... and an invitation to iPhone Developer Program If not, e-mail cs193p@cs.stanford.edu. Wednesday, March 31, 2010
  3. 3. Communication E-mail Questions are best sent to cs193p@cs.stanford.edu Sending directly to instructor or TA’s risks slow response. Web Site Very Important! http://cs193p.stanford.edu All lectures, assignments, code, etc. will be there. This site will be your best friend when it comes to getting info. Wednesday, March 31, 2010
  4. 4. Office Hours Andreas Monday 6pm to 8pm Thursday 6pm to 8pm Gates B26A Bring your Stanford ID card for access to the building Sonali Friday 11am to 1pm Thursday 1pm to 3pm Gates B26B Wednesday, March 31, 2010
  5. 5. Today’s Topics MVC Calculator Objective-C Declaring and implementing objects Sending messages between objects Interface Builder “Wiring up” objects to send messages to each other Setting up the properties of objects Xcode Managing all your code Running your application in the simulator Wednesday, March 31, 2010
  6. 6. Our Calculator CalculatorViewController Controller UILabel Model View UIButton UIButton CalculatorBrain UIButton UIButton UIButton UIButton UIButton Wednesday, March 31, 2010
  7. 7. Header File (public API) Model @interface @end Wednesday, March 31, 2010
  8. 8. Header File (public API) Model @interface CalculatorBrain @end Wednesday, March 31, 2010
  9. 9. Header File (public API) Model #import <Foundation/Foundation.h> @interface CalculatorBrain : NSObject @end Wednesday, March 31, 2010
  10. 10. Header File (public API) Model #import <Foundation/Foundation.h> @interface CalculatorBrain : NSObject { double operand; } @end Wednesday, March 31, 2010
  11. 11. Header File (public API) Model #import <Foundation/Foundation.h> @interface CalculatorBrain : NSObject { double operand; } - (void)setOperand:(double)anOperand; - (double)performOperation:(NSString *)operation; @end Wednesday, March 31, 2010
  12. 12. Header File (public API) Model #import <Foundation/Foundation.h> @interface CalculatorBrain : NSObject { double operand; } Specifying void as the return type means that this method returns no value. - (void)setOperand:(double)anOperand; - (double)performOperation:(NSString *)operation; @end Wednesday, March 31, 2010
  13. 13. Header File (public API) Model #import <Foundation/Foundation.h> @interface CalculatorBrain : NSObject { double operand; } The name of this method is “setOperand:” - (void)setOperand:(double)anOperand; - (double)performOperation:(NSString *)operation; @end Wednesday, March 31, 2010
  14. 14. Header File (public API) Model #import <Foundation/Foundation.h> @interface CalculatorBrain : NSObject { double operand; } It takes one argument, a double called “anOperand” - (void)setOperand:(double)anOperand; - (double)performOperation:(NSString *)operation; @end Wednesday, March 31, 2010
  15. 15. Header File (public API) Model #import <Foundation/Foundation.h> @interface CalculatorBrain : NSObject { double operand; } Don’t forget a semicolon here! - (void)setOperand:(double)anOperand; - (double)performOperation:(NSString *)operation; @end Wednesday, March 31, 2010
  16. 16. Header File (public API) Model #import <Foundation/Foundation.h> @interface CalculatorBrain : NSObject { double operand; } - (void)setOperand:(double)anOperand; - (double)performOperation:(NSString *)operation; This method returns a double. @end Wednesday, March 31, 2010
  17. 17. Header File (public API) Model #import <Foundation/Foundation.h> @interface CalculatorBrain : NSObject { double operand; } - (void)setOperand:(double)anOperand; - (double)performOperation:(NSString *)operation; It takes a pointer to an NSString object as its argument. That’s right, we’re passing an object to this method. @end Wednesday, March 31, 2010
  18. 18. Header File (public API) Model #import <Foundation/Foundation.h> @interface CalculatorBrain : NSObject { double operand; } - (void)setOperand:(double)anOperand; - (double)performOperation:(NSString *)operation; - (NSArray *)foo:(int)zap bar:(id)pow; @end Wednesday, March 31, 2010
  19. 19. Header File (public API) Model #import <Foundation/Foundation.h> @interface CalculatorBrain : NSObject { double operand; } - (void)setOperand:(double)anOperand; - (double)performOperation:(NSString *)operation; - (NSArray *)foo:(int)zap bar:(id)pow; @end This method takes two arguments and is called “foo:bar:” Wednesday, March 31, 2010
  20. 20. Header File (public API) Model #import <Foundation/Foundation.h> @interface CalculatorBrain : NSObject { double operand; } - (void)setOperand:(double)anOperand; - (double)performOperation:(NSString *)operation; - (NSArray *)foo:(int)zap bar:(id)pow; It returns a pointer to an NSArray @end (a collection class in Foundation). Wednesday, March 31, 2010
  21. 21. Header File (public API) Model #import <Foundation/Foundation.h> @interface CalculatorBrain : NSObject { double operand; } - (void)setOperand:(double)anOperand; - (double)performOperation:(NSString *)operation; - (NSArray *)foo:(int)zap bar:(id)pow; @end The second argument is of type “id” This means “a pointer to *ANY* kind of object!” Wednesday, March 31, 2010
  22. 22. Header File (public API) Model #import <Foundation/Foundation.h> @interface CalculatorBrain : NSObject { double operand; } - (void)setOperand:(double)anOperand; - (double)performOperation:(NSString *)operation; - (NSArray *)foo:(int)zap bar:(id)pow; @end Wednesday, March 31, 2010
  23. 23. Header File (public API) Model #import <Foundation/Foundation.h> @interface CalculatorBrain : NSObject { double operand; } - (void)setOperand:(double)anOperand; - (double)performOperation:(NSString *)operation; @end Wednesday, March 31, 2010
  24. 24. Implementation File (private and public) Model #import “CalculatorBrain.h” @implementation CalculatorBrain @end Wednesday, March 31, 2010
  25. 25. Implementation File (private and public) Model #import “CalculatorBrain.h” @implementation CalculatorBrain - (void)setOperand:(double)anOperand { <code goes here> } - (double)performOperation:(NSString *)operation { <code goes here> return aDouble; } @end Wednesday, March 31, 2010
  26. 26. Implementation File (private and public) Model #import “CalculatorBrain.h” @implementation CalculatorBrain No semicolon this time! - (void)setOperand:(double)anOperand { <code goes here> } - (double)performOperation:(NSString *)operation { <code goes here> return aDouble; } @end Wednesday, March 31, 2010
  27. 27. Implementation File (private and public) Model #import “CalculatorBrain.h” @implementation CalculatorBrain - (void)setOperand:(double)anOperand { <code goes here> } - (double)performOperation:(NSString *)operation { [operation sendMessage:argument]; return aDouble; } @end Wednesday, March 31, 2010
  28. 28. Implementation File (private and public) Model #import “CalculatorBrain.h” @implementation CalculatorBrain - (void)setOperand:(double)anOperand { <code goes here> } - (double)performOperation:(NSString *)operation { [operation sendMessage:argument]; return aDouble; } Square brackets mean “send a message.” @end Wednesday, March 31, 2010
  29. 29. Implementation File (private and public) Model #import “CalculatorBrain.h” @implementation CalculatorBrain - (void)setOperand:(double)anOperand { <code goes here> } - (double)performOperation:(NSString *)operation { [operation sendMessage:argument]; return aDouble; } @end This is the object to send the message to (in this case, the NSString called “operation” that was passed as an argument to performOperation:). Wednesday, March 31, 2010
  30. 30. Implementation File (private and public) Model #import “CalculatorBrain.h” @implementation CalculatorBrain - (void)setOperand:(double)anOperand { <code goes here> } - (double)performOperation:(NSString *)operation { [operation sendMessage:argument]; return aDouble; } This is the message to send. @end Wednesday, March 31, 2010
  31. 31. Implementation File (private and public) Model #import “CalculatorBrain.h” @implementation CalculatorBrain - (void)setOperand:(double)anOperand { <code goes here> } - (double)performOperation:(NSString *)operation { [operation sendMessage:argument]; return aDouble; } And this is its one (in this case) argument. @end Wednesday, March 31, 2010
  32. 32. Controller #import <UIKit/UIKit.h> @interface CalculatorViewController : UIViewController { CalculatorBrain * brain; IBOutlet UILabel * display; } - (IBAction)digitPressed:(UIButton *)sender; - (IBAction)operationPressed:(UIButton *)sender; @end Wednesday, March 31, 2010
  33. 33. Controller Our Controller inherits from UIViewController. UIKit #import <UIKit/UIKit.h> supports MVC primarily through this class. @interface CalculatorViewController : UIViewController { CalculatorBrain * brain; IBOutlet UILabel * display; } - (IBAction)digitPressed:(UIButton *)sender; - (IBAction)operationPressed:(UIButton *)sender; @end Wednesday, March 31, 2010
  34. 34. Controller #import <UIKit/UIKit.h> @interface CalculatorViewController : UIViewController { CalculatorBrain * brain; This is going to point to our CalculatorBrain Model IBOutlet UILabel * display; } - (IBAction)digitPressed:(UIButton *)sender; - (IBAction)operationPressed:(UIButton *)sender; @end Wednesday, March 31, 2010
  35. 35. These hook up to our View Controller #import <UIKit/UIKit.h> @interface CalculatorViewController : UIViewController { CalculatorBrain * brain; IBOutlet UILabel * display; } - (IBAction)digitPressed:(UIButton *)sender; - (IBAction)operationPressed:(UIButton *)sender; @end Wednesday, March 31, 2010
  36. 36. View Controller #import <UIKit/UIKit.h> @interface CalculatorViewController : UIViewController { Model CalculatorBrain * brain; IBOutlet UILabel * display; } - (IBAction)digitPressed:(UIButton *)sender; - (IBAction)operationPressed:(UIButton *)sender; @end Wednesday, March 31, 2010
  37. 37. CalculatorViewController.xib Wednesday, March 31, 2010
  38. 38. “File’s Owner” is our Controller CalculatorViewController.xib Wednesday, March 31, 2010
  39. 39. Wednesday, March 31, 2010
  40. 40. Wednesday, March 31, 2010
  41. 41. Wednesday, March 31, 2010
  42. 42. Xcode A picture (or demo) is worth 1,000 words. Wednesday, March 31, 2010

×