Agile Iphone Development

  • 4,680 views
Uploaded on

Introductory presentation to Agile iPhone Development

Introductory presentation to Agile iPhone Development

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
  • Hi,
    Thanks for the presentation,

    Complexity is clear
    What Agile tools do you suggest to manage this mess!

    Salaam,
    Walid
    Are you sure you want to
    Your message goes here
No Downloads

Views

Total Views
4,680
On Slideshare
0
From Embeds
0
Number of Embeds
4

Actions

Shares
Downloads
0
Comments
1
Likes
9

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide












































































Transcript

  • 1. Garage Days Return: Agile iPhone Development
  • 2. Do you remember this?
  • 3. Do you remember this?
  • 4. Do you remember this?
  • 5. A kid with a good idea...
  • 6. Manic Miner
  • 7. The big guys...
  • 8. But...
  • 9. These changed the rules...
  • 10. What do you need to start?
  • 11. A Mac
  • 12. XCode
  • 13. An iPhone...
  • 14. Books
  • 15. But...
  • 16. OMG It’s ObjectiveC!
  • 17. Bigino ObjectiveC
  • 18. Smalltalk
  • 19. C
  • 20. Classes: declaration #import <Cocoa/Cocoa.h> @interface Photo : NSObject { NSString* caption; NSString* photographer; } - (NSString*) caption; - (NSString*) photographer; - (void) setCaption: (NSString*)input; - (void) setPhotographer: (NSString*)input; @end
  • 21. Classes: implementation #import "Photo.h" @implementation Photo // ... - (NSString*) caption { return caption; } - (NSString*) photographer { return photographer; } @end
  • 22. Method Invocation photo = [[Photo alloc] init]; [photo setCaption:@"Day at the Beach"]; output = [photo caption];
  • 23. First Reaction
  • 24. The Same in Java photo = new Photo(); photo.setCaption("Day at the Beach"); output = photo.caption();
  • 25. In ObjectiveC photo = [[Photo alloc] init]; [photo setCaption:@"Day at the Beach"]; output = [photo caption];
  • 26. Message Passing [obj method:parameter];
  • 27. Multiple Parameters - (void)insertObject:(id)anObject atIndex:(NSUInteger)index; //... [array insertObject:@"Hello, World!" atIndex:5];
  • 28. If you want... - (void)insertObject:(id)anObject :(NSUInteger)index; //... [array insertObject:@"Hello, World!" :5];
  • 29. Dynamic Invocation (id)anObject = [ factory getFor:par1 ] [array foo]; [array bar];
  • 30. No garbage collection!
  • 31. Counter based
  • 32. message counter alloc +1 copy +1 retain +1 release -1 autorelease -1
  • 33. If you’ll use an object take ownership retain
  • 34. If you own an object should release it release
  • 35. If you alloc or copy an object you own it release
  • 36. Collections take ownership
  • 37. - (void)printHello { NSString *string; string = [[NSString alloc] initWithString:@"Hello"]; NSLog(string); [string release]; }
  • 38. - (void)printHello { NSString *string; string = [NSString stringWithFormat:@"Hello"]; NSLog(string); }
  • 39. - (void)printWindowTitle { NSString *string; string = [myWindow title]; NSLog(string); }
  • 40. NSMutableArray *array; NSUInteger i; // ... for (i = 0; i < 10; i++) { NSNumber *allocedNumber = [[NSNumber alloc] initWithInteger: i]; [array addObject:allocedNumber]; [allocedNumber release]; }
  • 41. Be Careful!
  • 42. What about the tests?
  • 43. Unit Tests...
  • 44. Former SenTestingKit OCUnit
  • 45. TestCase Definition #import <SenTestingKit/SenTestingKit.h> #import "RpnCalculator.h" @interface RpnCalculatorTestCase : SenTestCase { RpnCalculator* rpnCalculator; } @end
  • 46. TestCase Implementation @implementation RpnCalculatorTestCase -(void)setUp{ rpnCalculator = [[RpnCalculator alloc]init]; } -(void)tearDown{ [rpnCalculator release]; } -(void)testShouldDisplayTwoNumbersWhenNumbersAreSeparatedByEnter{ [rpnCalculator put:@"1"]; [rpnCalculator put:@"enter"]; [rpnCalculator put:@"2"]; STAssertEqualObjects(@"1n2",rpnCalculator.display,nil); }
  • 47. TestCase Implementation #define STAssertNil(a1, description, ...) #define STAssertNotNil(a1, description, ...) #define STAssertTrue(expression, description, ...) #define STAssertFalse(expression, description, ...) #define STAssertEqualObjects(a1, a2, description, ...) #define STAssertEquals(a1, a2, description, ...) #define STFail(description, ...) #define STAssertTrueNoThrow(expression, description, ...) #define STAssertFalseNoThrow(expression, description, ...) //....
  • 48. XCode Integration
  • 49. XCode Integration
  • 50. XCode in a Nutshell
  • 51. Useful Shortcuts Esc - Name Completion
  • 52. Useful Shortcuts ⌘S - Save
  • 53. Useful Shortcuts ⌘B - Build
  • 54. Useful Shortcuts ⌥⌘↑ - HeaderSource
  • 55. Conclusions
  • 56. The Market Asks For Apps
  • 57. The Market Asks For Apps
  • 58. More Apps...
  • 59. More Apps...
  • 60. More Apps!
  • 61. Lot to Improve
  • 62. Be Good Kids:
  • 63. Test First!
  • 64. Questions?
  • 65. Coding Dojo Rules
  • 66. Randori
  • 67. Silence
  • 68. Suggest
  • 69. KataRpnCalculator
  • 70. 20 5 / => (20/5) = 4 4 2 + 3 - => (4+2)-3 = 3 3 5 8 * 7 + * => 3*((5*8)+7) = 141
  • 71. Let’s Start!