learning development mobile apps for iphone ipad
DESCRIPTION
Modeling Real-world Entities with ObjectsTRANSCRIPT
![Page 1: Learning Development Mobile apps for iPhone iPad](https://reader036.vdocuments.mx/reader036/viewer/2022081511/5a4d1b877f8b9ab0599bd4ce/html5/thumbnails/1.jpg)
Objects and Classes
Learning & Developmenthttp://academy.telerik.com
Mobile apps for iPhone & iPad
![Page 2: Learning Development Mobile apps for iPhone iPad](https://reader036.vdocuments.mx/reader036/viewer/2022081511/5a4d1b877f8b9ab0599bd4ce/html5/thumbnails/2.jpg)
Table of Contents Classes and Objects
What are Objects? What are Classes? Object Pointers
Classes in Objective-C Declaring Class Properties and methods Init methods
Dynamic Binding
![Page 3: Learning Development Mobile apps for iPhone iPad](https://reader036.vdocuments.mx/reader036/viewer/2022081511/5a4d1b877f8b9ab0599bd4ce/html5/thumbnails/3.jpg)
Classes and ObjectsModeling Real-world Entities with
Objects
![Page 4: Learning Development Mobile apps for iPhone iPad](https://reader036.vdocuments.mx/reader036/viewer/2022081511/5a4d1b877f8b9ab0599bd4ce/html5/thumbnails/4.jpg)
What are Objects? Software objects model real-world objects or abstract concepts Examples:
bank, account, customer, dog, bicycle, queue
Real-world objects have states and behaviors Account' states:
holder, balance, type Account' behaviors:
withdraw, deposit, suspend
![Page 5: Learning Development Mobile apps for iPhone iPad](https://reader036.vdocuments.mx/reader036/viewer/2022081511/5a4d1b877f8b9ab0599bd4ce/html5/thumbnails/5.jpg)
What are Objects? (2) How do software objects implement real-world objects? Use variables/data to implement
states Use methods/functions to
implement behaviors An object is a software bundle of variables and related methods
![Page 6: Learning Development Mobile apps for iPhone iPad](https://reader036.vdocuments.mx/reader036/viewer/2022081511/5a4d1b877f8b9ab0599bd4ce/html5/thumbnails/6.jpg)
Objects Represent
6
checks people shopping list… numbers characters queues arrays
Things from the real world
Things from the computer world
![Page 7: Learning Development Mobile apps for iPhone iPad](https://reader036.vdocuments.mx/reader036/viewer/2022081511/5a4d1b877f8b9ab0599bd4ce/html5/thumbnails/7.jpg)
What is a Class? The formal definition of class:
Definition by Google
Classes act as templates from which an instance of an object is created at run time. Classes define the properties of the object and the methods used to control the object's behavior.
![Page 8: Learning Development Mobile apps for iPhone iPad](https://reader036.vdocuments.mx/reader036/viewer/2022081511/5a4d1b877f8b9ab0599bd4ce/html5/thumbnails/8.jpg)
Classes Classes provide the structure for objects Define their prototype, act as
template Classes define:
Set of attributes Represented by variables and
properties Hold their state
Set of actions (behavior) Represented by methods
A class defines the methods and types of data associated with an object
![Page 9: Learning Development Mobile apps for iPhone iPad](https://reader036.vdocuments.mx/reader036/viewer/2022081511/5a4d1b877f8b9ab0599bd4ce/html5/thumbnails/9.jpg)
Classes – Example
Account
+owner: Person+ammount: double
+suspend+deposit: (double) sum+withdraw: (double) sum
Class Name
Attributes
(Properties and Fields)
Operations
(Methods)
![Page 10: Learning Development Mobile apps for iPhone iPad](https://reader036.vdocuments.mx/reader036/viewer/2022081511/5a4d1b877f8b9ab0599bd4ce/html5/thumbnails/10.jpg)
Objects An object is a concrete instance of a particular class
Creating an object from a class is called instantiation
Objects have state Set of values associated to their
attributes Example:
Class: Account Objects: Ivan's account, Peter's
account
![Page 11: Learning Development Mobile apps for iPhone iPad](https://reader036.vdocuments.mx/reader036/viewer/2022081511/5a4d1b877f8b9ab0599bd4ce/html5/thumbnails/11.jpg)
Objects – Example
Account
+owner: Person+ammount: double
+suspend+deposit: (double) sum+withdraw: (double) sum
Class clarkAccount
+Owner="Clark Kent"+Ammount=200.0
bruceAccount
+Owner="Bruce Wayne"+Ammount=100000000.0
tonyAccount
+Owner="Tony Stark"+Ammount=100000000.9
Object
Object
Object
![Page 12: Learning Development Mobile apps for iPhone iPad](https://reader036.vdocuments.mx/reader036/viewer/2022081511/5a4d1b877f8b9ab0599bd4ce/html5/thumbnails/12.jpg)
Object Types and App Memory
![Page 13: Learning Development Mobile apps for iPhone iPad](https://reader036.vdocuments.mx/reader036/viewer/2022081511/5a4d1b877f8b9ab0599bd4ce/html5/thumbnails/13.jpg)
App Memory Every MAC OS X/iOS application has two places to hold the values of the app (variables and stuff) The Stack and the Heap
The stack is a fixed-sized stack data structure that holds primitive types and object pointers Only the address, not the object
itself The heap is the place where all objects live Their addresses are stored on the
stack
![Page 14: Learning Development Mobile apps for iPhone iPad](https://reader036.vdocuments.mx/reader036/viewer/2022081511/5a4d1b877f8b9ab0599bd4ce/html5/thumbnails/14.jpg)
Primitive Object Types
Some objects in Obj-C are passed by value They live on the stack and are
destroyed when out of scope Their value is copied when passed
as a parameter to a method, or when assigned to another object
NSInteger, NSUInteger, CGFloat, etc…
char, int, float, double, etc…
![Page 15: Learning Development Mobile apps for iPhone iPad](https://reader036.vdocuments.mx/reader036/viewer/2022081511/5a4d1b877f8b9ab0599bd4ce/html5/thumbnails/15.jpg)
Reference Object Types Other objects are passed by reference They live in the Heap, and only their
address in the Heap is passed Not copied, only their addresses
(references) NSObject, NSArray, NSString, etc… Instances of custom classes are also
stored on the heap
![Page 16: Learning Development Mobile apps for iPhone iPad](https://reader036.vdocuments.mx/reader036/viewer/2022081511/5a4d1b877f8b9ab0599bd4ce/html5/thumbnails/16.jpg)
Primitive and Reference Types
Live Demo
![Page 17: Learning Development Mobile apps for iPhone iPad](https://reader036.vdocuments.mx/reader036/viewer/2022081511/5a4d1b877f8b9ab0599bd4ce/html5/thumbnails/17.jpg)
Classes in Objective-CUsing Classes and their Class
Members
![Page 18: Learning Development Mobile apps for iPhone iPad](https://reader036.vdocuments.mx/reader036/viewer/2022081511/5a4d1b877f8b9ab0599bd4ce/html5/thumbnails/18.jpg)
Classes in Objective-C Classes – basic units that compose
programs Implementation is encapsulated
(hidden) Classes in Objective-C can contain:
Fields (member variables) Properties Methods
Every class in Objective-C has two files Public interface file (the .h file) Implementation file (the .m file)
![Page 19: Learning Development Mobile apps for iPhone iPad](https://reader036.vdocuments.mx/reader036/viewer/2022081511/5a4d1b877f8b9ab0599bd4ce/html5/thumbnails/19.jpg)
Fields Fields are data members of a class
Can be variables and constants (read-only)
All fields are private (they can be accessed only from the implementation of the class)
Accessing a field doesn’t invoke any actions of the object Just accesses its value
Most of the cases they are hidden from the world They live only in the implementation
part
![Page 20: Learning Development Mobile apps for iPhone iPad](https://reader036.vdocuments.mx/reader036/viewer/2022081511/5a4d1b877f8b9ab0599bd4ce/html5/thumbnails/20.jpg)
Accessing Fields
Constant fields can be only read Variable fields can be read and modified
Usually properties are used instead of directly accessing variable fields
![Page 21: Learning Development Mobile apps for iPhone iPad](https://reader036.vdocuments.mx/reader036/viewer/2022081511/5a4d1b877f8b9ab0599bd4ce/html5/thumbnails/21.jpg)
Creating Classes in Objective-C
Classes in Objective-C consists of two separate files - ClassName.h and ClassName.m ClassName.h contains the public
interface of the class Members that are accessible from
other objects ClassName.m contains the
implementations of the public interface and private members
![Page 22: Learning Development Mobile apps for iPhone iPad](https://reader036.vdocuments.mx/reader036/viewer/2022081511/5a4d1b877f8b9ab0599bd4ce/html5/thumbnails/22.jpg)
Creating ClassesLive Demo
![Page 23: Learning Development Mobile apps for iPhone iPad](https://reader036.vdocuments.mx/reader036/viewer/2022081511/5a4d1b877f8b9ab0599bd4ce/html5/thumbnails/23.jpg)
Properties
Properties look like fields Have name and type Can contain code, executed when
accessed Declared using the @property
directive
![Page 24: Learning Development Mobile apps for iPhone iPad](https://reader036.vdocuments.mx/reader036/viewer/2022081511/5a4d1b877f8b9ab0599bd4ce/html5/thumbnails/24.jpg)
Properties
Usually used for encapsulation They control the access to the data
fields They validate the given input
values Can contain more complex logic
Like parsing or converting data
![Page 25: Learning Development Mobile apps for iPhone iPad](https://reader036.vdocuments.mx/reader036/viewer/2022081511/5a4d1b877f8b9ab0599bd4ce/html5/thumbnails/25.jpg)
Properties Every property has two
components called accessors Getter
Called when the property is requested
double x = shape.x;
Setter Called when the property value is
changingshape.x = 4.5;
![Page 26: Learning Development Mobile apps for iPhone iPad](https://reader036.vdocuments.mx/reader036/viewer/2022081511/5a4d1b877f8b9ab0599bd4ce/html5/thumbnails/26.jpg)
Properties (2) Properties can be either:
Read-only Write-only Read-write By default they are read-write@interface@property (readonly) int size;@property int capacity;@end
![Page 27: Learning Development Mobile apps for iPhone iPad](https://reader036.vdocuments.mx/reader036/viewer/2022081511/5a4d1b877f8b9ab0599bd4ce/html5/thumbnails/27.jpg)
PropertiesLive Demo
![Page 28: Learning Development Mobile apps for iPhone iPad](https://reader036.vdocuments.mx/reader036/viewer/2022081511/5a4d1b877f8b9ab0599bd4ce/html5/thumbnails/28.jpg)
Properties:Getters and Setters
Properties provide a getter and a setter methods Used to execute some code when
assigning a value or getting the value of the property
By default: The setter method is called setPropertyName
The getter method is with the name of the property
@property int capacity;
-(int) capacity{ … }-(void) setCapacity { … }
![Page 29: Learning Development Mobile apps for iPhone iPad](https://reader036.vdocuments.mx/reader036/viewer/2022081511/5a4d1b877f8b9ab0599bd4ce/html5/thumbnails/29.jpg)
Properties:Getters and Setters
Live demo
![Page 30: Learning Development Mobile apps for iPhone iPad](https://reader036.vdocuments.mx/reader036/viewer/2022081511/5a4d1b877f8b9ab0599bd4ce/html5/thumbnails/30.jpg)
Instantiating Objects
![Page 31: Learning Development Mobile apps for iPhone iPad](https://reader036.vdocuments.mx/reader036/viewer/2022081511/5a4d1b877f8b9ab0599bd4ce/html5/thumbnails/31.jpg)
Instantiating Objects Objective-C provides two ways of instantiating objects Using init methods
Using factory methods
Person *p = [[Person alloc] init];
Person *p = [Person person];
Person *p = [[Person alloc] initWithFirstname: @"Peter"];
Person *p = [Person personWithFirstname: @"Peter"];
![Page 32: Learning Development Mobile apps for iPhone iPad](https://reader036.vdocuments.mx/reader036/viewer/2022081511/5a4d1b877f8b9ab0599bd4ce/html5/thumbnails/32.jpg)
Instantiating Objects Objective-C provides two ways of instantiating objects Using init methods
Using factory methods
Person *p = [[Person alloc] init];
Person *p = [Person person];
Person *p = [[Person alloc] initWithFirstname: @"Peter"];
Person *p = [Person personWithFirstname: @"Peter"];
Both are equally used and in best case both should
be present
![Page 33: Learning Development Mobile apps for iPhone iPad](https://reader036.vdocuments.mx/reader036/viewer/2022081511/5a4d1b877f8b9ab0599bd4ce/html5/thumbnails/33.jpg)
Init Methods
![Page 34: Learning Development Mobile apps for iPhone iPad](https://reader036.vdocuments.mx/reader036/viewer/2022081511/5a4d1b877f8b9ab0599bd4ce/html5/thumbnails/34.jpg)
Init Methods
Init methods are used to create objects They are regular methods that have
a special meaning in modern MAC/iOS apps ARC checks for methods with prefix
"init" and treat their result differently
![Page 35: Learning Development Mobile apps for iPhone iPad](https://reader036.vdocuments.mx/reader036/viewer/2022081511/5a4d1b877f8b9ab0599bd4ce/html5/thumbnails/35.jpg)
Init Methods Template
Init methods have a special template to follow:-(id) init{ self = [super init]; if (self) { //the parent is instantiated properly and can //continue instance specific stuff.. } return self;}
![Page 36: Learning Development Mobile apps for iPhone iPad](https://reader036.vdocuments.mx/reader036/viewer/2022081511/5a4d1b877f8b9ab0599bd4ce/html5/thumbnails/36.jpg)
Multiple Init Methods ARC checks for methods with prefix
"init" All of the following are valid init
methods:@interface Person: NSObject
@ends
![Page 37: Learning Development Mobile apps for iPhone iPad](https://reader036.vdocuments.mx/reader036/viewer/2022081511/5a4d1b877f8b9ab0599bd4ce/html5/thumbnails/37.jpg)
Multiple Init Methods ARC checks for methods with prefix
"init" All of the following are valid init
methods:@interface Person: NSObject
@ends
-(id) init;
The default init methodProduces objects without parameters
![Page 38: Learning Development Mobile apps for iPhone iPad](https://reader036.vdocuments.mx/reader036/viewer/2022081511/5a4d1b877f8b9ab0599bd4ce/html5/thumbnails/38.jpg)
Multiple Init Methods ARC checks for methods with prefix
"init" All of the following are valid init
methods:@interface Person: NSObject
@ends
-(id) init;
-(id) initWithFullname: (NSString *) fullname;
init method that takes a single parameterHandles the role of "method overloading"
![Page 39: Learning Development Mobile apps for iPhone iPad](https://reader036.vdocuments.mx/reader036/viewer/2022081511/5a4d1b877f8b9ab0599bd4ce/html5/thumbnails/39.jpg)
Multiple Init Methods ARC checks for methods with prefix
"init" All of the following are valid init
methods:@interface Person: NSObject
@ends
-(id) init;
-(id) initWithFullname: (NSString *) fullname;
-(id) initWithFirstname: (NSString *) fname andLastName: (NSString *) lname;
init method that takes two parametersThe same as the others
![Page 40: Learning Development Mobile apps for iPhone iPad](https://reader036.vdocuments.mx/reader036/viewer/2022081511/5a4d1b877f8b9ab0599bd4ce/html5/thumbnails/40.jpg)
Multiple Init MethodsLive Demo
![Page 41: Learning Development Mobile apps for iPhone iPad](https://reader036.vdocuments.mx/reader036/viewer/2022081511/5a4d1b877f8b9ab0599bd4ce/html5/thumbnails/41.jpg)
Factory Methods
![Page 42: Learning Development Mobile apps for iPhone iPad](https://reader036.vdocuments.mx/reader036/viewer/2022081511/5a4d1b877f8b9ab0599bd4ce/html5/thumbnails/42.jpg)
Factory Methods
Factory methods are no more than hidden init methods They are class methods (the
message is sent to the class, instead of to a concrete object)
![Page 43: Learning Development Mobile apps for iPhone iPad](https://reader036.vdocuments.mx/reader036/viewer/2022081511/5a4d1b877f8b9ab0599bd4ce/html5/thumbnails/43.jpg)
Factory Methods (2)
By concept, factory methods' identifiers start with the name of the class, i.e.@interface Person: NSObject+(id) person;+(id) personWithFirstname: (NSString *) fname;@end
@implementation+(id) personWithFirstname: (NSString *) fname{ Person *p = [[Person alloc] init]; p.firstname = fname; return p;}@end
![Page 44: Learning Development Mobile apps for iPhone iPad](https://reader036.vdocuments.mx/reader036/viewer/2022081511/5a4d1b877f8b9ab0599bd4ce/html5/thumbnails/44.jpg)
Factory Meth0dsLive Demo
![Page 45: Learning Development Mobile apps for iPhone iPad](https://reader036.vdocuments.mx/reader036/viewer/2022081511/5a4d1b877f8b9ab0599bd4ce/html5/thumbnails/45.jpg)
форум програмиране, форум уеб дизайнкурсове и уроци по програмиране, уеб дизайн – безплатно
програмиране за деца – безплатни курсове и уроцибезплатен SEO курс - оптимизация за търсачки
уроци по уеб дизайн, HTML, CSS, JavaScript, Photoshop
уроци по програмиране и уеб дизайн за ученициASP.NET MVC курс – HTML, SQL, C#, .NET, ASP.NET MVC
безплатен курс "Разработка на софтуер в cloud среда"
BG Coder - онлайн състезателна система - online judge
курсове и уроци по програмиране, книги – безплатно от Наков
безплатен курс "Качествен програмен код"
алго академия – състезателно програмиране, състезанияASP.NET курс - уеб програмиране, бази данни, C#, .NET, ASP.NET
курсове и уроци по програмиране – Телерик академия
курс мобилни приложения с iPhone, Android, WP7, PhoneGapfree C# book, безплатна книга C#, книга Java, книга C# Дончо Минков - сайт за програмиране
Николай Костов - блог за програмиранеC# курс, програмиране, безплатно
?? ? ?
??? ?
?
? ?
??
?
?
? ?
Questions?
?
Objects and Classes
http://academy.telerik.com
![Page 46: Learning Development Mobile apps for iPhone iPad](https://reader036.vdocuments.mx/reader036/viewer/2022081511/5a4d1b877f8b9ab0599bd4ce/html5/thumbnails/46.jpg)
Homework1. Create classes for an event
manager app: Each event has title, category,
description, date and list of guests (strings)
Event manager can: Create event List all events List events by category Sort events by either date or title
![Page 47: Learning Development Mobile apps for iPhone iPad](https://reader036.vdocuments.mx/reader036/viewer/2022081511/5a4d1b877f8b9ab0599bd4ce/html5/thumbnails/47.jpg)
Homework (2)2. Create an iPhone application
using the event manager. Create two views:
One for listing events One for creating events Use the class from the previous
exercise Research about creating iPhone
apps Research about Seques and
transitions between different views