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
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. 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. 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. 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. Our Calculator
CalculatorViewController
Controller
UILabel
Model View
UIButton UIButton
CalculatorBrain UIButton UIButton
UIButton UIButton UIButton
Wednesday, March 31, 2010
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. 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. 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
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. 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
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. 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. 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
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. 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. 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. 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