SlideShare una empresa de Scribd logo
1 de 42
Descargar para leer sin conexión
CS193p
                            Spring 2010




Wednesday, March 31, 2010
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
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
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
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
Our Calculator
                               CalculatorViewController

                                     Controller

                                                          UILabel



                            Model                         View
                                               UIButton              UIButton
                 CalculatorBrain                    UIButton  UIButton
                                               UIButton    UIButton UIButton



Wednesday, March 31, 2010
Header File (public API)


                                                       Model

          @interface




          @end


Wednesday, March 31, 2010
Header File (public API)


                                                       Model

          @interface CalculatorBrain




          @end


Wednesday, March 31, 2010
Header File (public API)


                                                       Model
          #import <Foundation/Foundation.h>

          @interface CalculatorBrain : NSObject




          @end


Wednesday, March 31, 2010
Header File (public API)


                                                       Model
          #import <Foundation/Foundation.h>

          @interface CalculatorBrain : NSObject
          {
                      double operand;
          }




          @end


Wednesday, March 31, 2010
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
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
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
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
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
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
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
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
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
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
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
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
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
Implementation File
                            (private and public)

                                                   Model
          #import “CalculatorBrain.h”

          @implementation CalculatorBrain




          @end


Wednesday, March 31, 2010
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
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
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
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
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
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
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
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
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
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
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
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
CalculatorViewController.xib


Wednesday, March 31, 2010
“File’s Owner” is our
                    Controller

   CalculatorViewController.xib


Wednesday, March 31, 2010
Wednesday, March 31, 2010
Wednesday, March 31, 2010
Wednesday, March 31, 2010
Xcode



                 A picture (or demo) is worth 1,000 words.




Wednesday, March 31, 2010

Más contenido relacionado

Destacado

Destacado (7)

Lecture 06
Lecture 06Lecture 06
Lecture 06
 
Lecture 03
Lecture 03Lecture 03
Lecture 03
 
Lecture 04
Lecture 04Lecture 04
Lecture 04
 
String slide
String slideString slide
String slide
 
String handling(string class)
String handling(string class)String handling(string class)
String handling(string class)
 
The Outcome Economy
The Outcome EconomyThe Outcome Economy
The Outcome Economy
 
The Six Highest Performing B2B Blog Post Formats
The Six Highest Performing B2B Blog Post FormatsThe Six Highest Performing B2B Blog Post Formats
The Six Highest Performing B2B Blog Post Formats
 

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

Model-Driven Software Development - Introduction & Overview
Model-Driven Software Development - Introduction & OverviewModel-Driven Software Development - Introduction & Overview
Model-Driven Software Development - Introduction & OverviewEelco Visser
 
Ios fundamentals with ObjectiveC
Ios fundamentals with ObjectiveCIos fundamentals with ObjectiveC
Ios fundamentals with ObjectiveCMadusha Perera
 
MongoDB Java Development - MongoBoston 2010
MongoDB Java Development - MongoBoston 2010MongoDB Java Development - MongoBoston 2010
MongoDB Java Development - MongoBoston 2010Eliot Horowitz
 
Creating Clean Code with AOP (T3CON10)
Creating Clean Code with AOP (T3CON10)Creating Clean Code with AOP (T3CON10)
Creating Clean Code with AOP (T3CON10)Robert Lemke
 
SQLite Techniques
SQLite TechniquesSQLite Techniques
SQLite Techniquesjoaopmaia
 
Introducing protobuf in Swift
Introducing protobuf in SwiftIntroducing protobuf in Swift
Introducing protobuf in SwiftYusuke Kita
 
Objective-C A Beginner's Dive (with notes)
Objective-C A Beginner's Dive (with notes)Objective-C A Beginner's Dive (with notes)
Objective-C A Beginner's Dive (with notes)Altece
 
Data Loading for Ext GWT
Data Loading for Ext GWTData Loading for Ext GWT
Data Loading for Ext GWTSencha
 
Briefly Rust - Daniele Esposti - Codemotion Rome 2017
Briefly Rust - Daniele Esposti - Codemotion Rome 2017Briefly Rust - Daniele Esposti - Codemotion Rome 2017
Briefly Rust - Daniele Esposti - Codemotion Rome 2017Codemotion
 
Streams of information - Chicago crystal language monthly meetup
Streams of information - Chicago crystal language monthly meetupStreams of information - Chicago crystal language monthly meetup
Streams of information - Chicago crystal language monthly meetupBrian Cardiff
 
Python programming lanuguage
Python programming lanuguagePython programming lanuguage
Python programming lanuguageBurhan Ahmed
 
MDSD for iPhone and Android
MDSD for iPhone and AndroidMDSD for iPhone and Android
MDSD for iPhone and AndroidHeiko Behrens
 
Functional Patterns for C++ Multithreading (C++ Dev Meetup Iasi)
Functional Patterns for C++ Multithreading (C++ Dev Meetup Iasi)Functional Patterns for C++ Multithreading (C++ Dev Meetup Iasi)
Functional Patterns for C++ Multithreading (C++ Dev Meetup Iasi)Ovidiu Farauanu
 

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

Model-Driven Software Development - Introduction & Overview
Model-Driven Software Development - Introduction & OverviewModel-Driven Software Development - Introduction & Overview
Model-Driven Software Development - Introduction & Overview
 
Ios fundamentals with ObjectiveC
Ios fundamentals with ObjectiveCIos fundamentals with ObjectiveC
Ios fundamentals with ObjectiveC
 
Reversing Google Protobuf protocol
Reversing Google Protobuf protocolReversing Google Protobuf protocol
Reversing Google Protobuf protocol
 
C++ Programming
C++ ProgrammingC++ Programming
C++ Programming
 
C++ Programming
C++ ProgrammingC++ Programming
C++ Programming
 
MongoDB Java Development - MongoBoston 2010
MongoDB Java Development - MongoBoston 2010MongoDB Java Development - MongoBoston 2010
MongoDB Java Development - MongoBoston 2010
 
Creating Clean Code with AOP (T3CON10)
Creating Clean Code with AOP (T3CON10)Creating Clean Code with AOP (T3CON10)
Creating Clean Code with AOP (T3CON10)
 
Using SQLite
Using SQLiteUsing SQLite
Using SQLite
 
SQLite Techniques
SQLite TechniquesSQLite Techniques
SQLite Techniques
 
Iphone course 1
Iphone course 1Iphone course 1
Iphone course 1
 
Introducing protobuf in Swift
Introducing protobuf in SwiftIntroducing protobuf in Swift
Introducing protobuf in Swift
 
Objective-C A Beginner's Dive (with notes)
Objective-C A Beginner's Dive (with notes)Objective-C A Beginner's Dive (with notes)
Objective-C A Beginner's Dive (with notes)
 
Data Loading for Ext GWT
Data Loading for Ext GWTData Loading for Ext GWT
Data Loading for Ext GWT
 
Briefly Rust - Daniele Esposti - Codemotion Rome 2017
Briefly Rust - Daniele Esposti - Codemotion Rome 2017Briefly Rust - Daniele Esposti - Codemotion Rome 2017
Briefly Rust - Daniele Esposti - Codemotion Rome 2017
 
Streams of information - Chicago crystal language monthly meetup
Streams of information - Chicago crystal language monthly meetupStreams of information - Chicago crystal language monthly meetup
Streams of information - Chicago crystal language monthly meetup
 
Python programming lanuguage
Python programming lanuguagePython programming lanuguage
Python programming lanuguage
 
Android Architecture components
Android Architecture componentsAndroid Architecture components
Android Architecture components
 
MDSD for iPhone and Android
MDSD for iPhone and AndroidMDSD for iPhone and Android
MDSD for iPhone and Android
 
Hems
HemsHems
Hems
 
Functional Patterns for C++ Multithreading (C++ Dev Meetup Iasi)
Functional Patterns for C++ Multithreading (C++ Dev Meetup Iasi)Functional Patterns for C++ Multithreading (C++ Dev Meetup Iasi)
Functional Patterns for C++ Multithreading (C++ Dev Meetup Iasi)
 

Último

18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf
18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf
18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdfssuser54595a
 
Nutritional Needs Presentation - HLTH 104
Nutritional Needs Presentation - HLTH 104Nutritional Needs Presentation - HLTH 104
Nutritional Needs Presentation - HLTH 104misteraugie
 
Mastering the Unannounced Regulatory Inspection
Mastering the Unannounced Regulatory InspectionMastering the Unannounced Regulatory Inspection
Mastering the Unannounced Regulatory InspectionSafetyChain Software
 
Advanced Views - Calendar View in Odoo 17
Advanced Views - Calendar View in Odoo 17Advanced Views - Calendar View in Odoo 17
Advanced Views - Calendar View in Odoo 17Celine George
 
Introduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher EducationIntroduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher Educationpboyjonauth
 
A Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy ReformA Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy ReformChameera Dedduwage
 
Hybridoma Technology ( Production , Purification , and Application )
Hybridoma Technology  ( Production , Purification , and Application  ) Hybridoma Technology  ( Production , Purification , and Application  )
Hybridoma Technology ( Production , Purification , and Application ) Sakshi Ghasle
 
Activity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdfActivity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdfciinovamais
 
Privatization and Disinvestment - Meaning, Objectives, Advantages and Disadva...
Privatization and Disinvestment - Meaning, Objectives, Advantages and Disadva...Privatization and Disinvestment - Meaning, Objectives, Advantages and Disadva...
Privatization and Disinvestment - Meaning, Objectives, Advantages and Disadva...RKavithamani
 
Employee wellbeing at the workplace.pptx
Employee wellbeing at the workplace.pptxEmployee wellbeing at the workplace.pptx
Employee wellbeing at the workplace.pptxNirmalaLoungPoorunde1
 
Sanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdfSanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdfsanyamsingh5019
 
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...Krashi Coaching
 
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...Marc Dusseiller Dusjagr
 
Software Engineering Methodologies (overview)
Software Engineering Methodologies (overview)Software Engineering Methodologies (overview)
Software Engineering Methodologies (overview)eniolaolutunde
 
Contemporary philippine arts from the regions_PPT_Module_12 [Autosaved] (1).pptx
Contemporary philippine arts from the regions_PPT_Module_12 [Autosaved] (1).pptxContemporary philippine arts from the regions_PPT_Module_12 [Autosaved] (1).pptx
Contemporary philippine arts from the regions_PPT_Module_12 [Autosaved] (1).pptxRoyAbrique
 
Separation of Lanthanides/ Lanthanides and Actinides
Separation of Lanthanides/ Lanthanides and ActinidesSeparation of Lanthanides/ Lanthanides and Actinides
Separation of Lanthanides/ Lanthanides and ActinidesFatimaKhan178732
 
How to Make a Pirate ship Primary Education.pptx
How to Make a Pirate ship Primary Education.pptxHow to Make a Pirate ship Primary Education.pptx
How to Make a Pirate ship Primary Education.pptxmanuelaromero2013
 

Último (20)

18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf
18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf
18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf
 
TataKelola dan KamSiber Kecerdasan Buatan v022.pdf
TataKelola dan KamSiber Kecerdasan Buatan v022.pdfTataKelola dan KamSiber Kecerdasan Buatan v022.pdf
TataKelola dan KamSiber Kecerdasan Buatan v022.pdf
 
Mattingly "AI & Prompt Design: Structured Data, Assistants, & RAG"
Mattingly "AI & Prompt Design: Structured Data, Assistants, & RAG"Mattingly "AI & Prompt Design: Structured Data, Assistants, & RAG"
Mattingly "AI & Prompt Design: Structured Data, Assistants, & RAG"
 
Nutritional Needs Presentation - HLTH 104
Nutritional Needs Presentation - HLTH 104Nutritional Needs Presentation - HLTH 104
Nutritional Needs Presentation - HLTH 104
 
Mastering the Unannounced Regulatory Inspection
Mastering the Unannounced Regulatory InspectionMastering the Unannounced Regulatory Inspection
Mastering the Unannounced Regulatory Inspection
 
Advanced Views - Calendar View in Odoo 17
Advanced Views - Calendar View in Odoo 17Advanced Views - Calendar View in Odoo 17
Advanced Views - Calendar View in Odoo 17
 
Introduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher EducationIntroduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher Education
 
A Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy ReformA Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy Reform
 
Hybridoma Technology ( Production , Purification , and Application )
Hybridoma Technology  ( Production , Purification , and Application  ) Hybridoma Technology  ( Production , Purification , and Application  )
Hybridoma Technology ( Production , Purification , and Application )
 
Activity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdfActivity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdf
 
Staff of Color (SOC) Retention Efforts DDSD
Staff of Color (SOC) Retention Efforts DDSDStaff of Color (SOC) Retention Efforts DDSD
Staff of Color (SOC) Retention Efforts DDSD
 
Privatization and Disinvestment - Meaning, Objectives, Advantages and Disadva...
Privatization and Disinvestment - Meaning, Objectives, Advantages and Disadva...Privatization and Disinvestment - Meaning, Objectives, Advantages and Disadva...
Privatization and Disinvestment - Meaning, Objectives, Advantages and Disadva...
 
Employee wellbeing at the workplace.pptx
Employee wellbeing at the workplace.pptxEmployee wellbeing at the workplace.pptx
Employee wellbeing at the workplace.pptx
 
Sanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdfSanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdf
 
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
 
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
 
Software Engineering Methodologies (overview)
Software Engineering Methodologies (overview)Software Engineering Methodologies (overview)
Software Engineering Methodologies (overview)
 
Contemporary philippine arts from the regions_PPT_Module_12 [Autosaved] (1).pptx
Contemporary philippine arts from the regions_PPT_Module_12 [Autosaved] (1).pptxContemporary philippine arts from the regions_PPT_Module_12 [Autosaved] (1).pptx
Contemporary philippine arts from the regions_PPT_Module_12 [Autosaved] (1).pptx
 
Separation of Lanthanides/ Lanthanides and Actinides
Separation of Lanthanides/ Lanthanides and ActinidesSeparation of Lanthanides/ Lanthanides and Actinides
Separation of Lanthanides/ Lanthanides and Actinides
 
How to Make a Pirate ship Primary Education.pptx
How to Make a Pirate ship Primary Education.pptxHow to Make a Pirate ship Primary Education.pptx
How to Make a Pirate ship Primary Education.pptx
 

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

  • 1. CS193p Spring 2010 Wednesday, March 31, 2010
  • 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
  • 7. Header File (public API) Model @interface @end Wednesday, March 31, 2010
  • 8. Header File (public API) Model @interface CalculatorBrain @end Wednesday, March 31, 2010
  • 9. Header File (public API) Model #import <Foundation/Foundation.h> @interface CalculatorBrain : NSObject @end Wednesday, March 31, 2010
  • 10. Header File (public API) Model #import <Foundation/Foundation.h> @interface CalculatorBrain : NSObject { double operand; } @end Wednesday, March 31, 2010
  • 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. 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
  • 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. 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
  • 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. 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
  • 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. 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. Implementation File (private and public) Model #import “CalculatorBrain.h” @implementation CalculatorBrain @end Wednesday, March 31, 2010
  • 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. 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. 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. 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
  • 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. 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. 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. 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. 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
  • 38. “File’s Owner” is our Controller CalculatorViewController.xib Wednesday, March 31, 2010
  • 42. Xcode A picture (or demo) is worth 1,000 words. Wednesday, March 31, 2010