Anda di halaman 1dari 31

PRIMER CONTACTO CON EL

ENTORNO DE DESARROLLO
Luis Montesano | | / \ -}++,
INDICE PARA HOY

Que vamos a aprender en este curso?

Introduccin a los conceptos bsicos

Programacin

Modelo MVC (Model-View-Controller)

Introduccin al entorno de desarrollo e instalacin en los


ordenadores

Hello world para el iPhone

Objective C

CONCEPTOS BSICOS
Programacin orientada a objetos:
Clase: un patrn para un objeto
Instancia u objeto
Mensaje: informacin enviada a un objeto
Mtodo: cdigo que responde a un mensaje
Herencia: estructura jerrquica de relacin entre clases (y objetos)
Subclase, superclase
Herencia de funcionalidades entre clases
Variable: almacenamiento de cada instancia (e.g. puntero a otro objeto)
Protocolo (o Interfaz): conjunto de mensajes a los que un objeto responde
PRIMERA CLASE DE OBJECTIVE C
#import <Foundation/Foundation.h>
@interface Student : NSObject {
NSString *name;
NSString *surname;
NSInteger *age;

}
-(void)setAge:(NSNumber *)myAge;
-(id)initWithName:(NSString *)fname Surname:(NSString *)sname Age: (NSInteger*)years
@end
PRIMERA CLASE DE OBJECTIVE C
#import <Foundation/Foundation.h>
@interface Student : NSObject {
NSString *name;
NSString *surname;
NSInteger *age;

}
-(void)setAge:(NSNumber *)myAge;
-(id)initWithName:(NSString *)fname Surname:(NSString *)sname Age: (NSInteger*)years
@end
PRIMERA CLASE DE OBJECTIVE C
#import <Foundation/Foundation.h>
@interface Student : NSObject {
NSString *name;
NSString *surname;
NSInteger *age;

}
-(void)setAge:(NSNumber *)myAge;
-(id)initWithName:(NSString *)fname Surname:(NSString *)sname Age: (NSInteger*)years
@end
PRIMERA CLASE DE OBJECTIVE C
#import <Foundation/Foundation.h>
@interface Student : NSObject {
NSString *name;
NSString *surname;
NSInteger *age;

}
-(void)setAge:(NSNumber *)myAge;
-(id)initWithName:(NSString *)fname Surname:(NSString *)sname Age: (NSInteger*)years
@end
Nombre de la clase / Superclase
PRIMERA CLASE DE OBJECTIVE C
#import <Foundation/Foundation.h>
@interface Student : NSObject {
NSString *name;
NSString *surname;
NSInteger *age;

}
-(void)setAge:(NSNumber *)myAge;
-(id)initWithName:(NSString *)fname Surname:(NSString *)sname Age: (NSInteger*)years
@end
Nombre de la clase / Superclase
Atributos
PRIMERA CLASE DE OBJECTIVE C
#import <Foundation/Foundation.h>
@interface Student : NSObject {
NSString *name;
NSString *surname;
NSNumber *age;

}
-(void)setAge:(NSNumber *)myAge;
-(id)initWithName:(NSString *)fname Surname:(NSString *)sname Age: (NSInteger*)years
@end
Include (resuelve las dependencias ciclicas)
PRIMERA CLASE DE OBJECTIVE C
#import <Foundation/Foundation.h>
@interface Student : NSObject {
NSString *name;
NSString *surname;
NSInteger *age;

}
-(void)setAge:(NSNumber *)myAge;
-(id)initWithName:(NSString *)fname Surname:(NSString *)sname Age: (NSInteger*)years
@end
Mtodos
#import <Foundation/Foundation.h>
@interface Student : NSObject {
NSString *name;
NSString *surname;
NSInteger *age;

}
-(void)setAge:(NSNumber *)myAge;
-(id)initWithName:(NSString *)fname Surname:(NSString *)sname Age: (NSInteger*)years
@end
PRIMERA CLASE DE OBJECTIVE C
Mtodos
-(void)setAge:(NSNumber *)age;
El mtodo no tiene un nombre explcito. Se identica solo por los argumentos.
En este caso, el mtodo tiene un solo argumento de tipo NSNumber * y llamado setAge
#import <Foundation/Foundation.h>
@interface Student : NSObject {
NSString *name;
NSString *surname;
NSInteger *age;

}
-(void)setAge:(NSNumber *)myAge;
-(id)initWithName:(NSString *)fname Surname:(NSString *)sname Age: (NSInteger*)years
@end
PRIMERA CLASE DE OBJECTIVE C
Mtodos
-(id)initWithName:(NSString *)fname
Surname:(NSString *)sname
Age: (NSInteger*)years;
PRIMERA CLASE DE OBJECTIVE C
#import <Foundation/Foundation.h>
@interface Student : NSObject {
NSString *name;
NSString *surname;
NSInteger *age;

}
-(void)setAge:(NSNumber *)myAge;
-(NSNumber *)getAge;
-(void)setSurname:(NSString *)sname;
-(NSString *)getSurname;
-(void)setName:(NSNumber *)fname;
-(NSNumber *)setSurname;
-(id)initWithName:(NSString *)fname Surname:(NSString *)sname Age: (NSInteger*)years
@end
PRIMERA CLASE DE OBJECTIVE C
#import <Foundation/Foundation.h>
@interface Student : NSObject {
NSString *name;
NSString *surname;
NSInteger *age;

}
-(void)setAge:(NSNumber *)myAge;
-(NSNumber *)getAge;
-(void)setSurname:(NSString *)sname;
-(NSString *)getSurname;
-(void)setName:(NSNumber *)fname;
-(NSNumber *)setSurname;
-(id)initWithName:(NSString *)fname Surname:(NSString *)sname Age: (NSInteger*)years
@end
Funciones de lectura y escritura
para los atributos
PRIMERA CLASE DE OBJECTIVE C
#import "Alumno.h"
@implementation Student
//@synthesize name, surname, age, repeats, type,photo;
-(void)setAge:(NSInteger *)myAge{
age=myAge;
}
-(id)initWithName:(NSString *)fname Surname:(NSString *)sname Age: (NSInteger*)years
Type:(NSString *)ctype{

// Implementacin de la inicializacin
[objeto mensaje:argumento]
[fname capitalize] // Poner en maysculas
return self;
}
-(void)dealloc {
// Ms adelante
}
@end
PRIMERA CLASE DE OBJECTIVE C
#import "Alumno.h
@implementation Student
@synthesize name, surname, age, repeats, type,photo;
-(void)setAge:(NSInteger *)myAge{
age=myAge;
}
-(id)initWithName:(NSString *)fname Surname:(NSString *)sname Age: (NSInteger*)years
Type:(NSString *)ctype{

// Implementacin de la inicializacin
[objeto mensaje:argumento]
[fname capitalize] // Poner en maysculas
return self;
}
-(void)dealloc {
// Ms adelante
}
@end
PRIMERA CLASE DE OBJECTIVE C
#import "Alumno.h"
@implementation Student
@synthesize name, surname, age, repeats, type,photo;
-(void)setAge:(NSInteger *)myAge{
age=myAge;
}
-(id)initWithName:(NSString *)fname Surname:(NSString *)sname Age: (NSInteger*)years
Type:(NSString *)ctype{

// Implementacin de la inicializacin
[objeto mensaje:argumento]
[fname capitalize] // Poner en maysculas
return self;
}
-(void)dealloc {
// Ms adelante
}
@end
QUE HACEMOS CON EL ALUMNO?

Tenemos un alumno en el iPhone, qu podemos hacer con


el?

Crear un interfaz de usuario para:

Ver su informacin

Modicar su edad
MODELO VISTA CONTROLADOR
Controlador
Modelo Vista
MODELO VISTA CONTROLADOR
Controlador
Modelo Vista
El modelo MVC separa la informacin de su
representacin, a travs de un controlador
Controlador
Modelo Vista
UN EJEMPLO SENCILLO: VISOR DE ALUMNOS
Controlador
Modelo Vista
Clase Alumno ?
?
IB: INTERFACE BUILDER
IB: INTERFACE BUILDER
Arrastrar
IB: INTERFACE BUILDER
IB: INTERFACE BUILDER
DEMO
Instalar SDK para el iPhone
UN EJEMPLO SENCILLO: VISOR DE ALUMNOS
Controlador
Modelo Vista
Clase Alumno Interfaz creado por IB
?
EL PRIMER CONTROLADOR
#import <UIKit/UIKit.h>
#import Alumno.h
@interface MyViewController : UIViewController {

// Vista
IBOUTLET UITextField *textField;
IBOUTLET UILabel *label;
// Model (datos)
Alumno *name;
}
- (IBAction)showName:(id)sender;
@end
EL PRIMER CONTROLADOR
#import <UIKit/UIKit.h>
#import Alumno.h
@interface MyViewController : UIViewController {

// Vista
IBOUTLET UITextField *textField;
IBOUTLET UILabel *label;
// Model (datos)
Alumno *name;
}
- (IBAction)showName:(id)sender;
@end
UIKit.h contiene UIViewController, la clase que da soporte a MVC
EL PRIMER CONTROLADOR
#import <UIKit/UIKit.h>
#import Alumno.h
@interface MyViewController : UIViewController {

// Vista
IBOUTLET UITextField *textField;
IBOUTLET UILabel *label;
// Model (datos)
Alumno *name;
}
- (IBAction)showName:(id)sender;
@end
Nuestro controlador va a usar nuestro modelo de datos
EL PRIMER CONTROLADOR
#import <UIKit/UIKit.h>
#import Alumno.h
@interface MyViewController : UIViewController {

// Vista
IBOUTLET UITextField *textField;
IBOUTLET UILabel *label;
// Model (datos)
Alumno *name;
}
- (IBAction)changeAge:(id)sender;
@end
UNA APLICACIN SIMPLE
COMPLETAR DEMO