SlideShare una empresa de Scribd logo
1 de 43
2 - OBJECTIVE-C
Curso de desarrollo de aplicaciones móviles para iPhone y iPad


                 endika.gutierrez@urbegi.com
                   alex.rayon@urbegi.com

                                      Urbegi Learning
                                         Contents
OBJECTIVE-C

• Objective-C es el lenguaje empleado por apple para todas sus
 plataformas. OS X e iOS

• Es   un lenguaje orientado a objetos

• Basado     en C. De hecho es un superconjunto de este

  • Compatible     con librerias de C

• Sintaxis   inspirada en Smalltalk
OBJECTIVE-C 2

• Data   de principios de los 80

 • Uno    de los primeros lenguajes orientados a objetos

• Adoptado    por Steve Jobs para su uso en el sistema operativo
 NeXTStep

 • Posteriormente    dio lugar a OS X

 • Todavía  se conserva el prefijo ‘NS’ en muchas de las clases
   del sistema
OBJECTIVE-C 3
• Es   un lenguaje de programación muy verboso

  • Existen   métodos que pueden llegar a ocupar varias lineas

• Es   muy raro el uso de excepciones aunque existen

• Pese   a ser compatible con C difiere mucho en su sintaxis

• Es   un lenguaje de Tipado dinámico

  • El
     comportamiento se decide en la fase de ejecución y no
   en la de compilación
SINTAXIS DE
                       OBJECTIVE-C

• En   Objective-C no se llaman funciones

    • Se   pasan mensajes entre objetos

•   [objeto mensaje];

    • Equivalente   en Java a

•   objeto.mensaje();
SINTAXIS DE
                       OBJECTIVE-C 2
•   [objeto mensaje];

    • Los      mensajes van entre []

      • Se    pueden anidar llamadas siempre que estas vayan entre
           corchetes:

           •   [[objeto mensaje] otroMensaje];

    • El   método a ejecutar se resuelve en tiempo de ejecución
SINTAXIS DE
                     OBJECTIVE-C 3

• Los   parametros quedan intercalados

•   [objeto mensaje:param1 otroParam:param2];

    • Equivalente   en Java a

•   objeto.mensaje(param1, param2);
SINTAXIS DE
                     OBJECTIVE-C 4
• También      se pueden anidar llamadas en los parametros
    •   [objeto mensaje:[usuario nombre]
              otroParam:[lista objectAtIndex:0]];


• Equivalente     en Java a
•   objeto.mensaje(usuario.nombre(), lista[0]);


• En   Objective-C se suelen generar llamadas a funciones muy
    verbosas
SINTAXIS DE
                   OBJECTIVE-C 5
• El    receptor del mensaje puede ser nil

  • Equivalente   a null en Java

  • Es    posible mandar un mensaje a nil sin que se produzca
       errores ni NullPointerException

  • Estas   llamadas devuelven 0 ó nil ó NO

• ¡Elpaso de un mensaje a un objeto que no pueda responderlo
  dará una excepción!
TIPOS BÁSICOS


• Los   objetos de Objective-C siempre se manejan con punteros

 • El   tipo genérico para cualquier objeto es id

   • Equivalente   a void* en C/C++
TIPOS BÁSICOS 2

• Los   tipos básicos son compartidos con C

•   int, float, doble, long...

• Además      incluye nuevos tipos

    • Los   valores booleanos son del tipo BOOL

      • Pueden   tomar los valores YES y NO
TIPOS BÁSICOS 3


•   self representa a la instancia actual

    • Similar   a this en Java o en C++

•   super representa la clase padre de la actual

    • Similar   a super de Java
TIPOS BÁSICOS 4



• Todos   los objetos en Objective-C heredan de la clase
 NSObject

 • Similar   a la clase Object de Java
TIPOS BÁSICOS 5

• Objective-C   posee clases para las estructuras básicas de datos

  •   NSString y NSMutableString para Cadenas de texto

  •   NSArray y NSMutableArray para Listas

  •   NSDictionary y NSMutableDictionary para Mapas

• Están   diferenciados los objetos mutables de los inmutables
CADENAS DE TEXTO

•   NSString y NSMutableString manipulan cadenas de
    texto

    • Laprimera de ellas no se puede modificar el contenido.
     La segunda sí.

    • Las   cadenas de texto se pueden definir con @”texto”

      • Para   diferenciarlas de las cadenas de C ”texto”

    • Ejemplo: NSString *texto = @”un texto”;
DEFINICIÓN DE
                       CLASES

• Interfaz   e implementación separados en dos ficheros

• Como     en C++

  • .h   para la interfaz

  • .m   para la implementación
DEFINICIÓN DE
                      CLASES
• Sintaxis   de definición de clases

• Ficheros .h

 @interface Clase : Superclase
 ...definición...
 @end
DEFINICIÓN DE
                      CLASES
• Sintaxis   de implementación de clases

• Ficheros .m

 @implementation Clase
 ...implementación...
 @end
DEFINICIÓN DE
                           CLASES
• Los    métodos de clase se definen así:
  •    - (ClaseRetorno *)metodoConParametro:(ClaseParam1 *)param1
                                 parametro2:(ClaseParam2 *)param2
                              otroParametro:(ClaseParam3 *)param3;



• Elsímbolo - antes del método indica que es un método de
 instancia

• Elsímbolo + antes del método indica que es un método de
 clase
REFERENCIAS A
             CLASES EXTERNAS
• Se   incluyen cabeceras con #import

  •A diferencia de los #include de C evita que una misma
   cabecera se incluya dos veces

• Laimplementación de la clase deberá importar la interfaz de
 la misma

• Lainterfaz de la clase debará importar las clases que se vayan
 a necesitar. Cómo mínimo la clase padre.
VARIABLES DE
                     OBJETO
• Definidas   en la interfaz de la clase entre {}

 @interface Clase : Superclase {
   int      _variable1;
   float    _variable2;
   NSArray *_unaLista;
 }
 @end
VARIABLES DE
                   OBJETO
• Normalmente   las variables de instancia llevan un _ por
 delante para diferenciarlas de las variables locales

 @interface Clase : Superclase {
   int      _variable1;
   float    _variable2;
   NSArray *_unaLista;
 }
 @end
EJEMPLO PERSONA.H

#import <Foundation/Foundation.h> // incluye la definición de
los objetos básicos

@interface   Persona : NSObject {
  NSString   *_nombre;    // atributos
  NSString   *_apellido;
  int         _edad;
  float       _altura;
  NSArray    *_habilidades;
}

- (void)saluda;

@end
EJEMPLO PERSONA.M

#import “Persona.h” // incluye la interfaz

@implementation Persona

- (void)saluda
{
    NSLog(@”Hola, me llamo %@.”, _nombre); // NSLog funciona
como printf. %@ imprime el valor de un objeto
}

@end
PROPIEDADES


• Laspropiedades definen el acceso a las variables de los
 objetos

  •   Equivalente a los Getters y Setters de Java

  • Se   acceden como objeto.propiedad
PROPIEDADES 2

• Se   definen en la interfaz como
•   @property (nonatomic, copy) NSString *   nombre;


•   nonatomic   indica que el setter no debe ser thread-safe
•   copy   indica que se debe copiar el objeto en el setter

• Otras    opciones son strong y weak que veremos en el
    capítulo de gestión de memoria.
PROPIEDADES 3

• Se   definen en la implementación como
•   @synthesize nombre = _nombre;


•A    la derecha de la igualdad indicamos la variable en la que
    queremos que se almacene el valor (Opcional)

• Veamos    un ejemplo con propiedades
EJEMPLO 2
                  PERSONA.H
#import <Foundation/Foundation.h> // incluye la definición de
los objetos básicos

@interface Persona : NSObject
// propiedades
@property (nonatomic, copy) NSString *nombre;
@property (nonatomic, copy) NSString *apellido;
@property (nonatomic) int             edad;
@property (nonatomic) float           altura;
@property (nonatomic, copy) NSArray *habilidades;

- (void)saluda;

@end
EJEMPLO 2
                 PERSONA.M
#import “Persona.h” // incluye la interfaz

@implementation Persona
@synthesize nombre = _nombre;
@synthesize apellido = _apellido;
@synthesize edad = _edad;
@synthesize altura = _altura;
@synthesize habilidades = _habilidades;

- (void)saluda
{
    NSLog(@”Hola, me llamo %@.”, self.nombre); // NSLog
funciona como printf. %@ imprime el valor de un objeto
}

@end
CONSTRUCTORES


• La   creación de objetos en Objective-C se hace en dos etapas

  •1   - Reserva de la memoria alloc

  •2   - Inicialización init
CONSTRUCTORES 2



• Ejemplo    de creación de la clase Persona del ejemplo
 anterior:
 •   Persona *pablo = [[Persona alloc] init];
CONSTRUCTORES 3

• Podemos  sobrecargar el método init para personalizar la
 creación del objeto

- (id)init
{
    self = [super init]; // También debemos llamar al
constructor padre
    if (self) {
        // Inicialización del objeto
    }
    return self;
}
CONSTRUCTORES 4


• El
   método init puede recibir parametros para la
 construcción:
  •    Persona *pablo = [[Persona alloc] initWithName:@”Pablo”
                                              surname:@”Picasso”];
CONSTRUCTORES 5

• Algunas   clases poseen métodos estáticos para crear los
    objetos en una única llamada:
•   NSArray *lista = [NSArray arrayWithObjects:@”Pablo”, @”Juan”,
    @”Pepe”, nil];


    • Estas   llamadas no actuan igual que alloc   init.


      • Veremos    las diferencias en el capítulo de gestión de
        memoria
ESTRUCTURAS DE
                 DATOS
• EnObjective-C estan diferenciadas las listas y mapas que
 son editables y las que no

• Losobjetos inmutables se deberán indicar todos los objetos
 en el momento de su creación
 •   [NSArray arrayWithObjects:@”Pablo”, @”Juan”, @”Pepe”, nil];


• Objective-C no tiene sobrecarga de operadores por lo que
 todas las operaciones son métodos
ESTRUCTURAS DE
             DATOS - NSARRAY

• Las   clases para la gestión de listas son NSArray y
 NSMutableArray

  • Obtener    un objeto de la lista:
   - (id)objectAtIndex:(NSUInteger)index;


  • Añadir   un objeto a la lista:
   - (void)addObject:(id)object;
ESTRUCTURAS DE
          DATOS - NSARRAY 2
• Para   la contrucción de arrays existen diversos métodos
+ (id)arrayWithObject:(id)object; // Array con un único objeto

+ (id)arrayWithObjects:(id)object, ...; // Array con una lista
de objetos separados por coma y acabados en nil

+ (id)arrayWithObjects:(const id*)object
                 count:(NSUInteger)count; // Array con una
lista de objetos

+ (id)arrayWithArray:(NSArray)array; // Copia de otro array
ESTRUCTURAS DE
         DATOS - NSARRAY 3
• Para
     la contrucción de arrays mutables existen otros
 métodos



+ (id)arrayWithCapacity:(NSUInteger)capacity; // Array con n
posiciones reservadas
ESTRUCTURAS DE
                 DATOS -
              NSDICTIONARY
• Las   clases para la gestión de mapas son NSDictionary y
 NSMutableDictionary

  • Obtener   un objeto del mapa:
   - (id)objectForKey:(id)key;


  • Añadir   un objeto al mapa:
   - (void)setObject:(id)object forKey:(id)key;
ESTRUCTURAS DE
                 DATOS -
             NSDICTIONARY 2
• Para   la creación de diccionarios existen varios métodos
+ (id)dictionaryWithObject:(id)object forKey:(id)key; //
Diccionario con un único objeto
+ (id)dictionaryWithObjectsAndKeys:(id)firstObject, ...; //
Diccionario con un listado de objetos acabados en nil
+ (id)dictionaryWithDictionary:(NSDictionary *)dict; //
Diccionario con copia
+ (id)dictionaryWithObjects:(NSArray *)objects
                    forKeys:(NSArray *)keys; // Diccionario
con un listado de claves y otro de valores
ESTRUCTURAS DE
               DATOS -
           NSDICTIONARY 3
• Para
     la creación de diccionarios mutables existen varios
 métodos


+ (id)dictionaryWithCapacity:(NSUInteger)capacity;//
Diccionario con n posiciones reservadas
PONIENDO EN PRÁCTICA



• Para   este tema vamos a tomar contacto con Xcode
FIN

Más contenido relacionado

La actualidad más candente

La actualidad más candente (18)

Introducción a scala
Introducción a scalaIntroducción a scala
Introducción a scala
 
Java
JavaJava
Java
 
04 j flex
04 j flex04 j flex
04 j flex
 
Tutorial de php
Tutorial de phpTutorial de php
Tutorial de php
 
Software Clips
Software ClipsSoftware Clips
Software Clips
 
El lenguaje de pogramación C++
El lenguaje de pogramación C++El lenguaje de pogramación C++
El lenguaje de pogramación C++
 
1 Introducción a los Lenguajes de Programación y a la Programación Orientada ...
1 Introducción a los Lenguajes de Programación y a la Programación Orientada ...1 Introducción a los Lenguajes de Programación y a la Programación Orientada ...
1 Introducción a los Lenguajes de Programación y a la Programación Orientada ...
 
Estructura basica de_un_programa_c_
Estructura basica de_un_programa_c_Estructura basica de_un_programa_c_
Estructura basica de_un_programa_c_
 
Estructuras básicas para C++
Estructuras básicas para C++Estructuras básicas para C++
Estructuras básicas para C++
 
TUTORIAL JAVA
TUTORIAL JAVATUTORIAL JAVA
TUTORIAL JAVA
 
.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez
.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez
.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez
 
Poo 1
Poo 1Poo 1
Poo 1
 
Taller ruby
Taller rubyTaller ruby
Taller ruby
 
Ficheros de cabecera
Ficheros de cabecera Ficheros de cabecera
Ficheros de cabecera
 
Variables en php
Variables en phpVariables en php
Variables en php
 
Unidad i antecedentes
Unidad i antecedentesUnidad i antecedentes
Unidad i antecedentes
 
Java Basico Platzi
Java Basico PlatziJava Basico Platzi
Java Basico Platzi
 
Lenguaje
LenguajeLenguaje
Lenguaje
 

Similar a Ios.s2 (20)

Programación Orientada a Objetos - Unidad 2: clases y objetos
Programación Orientada a Objetos - Unidad 2: clases y objetosProgramación Orientada a Objetos - Unidad 2: clases y objetos
Programación Orientada a Objetos - Unidad 2: clases y objetos
 
Lenguaje de programación orientada a objetos
Lenguaje de programación orientada a objetosLenguaje de programación orientada a objetos
Lenguaje de programación orientada a objetos
 
Información básica Java
Información básica JavaInformación básica Java
Información básica Java
 
Javascript
JavascriptJavascript
Javascript
 
03. Introduccion a JavaScript y JQuery
03. Introduccion a JavaScript y JQuery03. Introduccion a JavaScript y JQuery
03. Introduccion a JavaScript y JQuery
 
C ++.ppt
C ++.pptC ++.ppt
C ++.ppt
 
Uso de las clases iostream
Uso de las clases iostreamUso de las clases iostream
Uso de las clases iostream
 
Java
JavaJava
Java
 
Programacion orientada a objetos 2
Programacion orientada a objetos 2Programacion orientada a objetos 2
Programacion orientada a objetos 2
 
OCP, JSE 6 Programmer (1z0-851) - Guia practica 3 de 7(ap-is)
OCP, JSE 6 Programmer (1z0-851) - Guia practica 3 de 7(ap-is)OCP, JSE 6 Programmer (1z0-851) - Guia practica 3 de 7(ap-is)
OCP, JSE 6 Programmer (1z0-851) - Guia practica 3 de 7(ap-is)
 
02 tda1 t2018
02 tda1 t201802 tda1 t2018
02 tda1 t2018
 
Ios.s9
Ios.s9Ios.s9
Ios.s9
 
Programación III (Java) - 01 Introduccion
Programación III (Java) - 01 IntroduccionProgramación III (Java) - 01 Introduccion
Programación III (Java) - 01 Introduccion
 
C++
C++C++
C++
 
Tema1
Tema1Tema1
Tema1
 
Poo presentacion
Poo presentacionPoo presentacion
Poo presentacion
 
Javascript - 2014
Javascript - 2014Javascript - 2014
Javascript - 2014
 
Semana 6 Módulos Clases y Objetos
Semana 6   Módulos Clases y ObjetosSemana 6   Módulos Clases y Objetos
Semana 6 Módulos Clases y Objetos
 
lenguajejava.pptx
lenguajejava.pptxlenguajejava.pptx
lenguajejava.pptx
 
Actividad 04: Exposición por equipo.
Actividad 04: Exposición por equipo.Actividad 04: Exposición por equipo.
Actividad 04: Exposición por equipo.
 

Más de ulcurbegi

Más de ulcurbegi (14)

Proyecto LISFAB y Emprendimiento 4.0
Proyecto LISFAB y Emprendimiento 4.0Proyecto LISFAB y Emprendimiento 4.0
Proyecto LISFAB y Emprendimiento 4.0
 
Ios.s14
Ios.s14Ios.s14
Ios.s14
 
Ios.s13
Ios.s13Ios.s13
Ios.s13
 
Ios.s12
Ios.s12Ios.s12
Ios.s12
 
Ios.s11
Ios.s11Ios.s11
Ios.s11
 
Ios.s10
Ios.s10Ios.s10
Ios.s10
 
Ios.s8
Ios.s8Ios.s8
Ios.s8
 
Ios.s7
Ios.s7Ios.s7
Ios.s7
 
Ios.s6
Ios.s6Ios.s6
Ios.s6
 
Ios.s5
Ios.s5Ios.s5
Ios.s5
 
Ios.s4
Ios.s4Ios.s4
Ios.s4
 
Ios.s3
Ios.s3Ios.s3
Ios.s3
 
Ios.s1
Ios.s1Ios.s1
Ios.s1
 
Ios.s15
Ios.s15Ios.s15
Ios.s15
 

Ios.s2

  • 1. 2 - OBJECTIVE-C Curso de desarrollo de aplicaciones móviles para iPhone y iPad endika.gutierrez@urbegi.com alex.rayon@urbegi.com Urbegi Learning Contents
  • 2. OBJECTIVE-C • Objective-C es el lenguaje empleado por apple para todas sus plataformas. OS X e iOS • Es un lenguaje orientado a objetos • Basado en C. De hecho es un superconjunto de este • Compatible con librerias de C • Sintaxis inspirada en Smalltalk
  • 3. OBJECTIVE-C 2 • Data de principios de los 80 • Uno de los primeros lenguajes orientados a objetos • Adoptado por Steve Jobs para su uso en el sistema operativo NeXTStep • Posteriormente dio lugar a OS X • Todavía se conserva el prefijo ‘NS’ en muchas de las clases del sistema
  • 4. OBJECTIVE-C 3 • Es un lenguaje de programación muy verboso • Existen métodos que pueden llegar a ocupar varias lineas • Es muy raro el uso de excepciones aunque existen • Pese a ser compatible con C difiere mucho en su sintaxis • Es un lenguaje de Tipado dinámico • El comportamiento se decide en la fase de ejecución y no en la de compilación
  • 5. SINTAXIS DE OBJECTIVE-C • En Objective-C no se llaman funciones • Se pasan mensajes entre objetos • [objeto mensaje]; • Equivalente en Java a • objeto.mensaje();
  • 6. SINTAXIS DE OBJECTIVE-C 2 • [objeto mensaje]; • Los mensajes van entre [] • Se pueden anidar llamadas siempre que estas vayan entre corchetes: • [[objeto mensaje] otroMensaje]; • El método a ejecutar se resuelve en tiempo de ejecución
  • 7. SINTAXIS DE OBJECTIVE-C 3 • Los parametros quedan intercalados • [objeto mensaje:param1 otroParam:param2]; • Equivalente en Java a • objeto.mensaje(param1, param2);
  • 8. SINTAXIS DE OBJECTIVE-C 4 • También se pueden anidar llamadas en los parametros • [objeto mensaje:[usuario nombre] otroParam:[lista objectAtIndex:0]]; • Equivalente en Java a • objeto.mensaje(usuario.nombre(), lista[0]); • En Objective-C se suelen generar llamadas a funciones muy verbosas
  • 9. SINTAXIS DE OBJECTIVE-C 5 • El receptor del mensaje puede ser nil • Equivalente a null en Java • Es posible mandar un mensaje a nil sin que se produzca errores ni NullPointerException • Estas llamadas devuelven 0 ó nil ó NO • ¡Elpaso de un mensaje a un objeto que no pueda responderlo dará una excepción!
  • 10. TIPOS BÁSICOS • Los objetos de Objective-C siempre se manejan con punteros • El tipo genérico para cualquier objeto es id • Equivalente a void* en C/C++
  • 11. TIPOS BÁSICOS 2 • Los tipos básicos son compartidos con C • int, float, doble, long... • Además incluye nuevos tipos • Los valores booleanos son del tipo BOOL • Pueden tomar los valores YES y NO
  • 12. TIPOS BÁSICOS 3 • self representa a la instancia actual • Similar a this en Java o en C++ • super representa la clase padre de la actual • Similar a super de Java
  • 13. TIPOS BÁSICOS 4 • Todos los objetos en Objective-C heredan de la clase NSObject • Similar a la clase Object de Java
  • 14. TIPOS BÁSICOS 5 • Objective-C posee clases para las estructuras básicas de datos • NSString y NSMutableString para Cadenas de texto • NSArray y NSMutableArray para Listas • NSDictionary y NSMutableDictionary para Mapas • Están diferenciados los objetos mutables de los inmutables
  • 15. CADENAS DE TEXTO • NSString y NSMutableString manipulan cadenas de texto • Laprimera de ellas no se puede modificar el contenido. La segunda sí. • Las cadenas de texto se pueden definir con @”texto” • Para diferenciarlas de las cadenas de C ”texto” • Ejemplo: NSString *texto = @”un texto”;
  • 16. DEFINICIÓN DE CLASES • Interfaz e implementación separados en dos ficheros • Como en C++ • .h para la interfaz • .m para la implementación
  • 17. DEFINICIÓN DE CLASES • Sintaxis de definición de clases • Ficheros .h @interface Clase : Superclase ...definición... @end
  • 18. DEFINICIÓN DE CLASES • Sintaxis de implementación de clases • Ficheros .m @implementation Clase ...implementación... @end
  • 19. DEFINICIÓN DE CLASES • Los métodos de clase se definen así: • - (ClaseRetorno *)metodoConParametro:(ClaseParam1 *)param1 parametro2:(ClaseParam2 *)param2 otroParametro:(ClaseParam3 *)param3; • Elsímbolo - antes del método indica que es un método de instancia • Elsímbolo + antes del método indica que es un método de clase
  • 20. REFERENCIAS A CLASES EXTERNAS • Se incluyen cabeceras con #import •A diferencia de los #include de C evita que una misma cabecera se incluya dos veces • Laimplementación de la clase deberá importar la interfaz de la misma • Lainterfaz de la clase debará importar las clases que se vayan a necesitar. Cómo mínimo la clase padre.
  • 21. VARIABLES DE OBJETO • Definidas en la interfaz de la clase entre {} @interface Clase : Superclase { int _variable1; float _variable2; NSArray *_unaLista; } @end
  • 22. VARIABLES DE OBJETO • Normalmente las variables de instancia llevan un _ por delante para diferenciarlas de las variables locales @interface Clase : Superclase { int _variable1; float _variable2; NSArray *_unaLista; } @end
  • 23. EJEMPLO PERSONA.H #import <Foundation/Foundation.h> // incluye la definición de los objetos básicos @interface Persona : NSObject { NSString *_nombre; // atributos NSString *_apellido; int _edad; float _altura; NSArray *_habilidades; } - (void)saluda; @end
  • 24. EJEMPLO PERSONA.M #import “Persona.h” // incluye la interfaz @implementation Persona - (void)saluda { NSLog(@”Hola, me llamo %@.”, _nombre); // NSLog funciona como printf. %@ imprime el valor de un objeto } @end
  • 25. PROPIEDADES • Laspropiedades definen el acceso a las variables de los objetos • Equivalente a los Getters y Setters de Java • Se acceden como objeto.propiedad
  • 26. PROPIEDADES 2 • Se definen en la interfaz como • @property (nonatomic, copy) NSString * nombre; • nonatomic indica que el setter no debe ser thread-safe • copy indica que se debe copiar el objeto en el setter • Otras opciones son strong y weak que veremos en el capítulo de gestión de memoria.
  • 27. PROPIEDADES 3 • Se definen en la implementación como • @synthesize nombre = _nombre; •A la derecha de la igualdad indicamos la variable en la que queremos que se almacene el valor (Opcional) • Veamos un ejemplo con propiedades
  • 28. EJEMPLO 2 PERSONA.H #import <Foundation/Foundation.h> // incluye la definición de los objetos básicos @interface Persona : NSObject // propiedades @property (nonatomic, copy) NSString *nombre; @property (nonatomic, copy) NSString *apellido; @property (nonatomic) int edad; @property (nonatomic) float altura; @property (nonatomic, copy) NSArray *habilidades; - (void)saluda; @end
  • 29. EJEMPLO 2 PERSONA.M #import “Persona.h” // incluye la interfaz @implementation Persona @synthesize nombre = _nombre; @synthesize apellido = _apellido; @synthesize edad = _edad; @synthesize altura = _altura; @synthesize habilidades = _habilidades; - (void)saluda { NSLog(@”Hola, me llamo %@.”, self.nombre); // NSLog funciona como printf. %@ imprime el valor de un objeto } @end
  • 30. CONSTRUCTORES • La creación de objetos en Objective-C se hace en dos etapas •1 - Reserva de la memoria alloc •2 - Inicialización init
  • 31. CONSTRUCTORES 2 • Ejemplo de creación de la clase Persona del ejemplo anterior: • Persona *pablo = [[Persona alloc] init];
  • 32. CONSTRUCTORES 3 • Podemos sobrecargar el método init para personalizar la creación del objeto - (id)init { self = [super init]; // También debemos llamar al constructor padre if (self) { // Inicialización del objeto } return self; }
  • 33. CONSTRUCTORES 4 • El método init puede recibir parametros para la construcción: • Persona *pablo = [[Persona alloc] initWithName:@”Pablo” surname:@”Picasso”];
  • 34. CONSTRUCTORES 5 • Algunas clases poseen métodos estáticos para crear los objetos en una única llamada: • NSArray *lista = [NSArray arrayWithObjects:@”Pablo”, @”Juan”, @”Pepe”, nil]; • Estas llamadas no actuan igual que alloc init. • Veremos las diferencias en el capítulo de gestión de memoria
  • 35. ESTRUCTURAS DE DATOS • EnObjective-C estan diferenciadas las listas y mapas que son editables y las que no • Losobjetos inmutables se deberán indicar todos los objetos en el momento de su creación • [NSArray arrayWithObjects:@”Pablo”, @”Juan”, @”Pepe”, nil]; • Objective-C no tiene sobrecarga de operadores por lo que todas las operaciones son métodos
  • 36. ESTRUCTURAS DE DATOS - NSARRAY • Las clases para la gestión de listas son NSArray y NSMutableArray • Obtener un objeto de la lista: - (id)objectAtIndex:(NSUInteger)index; • Añadir un objeto a la lista: - (void)addObject:(id)object;
  • 37. ESTRUCTURAS DE DATOS - NSARRAY 2 • Para la contrucción de arrays existen diversos métodos + (id)arrayWithObject:(id)object; // Array con un único objeto + (id)arrayWithObjects:(id)object, ...; // Array con una lista de objetos separados por coma y acabados en nil + (id)arrayWithObjects:(const id*)object count:(NSUInteger)count; // Array con una lista de objetos + (id)arrayWithArray:(NSArray)array; // Copia de otro array
  • 38. ESTRUCTURAS DE DATOS - NSARRAY 3 • Para la contrucción de arrays mutables existen otros métodos + (id)arrayWithCapacity:(NSUInteger)capacity; // Array con n posiciones reservadas
  • 39. ESTRUCTURAS DE DATOS - NSDICTIONARY • Las clases para la gestión de mapas son NSDictionary y NSMutableDictionary • Obtener un objeto del mapa: - (id)objectForKey:(id)key; • Añadir un objeto al mapa: - (void)setObject:(id)object forKey:(id)key;
  • 40. ESTRUCTURAS DE DATOS - NSDICTIONARY 2 • Para la creación de diccionarios existen varios métodos + (id)dictionaryWithObject:(id)object forKey:(id)key; // Diccionario con un único objeto + (id)dictionaryWithObjectsAndKeys:(id)firstObject, ...; // Diccionario con un listado de objetos acabados en nil + (id)dictionaryWithDictionary:(NSDictionary *)dict; // Diccionario con copia + (id)dictionaryWithObjects:(NSArray *)objects forKeys:(NSArray *)keys; // Diccionario con un listado de claves y otro de valores
  • 41. ESTRUCTURAS DE DATOS - NSDICTIONARY 3 • Para la creación de diccionarios mutables existen varios métodos + (id)dictionaryWithCapacity:(NSUInteger)capacity;// Diccionario con n posiciones reservadas
  • 42. PONIENDO EN PRÁCTICA • Para este tema vamos a tomar contacto con Xcode
  • 43. FIN

Notas del editor

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n