Tutorial de Objective C

23
Tutorial Objective C Autor: Ing. Luis Ernesto Castillo Alfaro Aprendiendo Objective C: Estás a punto de empezar a aprender Objective C, el lenguaje utilizado por Apple y por los desarrolladores de Apple para crear aplicaciones para iphone, ipad y para crear aplicaciones mac. No es necesario tener experiencia previa para tomar el curso, pero si es necesario que prestes atención a los detalles. Para tener un mayor entendimiento del curso te sugerimos que cada lección sea estudiada por lo menos 2 veces, es usual que la segunda vez que estudias algo lo comprendas mejor. Hemos tratado de hacer el curso lo más sencillo para empezar. Lección 1: Escribiendo un mensaje de salida Es común ver en todos los lenguajes de programación la forma como imprimir un mensaje de salida, en el caso de Objective C existe un comando llamado NSLog, el cual tiene la siguiente sintaxis: NSLog(“@ mensaje a mostrar”); Ejemplo: Se desea mostrar un mensaje que contenga una bienvenida al curso de Objective C. Desarrollo: NSLog(“@Bienvenido al Curso de Objective C”); Lección 2: Utilizando variables de tipo cadena En esta oportunidad vamos a utilizar variables que nos permitan almacenar valores que en Objective c son llamados objetos, el primer tipo de variable a utilizar es de tipo cadena o de tipo string que en Objective C el tipo de variables que almacenan valores de tipo cadena es NSSTring. Sintaxis: NSString *nombrevariable=@”valor variable”; Ejemplo: Crear una variable que almacene tu nombre. Desarrollo: NSString *minombre=@”LUIS ERNESTO CASTILLO ALFARO”; Lección 3: Imprimiendo el valor de una variable: En esta lección combinaremos lo aprendido en las 2 lecciones previas para mostrar en un mensaje el valor de una variable de tipo cadena.

Transcript of Tutorial de Objective C

Page 1: Tutorial de Objective C

Tutorial Objective C

Autor: Ing. Luis Ernesto Castillo Alfaro

Aprendiendo Objective C:

Estás a punto de empezar a aprender Objective C, el lenguaje utilizado por Apple y por los

desarrolladores de Apple para crear aplicaciones para iphone, ipad y para crear aplicaciones mac.

No es necesario tener experiencia previa para tomar el curso, pero si es necesario que prestes

atención a los detalles. Para tener un mayor entendimiento del curso te sugerimos que cada

lección sea estudiada por lo menos 2 veces, es usual que la segunda vez que estudias algo lo

comprendas mejor.

Hemos tratado de hacer el curso lo más sencillo para empezar.

Lección 1: Escribiendo un mensaje de salida

Es común ver en todos los lenguajes de programación la forma como imprimir un mensaje de

salida, en el caso de Objective C existe un comando llamado NSLog, el cual tiene la siguiente

sintaxis:

NSLog(“@ mensaje a mostrar”);

Ejemplo: Se desea mostrar un mensaje que contenga una bienvenida al curso de Objective C.

Desarrollo:

NSLog(“@Bienvenido al Curso de Objective C”);

Lección 2: Utilizando variables de tipo cadena

En esta oportunidad vamos a utilizar variables que nos permitan almacenar valores que en

Objective c son llamados objetos, el primer tipo de variable a utilizar es de tipo cadena o de tipo

string que en Objective C el tipo de variables que almacenan valores de tipo cadena es NSSTring.

Sintaxis:

NSString *nombrevariable=@”valor variable”;

Ejemplo: Crear una variable que almacene tu nombre.

Desarrollo:

NSString *minombre=@”LUIS ERNESTO CASTILLO ALFARO”;

Lección 3: Imprimiendo el valor de una variable:

En esta lección combinaremos lo aprendido en las 2 lecciones previas para mostrar en un mensaje

el valor de una variable de tipo cadena.

Page 2: Tutorial de Objective C

Tutorial Objective C

Autor: Ing. Luis Ernesto Castillo Alfaro

Ejemplo: Imprimir en un mensaje tu nombre que previamente debe de ser almacenado en una

variable de tipo NSString.

Desarrollo:

1- Declaramos la variable de tipo NSString que almacenará nuestro nombre

NSString *minombre=@”LUIS ERNESTO CASTILLO ALFARO”;

2- Imprimimos el valor de la variable *minombre

NSLog(minombre);

Lección 4: Imprimiendo mensajes de tipo cadena concatenando el valor de una variable

En esta lección veremos cómo se puede imprimir mensajes que contengan valores de variables

previamente definidas, para esto utilizaremos el comodín de Objective c “%@” que se usara

tantas veces como variables agreguemos en un mensaje de salida.

Ejemplo: Imprimir un mensaje que contenga un salido seguido de tu nombre almacenado en una

variable previamente.

Desarrollo:

1- Declarar la variable de tipo NSString que contendrá tu nombre:

NSString *minombre=@”LUIS ERNESTO CASTILLO ALFARO”;

2- Imprimimos el mensaje:

NSlog(@“Hola que tal %@”,minombre);

Tarea: Crear un mensaje que muestre los datos de tus nombres y apellidos almacenados en

sus respectivas variables de tipo NSString previamente.

Lección 5: Trabajando con valores numéricos

Cuando se trabaja con objetos numéricos en Objective c debemos de utilizar el tipo de variable

NSNumber y cuando declaramos una variable de tipo NSNumber su valor no va entre comillas

como ocurría con los valores de variables tipo NSString.

Sintaxis de declaración de variables tipo NSNumber:

Page 3: Tutorial de Objective C

Tutorial Objective C

Autor: Ing. Luis Ernesto Castillo Alfaro

NSNumber *nombrevariable=@valor numérico;

Ejercicio: Mostrar un mensaje que muestre tu edad previamente almacenado en una variable de

tipo NSNumber, utilizar placeholders.

Desarrollo:

1- Declarar la variable de tipo NSNumber que almacenará tu edad:

NSNumber *miedad=@34;

2- Imprimir el mensaje mostrando tu edad:

NSLog(@”Mi edad es %@”,miedad);

Lección 6: Creando una variable de tipo array y accediendo a sus elementos

Los arrays nos ayudan a almacenar objetos del mismo tipo en una misma variable. Si por ejemplo

deseamos almacenar valores de tipo cadena en un array lo haríamos de la siguiente manera:

Ejemplo: Crear un array que almacene una lista de ciudades de Colombia.

Desarrollo:

1- Definir la variable de tipo array y asignar sus objetos:

NSArray *ciucolochas=@[@”bogota,@”cali”,@”cartagena”,@”medellin”];

Se puede acceder a los elementos de aun array haciendo referencia a la posición del elemento -1 y

esto es el índice de cada elemento del array. Por ejemplo si se desea acceder al valor del tercer

elemento del array ciucolochas e imprimirlo en un mensaje de salida lo haríamos de la siguiente

forma:

Sintaxis:

NSLog(@”El segundo elemento de la lista es %@”,ciucolochas[2]);

Page 4: Tutorial de Objective C

Tutorial Objective C

Autor: Ing. Luis Ernesto Castillo Alfaro

Lección 7: Imprimiendo mensajes de enteros

Los objetos de tipo NSString manejan un mensaje length que retorna el número de caracteres

contenidos en el objeto de tipo NSString. El número que retorna el menaje length es de tipo

NSUInteger, si deseamos mostrar el número de caracteres de una variable de tipo NSString lo

podemos hacer con la siguiente sintaxis:

NSUInteger nombrevariable=[nombre variable de tipo NSString length];

Si se desea mostrar el valor de una variable de tipo NSInteger en un mensaje impreso usando

NSLog con un placeholder que tome el valor de dicha variable no se debe de usar el placeholder

%@, en su lugar utilizamos el placeholder %lu.

Ejemplo: Mostrar un mensaje que indique la cantidad de caracteres que tiene tu nombre.

Desarrollo:

1- Declaramos la variable de tipo NSString que contiene tu nombre:

NSString *tunombre=@”LUIS”;

2- Declaramos la variable de tipo NUInteger que contendrá la cantidad de caracteres de la

variable tunombre:

NUInteger longitudNombre= [tunombre length];

3- Imprimimos el mensaje que indica la cantidad de caracteres que tiene tu nombre:

NSLog(@”Tu nombre tiene %lu caracteres”,longitudnombre);

Lección 8: Operando con NSNumbers

En esta oportunidad vamos a ver cómo trabajar con objetos NSNumbers y como realizar simples

operaciones matemáticas con ellos. Imaginemos que tenemos 2 objetos almacenados en variables

de tipo NSNumber y deseamos multiplicarlos y el número resultante mostrarlo en un mensaje.

Para esto hacemos lo siguiente:

1- Declaramos las variables de tipo NSNumber:

NSNumber *numeroUno=@4;

NSNumber *numeroDos=@5;

Para obtener la multiplicación de ambos números se podría utilizar el operador * que en

algunos lenguajes de programación representa al signo de multiplicación, sin embargo en

Objective C lo que se debe hacer es convertir dichos objetos a objetos de tipo NSUInteger y al

Page 5: Tutorial de Objective C

Tutorial Objective C

Autor: Ing. Luis Ernesto Castillo Alfaro

ser de ese tipo ya se podrían multiplicar usando el operador *, para hacer dicha conversión

se debe de usar el mensaje unsignedIntegerValue.

2- Haciendo la conversión de los objetos tipo NSNumber al tipo NSUInteger:

NSUInteger numerounoEntero=[numeroUno unsignedIntegerValue];

NSUInteger numerodosEntero=[numeroDos unsignedIntegerValue];

3- Definiendo la variable de tipo NSUInteger que almacenara el resultado de la multiplicación

de los 2 números:

NSUInteger resultado=numerounoEntero * numeroDosEntero;

4- Imprimiento el resultado de la multiplicación de los 2 números:

NSLog(@”El resultado de multiplicar los 2 números es %lu”,resultado);

Lección 9: Uniendo objetos de tipo NSString

Cuando se trata de unir objetos de tipo NSString se podría pensar que se podría hacer algo como

lo siguiente:

NSString *cadenaFinal=@”cadena1”+@”cadena2”;

En Objective C existe una forma de cómo unir 2 objetos de tipo NSString con un método llamado

stringByAppendingString que toma un objeto de tipo NSString y lo concatena con el objeto

NSString que recibe el método stringByAppendingString.

Sintaxis:

[cadena1 stringByAppendingString:cadena2];

El método stringByAppendingString utiliza los 2 puntos indicando que necesita que se le indique

el parámetro que en este caso es el objeto de tipo NSString que recibirá dicho método.

Ejemplo: Mostrar un mensaje que concatene los valores de las variables que almacenen los datos

de tu nombre y de tu apellido.

Desarrollo:

1- Definimos las variables que almacenarán los datos de nombre y apellido:

Page 6: Tutorial de Objective C

Tutorial Objective C

Autor: Ing. Luis Ernesto Castillo Alfaro

NSString *nombre=@”LUIS”;

NSString *apellido=@”CASTILLO”;

2- Concatenamos las variables de tipo NSString:

NSString *nombreCompleto=[nombre stringByAppendingString:apellido];

3- Imprimiendo el nombre completo:

NSLog(@”Tu nombre completo es %@”, nombreCompleto);

Pero como podríamos hacer para que el mensaje mostrado no sea el del nombre seguido del

apellido, es decir con un espacio en blanco entre ellos, para esto seguiremos el siguiente

procedimiento:

a- Definimos las variables que almacenarán los datos de nombre y apellido:

NSString *nombre=@”LUIS”;

NSString *apellido=@”CASTILLO”;

b- Definimos la variable de tipo NSString que almacenará el nombre seguido del apellido

con un espacio en blanco entre ellos:

Como ya habíamos explicado para concatenar valores de objetos NSString usamos el

método stringByAppendingString y este a su vez puede ser usados múltiples veces según

la cantidad de objetos de tipo NSString a concatenar:

En primer lugar al espacio en blanco que habrá entre el nombre y el apellido recibirá el

método stringByAppendingString que lo unirá con el valor del objeto nombre:

Nombre stringByAppendingString:@” “

Luego a ese valor resultante lo debemos de concatenar con el valor de la variable

apellido:

[[Nombre stringByAppendingString:@” “] stringByAppendingString: apellido]

Este último resultado debe de ser almacenado en una variable de tipo NSString:

NSString *nombreCompleto=[[Nombre stringByAppendingString:@” “]

stringByAppendingString: apellido];

Page 7: Tutorial de Objective C

Tutorial Objective C

Autor: Ing. Luis Ernesto Castillo Alfaro

Finalmente mostramos el nombre completo en un mensaje:

NSLog(@”El nombre completo es %@”,nombreCompleto);

Lección 10: Inicializando objetos con un determinado valor

Al igual que en otros lenguajes de programación es común inicializar variables con un

determinado valor, es posible también asignarles el valor de una variable previamente

definida, por ejemplo podemos definir una variable que muestre el nombre de una

ciudad previamente almacenada en una variable de tipo NSString:

Desarrollo:

1- Definimos la variable que almacenará el nombre de la ciudad:

NSSTring *miCiudad=@”TRUJILLO”;

2- Definimos una nueva variable de tipo NSString que inicialmente almacene el valor de

la variable miCiudad:

NSString *demiCiudad=[[NSString alloc]initWithString: miCiudad];

Lección 11: Trabajando con estructuras condicionales

En Objective c también podemos trabajar con condicionales, sin embargo la forma en

que se declaran las estructuras condicionales difiere de otros lenguajes de

programación, la forma más simple de trabajar con condicionales en Objective c es con

un simple if y su estructura es la siguiente:

If(condición a cumplirse){

Instrucciones a ejecutarse de cumplirse la condición;

}

Ejemplo: Mostrar un mensaje que indique que debemos de vestir ropa abrigadora por

que el clima es frío.

Desarrollo:

1- Definir la variable que establece que el clima es frío, para esto vamos a hacer uso de

variables tipo BOOL y le asignaremos un valor YES.

Page 8: Tutorial de Objective C

Tutorial Objective C

Autor: Ing. Luis Ernesto Castillo Alfaro

BOOL climafrio=YES;

2- Establecemos la estructura condicional que incluya la condición a cumplir y las

instrucciones a ejecutar de cumplir la condición:

If(climafrio){

NSLog(@”Debes de vestir ropa abrigadora”);

}

Sin embargo también podemos establecer las instrucciones a ejecutar si la condición

de que el clima es frio no se cumpla y para esto utilizamos el operador de negación !.

Ejemplo: Teniendo en cuenta el caso anterior mostrar un mensaje que indique vistas

ropa delgada en caso de que el clima no se frío.

Desarrollo:

1- Establecemos el valor de la variable climafrio a NO para que se cumpla el

segundo grupo de instrucciones:

BOOL climafrio=NO;

2- Establecemos las estructuras condicionales para que ejecuten el grupo de

instrucciones correspondientes dependiendo de que si el clima es frio o no,

como se puede cumplir 1 condición de un grupo de 2 condicionales se debe de

establecer 2 estructuras condicionales y en este caso usaremos también la

instrucción else para el caso de que no se cumpla la primera condición se evalúe

la segunda y de cumplirse esta ejecute sus instrucciones:

If(climafrio){

NSLog(@”Debes de vestir ropa abrigadora”);

}else{

NSLog(@”Debes de vestir ropa delgada);

}

También podemos establecer las estructuras condicionales por separado usando

el operador de negación !:

If(climafrio){

NSLog(@”Debes de vestir ropa abrigadora”);

}

Page 9: Tutorial de Objective C

Tutorial Objective C

Autor: Ing. Luis Ernesto Castillo Alfaro

If(!climafrio){

NSLog(@”Debes de vestir ropa delgada);

}

Lección 11: Comparando cadenas

Para comparar valores de objetos tipo NSString se puede utilizar el método isEqualToString

cuya sintaxis es:

NSString isEqualToString: toanotherstring

Ejemplo: Mostrar un mensaje que indique el turno de trabajo que le corresponde a los meseros

de un restaurante según el nombre de mesero consultado:

Desarrollo:

1- Establecemos las estructuras condicionales para cada uno de los nombres de meseros a

comparar:

If(mesero isEqualToString: @”CARLOS”){

NSLog(@“Turno Mañana”);

}else if(mesero isEqualToString:@”JOSE”){

NSLog(@”Turno Tarde”);

}else{

NSLog(@”Turno Noche”)

}

Lección 12: Trabajando con estructuras repetitivas

En esta oportunidad vamos a ver cómo utilizar estructuras repetitivas cuando se debe de aplicar

las mismas instrucciones a un conjunto de objetos del mismo tipo, para este tipo de casos se hace

uso de la estructura repetitiva for.

Ejemplo: Mostrar la cantidad de caracteres de cada elemento de un arreglo.

Solución:

1- Definimos el arreglo:

NSArray *nombres=@[@”CLAUDIA”,@”CAROLINA”,@”CRISTINA”,@”CARLA”);

2- Definimos la estructura repetitiva:

Page 10: Tutorial de Objective C

Tutorial Objective C

Autor: Ing. Luis Ernesto Castillo Alfaro

for(NSString *nombre in nombres){

NSUInteger cantcar=[nombre length];

NSLog(@”El nombre %@ tiene %lu caracteres”,nombre,cantcar);

}

El resultado de sería:

El nombre CLAUDIA tiene 7 caracteres.

El nombre CAROLINA tiene 8 caracteres.

El nombre CRISTINA tiene 8 caracteres.

El nombre CARLA tiene 5 caracteres.

Lección 13: Trabajando con bloques:

En esta oportunidad vamos a ver cómo trabajar con bloques (funciones) en Objective c, los

bloques nos permiten ejecutar una serie de instrucciones de manera independiente de si

usáramos estructuras condicionales como es el caso del if, etc. Los bloques permiten tener

parámetros de entrada y según dichos parámetros o argumentos ejecutar ciertas instrucciones

con los mismos.

Ejemplo: Se desea crear un bloque que debe de ser usado para mostrar un mensaje que indique

cual es el nombre de un estudiante ingresado.

Desarrollo:

1- Establecer las instrucciones a ejecutar :

Lo que deseamos en principio es imprimir un mensaje según el nombre ingresado y para

esto usaremos el comando NSLog:

NSLog(@”El nombre del estudiante es %@”, nomestudiante);

Previamente debemos de tener declarada la variable nomestudiante que obviamente

tiene que ser de tipo NSString:

NSString *nomestudiante;

NSLog(@”El nombre del estudiante es %@”, nomestudiante);

Si colocamos estas instrucciones en un bloque sería algo como:

Page 11: Tutorial de Objective C

Tutorial Objective C

Autor: Ing. Luis Ernesto Castillo Alfaro

^ (NSString *nomestudiante){

NSLog(@”El nombre del estudiante es %@”, nomestudiante);

};

2- Establecemos la función que usará el conjunto de instrucciones definidas previamente:

void(^NombreEstudiante)(NSString *)=^ (NSString *nomestudiante){

NSLog(@”El nombre del estudiante es %@”, nomestudiante);

};

3- Ahora usamos la función NombreEstudiante con algunos nombres como por ejemplo:

Carlos, Juan:

NombreEstudiante(@”Carlos”);

NombreEstudiante(@”Juan”);

Lección 14: Reemplazando una cadena por otra

En esta oportunidad vamos a explicar cómo se puede realizar el cambio de una cadena por

otra. Ejemplo: Es común que en todos los idiomas del mundo existan ciertas jergas, sim

embargo para documentos formales o cuando se desea enviar un mensaje, carta a otra

persona dice y nos hace quedar bien el escribir apropiadamente, en nuestro lenguaje se suele

utilizar la jerga “pes” cuando se quiere decir “pues”, el ejercicio consiste en realizar un

programa que permita realizar el cambio de la jerga pes por la palabra pues en un texto

cuantas veces aparezca dicha jerga.

Solución:

1- Declarar variables que contengan el texto a corregir, la jerga y la palabra correcta:

NSSTring *texto=@”En la actualidad existen muchos programas que no son

culturales pes, deberían trasmitir programas educativos pes”;

NSSTring *jerga=@”pes”;

NSSTring *palcorrecta=@”pues”;

2- Hacer uso de la function que nos permita reemplazar la jerga por la palabra correcta, dicha

función es la función stringByReplacingOccurrencesOfString:withString, esta función

necesita de 2 parámetros, su sintaxis es:

Page 12: Tutorial de Objective C

Tutorial Objective C

Autor: Ing. Luis Ernesto Castillo Alfaro

Texto StringByReplacingOccurrencesOfString: textoabuscar withString:

textoquereemplezaraaltextobuscado

3- Definir la variable que contendrá el texto corregido:

NSSTring *textocorregido=[texto StringByReplacingOccurrencesOfString: jerga withString:

palcorrecta];

4- Imprimiendo el resultado de la corrección del texto:

NSLog(@"%@", textocorregido);

Tutorial 15: Ahora vamos a ver como evaluar múltiples valores y dependiendo del valor

evaluado realizar una serie de instrucciones, para esto debemos de utilizar switch cuya sintaxis

es:

switch (variable) {

case variable tiene el valor de: {

instrucciones a realizar

break;

}

case variable tiene el valor de: {

instrucciones a realizar

break;

}

}

Dónde:

Variable: es la variable a evualuar y depediendo de su valor se realizaran una serie de

instrucciones. Dicha variable puede tener múltiples valores.

Ejemplo: Dependiendo del día de la semana indicar que curso le toca a un estudiante

universitario de la Escuela de Ingeniería de Sistemas de una determinada Universidad.

Solución:

1- En primer lugar necesitamos de una función de Objective C que nos permite obtener el día

de la semana actual, dicha función es getDayOfWeek() , ahora vamos a crear una variable

de tipo NSInteger que reciba el resultado de dicha función:

Page 13: Tutorial de Objective C

Tutorial Objective C

Autor: Ing. Luis Ernesto Castillo Alfaro

NSInteger diasemana=getDayOfWeek();

2- Evaluamos el valor de la variable diasemana usando switch y dependiendo del valor de

dicha variable ejecutaremos una serie de instrucciones:

switch (diasemana) {

case 1: {

NSLog(@”Hoy tienes Introducción a Sistemas”);

break;

}

case 2: {

NSLog(@”Hoy tienes Algoritmos”);

break;

}

case 3: {

NSLog(@”Hoy tienes Base de Datos”);

break;

}

case 4: {

NSLog(@”Hoy tienes Programación I”);

break;

}

case 5: {

NSLog(@”Hoy tienes Redes”);

break;

}

case 6: {

NSLog(@”Hoy tienes Inteligencia Artificial”);

break;

}

}

Se usa la instrucción break para indicar que una vez que se encuentra que el valor de la variable

diasemana evaluado es igual al día actual de la semana ya no se deben de realizar más

búsquedas.

Page 14: Tutorial de Objective C

Tutorial Objective C

Autor: Ing. Luis Ernesto Castillo Alfaro

Lección 16: Trabajando con clases

Al igual que en otros lenguajes de programación en Objective C también existe el concepto

de clases y objetos, si llevamos este concepto al mundo real podremos decir que una clase

viene a ser todo lo que podemos ver en el universo como por ejemplo una persona, un

mueble, etc. Cada una de estas clases tienen características propias que los diferencian

como podría ser color de ojos, color de cabello, raza para la clase persona y en

programación dichas características se conocen como propiedades, pero que hay de las

acciones que una persona podría realizar como hablar, caminar, etc, a esas acciones en

programación se les conoce como métodos.

Por ejemplo podríamos definir una clase persona usando un diccionario en Objective c:

NSDictionary *persona = @{

@"Nombre": @"Luis Castillo",

@"Edad": @34,

@"Pais": @"Peru"

};

En este caso se han definido para la clase persona 3 propiedades: Nombre, Edad y País,

pero que hay de sus métodos, como se definen o crean los mismos.

Definiendo una clase: Para definir una clase en primer lugar debemos de asignarle un

nombre a la misma, es por convención que el nombre de una clase empiece por una letra

mayúscula como por ejemplo para nuestra clase sería:

Persona

Definiendo la interface de una clase:

Una interface se puede entender como una lista de propiedades y métodos que posee una

clase, esto lo podemos comparar con la lista de comidas disponibles en el menú de un

restaurante, la sintaxis para definir una interface de una clase es:

@interface Persona

@end

Sin embargo por el momento no hemos definido ninguna propiedad o ningún método

para la clase Persona, en Objective C las clases derivan de una clase raíz llamada NSObject

y al ser clases derivadas de dicha clase raíz heredan todos sus métodos y para esto

tenemos la siguiente sintaxis:

Page 15: Tutorial de Objective C

Tutorial Objective C

Autor: Ing. Luis Ernesto Castillo Alfaro

@interface Persona : NSObject

@end

Definiendo las propiedades de una clase: Las propiedades de una clase vienen a ser sus

características o atributos, estas propiedades deben de ser declaradas dentro de la declaración de

la interface de la clase y al definirlas deben de ir precedidas de @property, claro que una

propiedad al igual que una variable necesitan de un tipo y de un nombre. Ejemplo: Asignar las

propiedades de Nombre, Edad y País a nuestra clase Persona:

Solución:

Para las propiedades requeridas les asignaremos un tipo NSString:

@property NSString *Nombre;

@property NSString *Pais;

La declaración final sería:

@interface Persona : NSObject

@property NSString *Nombre;

@property NSString *Pais;

@end

Implementando una clase:

Implementar una clase significa invocarla y hacer uso de la misma, en Objective C la

implementación de una clase va separada de su interface y son organizadas en archivos diferentes,

se suele usar la convención de un archivo con extensión .h para definir la interfaz de una clase y un

archivo con extensión .m para la implementación de una clase. Para implementar una clase se usa

la siguiente sintaxis:

@implementation Persona

@end

Como mencioné antes la organización de archivos tanto para la interface como para la

implementación de una clase, al implementar la clase se tiene que hacer uso del comando

#import, esto hará que se busque el archivo con extensión .h y lo copie en el archivo con extensión

.m. Entonces en el archivo con extensión .m se tendría:

Page 16: Tutorial de Objective C

Tutorial Objective C

Autor: Ing. Luis Ernesto Castillo Alfaro

#import Persona.h

@implementation Persona

@end

Al implementar una clase las propiedades de la misma son implementadas automáticamente, esto

no sucede con los métodos de la clase.

Lección 17: Creando métodos para una clase

En la lección anterior vimos el uso y definición de propiedades de una clase, en esta oportunidad

vamos a ver el uso de métodos los cuales le permiten tener una mejor funcionalidad a una clase,

permiten que un objeto responda a mensajes especializados. Imaginemos que para la clase

Persona tenemos un objeto de la misma que pueda responden al mensaje de hablar, su sintaxis

sería algo como:

Persona *Luis = [[Persona alloc] init];

[Luis hablar];

Para enviar el mensaje hablar al objeto Luis debemos de declarar el método hablar en nuestro

archivo header (archivo con extensión .h), cuya sintaxis sería la siguiente:

@interface Persona : NSObject

// list of properties

-(void)hablar;

@end

Como vemos los métodos de una clase también se declaran en su interface y estos son declarados

empezando por un guión medio (-), seguidos del tipo del valor retornado por el método entre

paréntesis, en la declaración anterior tenemos que dice (void), esto significa que el método no

retorna nada.

Implementando métodos de una clase:

Anteriormente vimos la declaración de un método en la clase Persona, pero el mismo no realiza

ninguna acción, para que los métodos de una clase puedan realizar acciones necesitan ser

implementados en un archivo con extensión .m. En dicho archivo se pueden indicar las acciones

que realizará el método declarado en el archivo con extensión.h. Para nuestro caso podemos

indicar que el método hablar muestre un mensaje de saludo:

En el archivo con extensión .m se tiene:

Page 17: Tutorial de Objective C

Tutorial Objective C

Autor: Ing. Luis Ernesto Castillo Alfaro

#import "Persona.h"

@implementation Persona

- (void) hablar;

{

NSLog(@"Hola mi nombre es:Luis");

}

@end

Como vemos en el archivo con extensión .m se ha implementado el método hablar el cual tiene

similar declaración que cuando declaramos el método inicialmente en la interface de la clase

Persona, sin embargo como se trata de implementar el método se agrega entre llaves las

instrucciones a realizar cada vez que el mensaje hablar sea enviado a un objeto de la clase persona

que en este caso es un texto de saludo.

Ejecutando el método:

Ahora que ya tenemos implementado el método hablar de la clase persona lo podemos ejecutar,

como el método corresponde a una clase y los objetos de una clase heredan sus propiedades y

métodos crearemos un objeto de la clase persona y le aplicaremos el método hablar.

Pasos a seguir:

1- Importamos el archivo Persona.h

#import "Persona.h"

2- Creamos un objeto de la clase Persona con el nombre Luis:

Persona *Luis = [[Persona alloc] init];

3- Enviamos el mensaje hablar al objeto Luis:

[Luis hablar];

4- Obtenemos el resultado de invocar el método hablar:

Hola mi nombre es: Luis

Page 18: Tutorial de Objective C

Tutorial Objective C

Autor: Ing. Luis Ernesto Castillo Alfaro

Lección 18: Métodos que retornan resultados:

Hasta ahora hemos visto métodos de clases que no retornan resultados, ahora veremos

como retornar resultados en métodos de una clase, esto varia la forma de la sintaxis tanto

al momento de declarar el método (archivo con extensión .h) como al momento de

implementarlo(archivo con extensión .m). Veamos cómo se declararía e implementaría el

método hablar de la clase persona si este devolviera un resultado:

Pasos a seguir:

1- Vimos que cuando se declara un método se inicia por un guión medio seguido por el

tipo de valor que retorna entre paréntesis, en nuestro caso retornará un valor de tipo

cadena o NSString:

-(NSString *)hablar;

Esto es el archivo con extensión .h

Al implementar el método en el archivo con extensión .m también se debe de declarar

el tipo de resultado retornado:

#import Persona.h

@Implentation Persona

-(NSString *)hablar;

NSString *mensaje=@”Mi nombre es :Luis”;

return mensaje;

@end

Ahora veremos como pasar el resultado del método hablar de la clase persona a una variable:

Pasos a seguir:

1- Importamos la clase Persona:

#import Persona.h

2- Creamos el objeto Luis que hereda de la clase persona:

Persona *Luis= [[Persona alloc] init];

Page 19: Tutorial de Objective C

Tutorial Objective C

Autor: Ing. Luis Ernesto Castillo Alfaro

3- Declaramos una variable de tipo NSString que recibirá el resultado del método

hablar de la clase persona:

NSString *mensaje=[Luis hablar];

4- Imprimimos el valor de la variable mensaje:

NSLog(@”El mensaje es:%@”,mensaje);

Lección 19: Declarando métodos con argumentos:

En esta oportunidad veremos como declarar métodos que consideren argumentos, como

sabemos los argumentos vienen a ser datos o valores sobres los cuales se realizan ciertas

acciones, dependiendo de los argumentos ingresados se obtendrá un determinado

resultado.

Al agregar argumentos a un método de una clase su sintaxis varía tanto en su declaración

como en su implementación:

a- En su declaración:

Persona.h

@inteface Persona:NSObject

-void(NSSTring *)hablar:(NSString *)saludo;

@end

Donde:

Los 2 puntos “:” significa que lo siguiente es la declaración de un argumento

(NSString *) significa que el argumento del método es de tipo cadena

saludo es el nombre del argumento de tipo NSString

b- En su implementación:

#import Persona.h

@implementation Persona

-(NSString *)hablar:(NSString *)saludo;

{

Page 20: Tutorial de Objective C

Tutorial Objective C

Autor: Ing. Luis Ernesto Castillo Alfaro

NSString *elsaludo =[NSString stringWithFormat:@"Yo:%@ digo: %@", self.nombre,

saludo];

return elsaludo;

}

@end

Aquí notamos que como parte del mensaje a enviar encontramos self.nombre eso hace

referencia a la propiedad nombre de cada objeto heredado de la clase Persona.

Haciendo uso del argumento del método hablar:

Pasos a seguir:

1- Importar la clase Persona:

#import Persona.h

2- Crear un objeto que herede de la clase Persona:

Persona *Luis=[[Persona alloc]init];

3- Inicializamos la propiedad nombre del objeto Luis:

Luis.nombre=@”Luis Ernesto”;

4- Imprimimos algunos mensajes para el método hablar del objeto Luis:

NSLog([Luis hablar:@”Hola”]);

NSLog([Luis hablar:@”que tal”]);

NSLog([Luis hablar:@”como te vá”]);

5- Los resultados serían:

Yo: Luis Ernesto digo: Hola

Yo: Luis Ernesto digo: que tal

Yo: Luis Ernesto digo: como te vá

Page 21: Tutorial de Objective C

Tutorial Objective C

Autor: Ing. Luis Ernesto Castillo Alfaro

Lección 19: Declarando propiedades de una clase como de solo lectura:

A las propiedades de una clase se les puede declarar como de solo lectura y así

evitar que por medio de código externo se les pueda modificar su valor como por

ejemplo a la propiedad nombre de la clase Persona se le puede asignar un valor

con el siguiente código:

Persona *Luis=[Persona alloc[init]];

Luis.nombre=@”Luis Ernesto”;

Si deseamos que una propiedad de una clase no pueda ser modificada por código

externo debemos de declararla de la siguiente forma:

@interface NombreClase : NSObject

@property (readonly) tipovalor *nombrepropiedad;

@end

Para la propiedad nombre de la clase persona sería:

@interface Persona : NSObject

@property (readonly) NSString *nombre;

@end

Una vez declarada una propiedad de una clase como de solo lectura esta no puede ser

modificada al implementarla cuando por ejemplo esta es parte de un método de una clase,

imaginemos que tenemos el método cambiarnombre de la clase Persona que permita

hacer el cambio del valor de la propiedad nombre:

-void()cambiarnombre:(NSString *)nuevonombre;

Las instrucciones que tendría el método de la clase Persona al implementarlo

sería:

@implementation Persona

-(void)cambiarnombre:(NSString *)nuevonombre;

{

self.nombre=nuevonombre;

}

@end

Esta declaración no sería correcta porque estamos intentando cambiar el valor de

una propiedad de solo lectura.

Page 22: Tutorial de Objective C

Tutorial Objective C

Autor: Ing. Luis Ernesto Castillo Alfaro

Hay una forma en que las propiedades de una clase que son solo lectura puedan ser

modificadas por métodos de la clase a la que pertenecen dichas propiedades, cada una de

estas propiedades tienen una variable interna que tiene el mismo nombre de ellas

precedidas por el guión bajo (_), para la propiedad nombre de la clase persona sería:

-nombre

Ahora modificando el método cambiarnombre para modificar el valor de la propiedad

nombre tendríamos:

@implementation Persona

-(void)cambiarnombre:(NSString *)nuevonombre;

{

_nombre=nuevonombre;

}

@end

Ahora si podemos utilizar el método cambiarnombre para modificar el nombre de

un objeto de la clase Persona:

Persona *Luis=[Persona alloc[init]];

NSString *nuevonombre=[Luis cambiarnombre:@”Luis Antonio”];

Hay una forma en que se puede inicializar valores de propiedades de un objeto

perteneciente a una clase, es decir cada vez que se declare un objeto de una clase de por

sí ya tendrá definida sus propiedades, para hacer esto al implementar una cl ase por

ejemplo la clase persona se puede escribir el siguiente código:

@implementation Persona

- (Persona *) init;

{

_pais = @"Perú";

return [super init];

}

@end

Con este código estamos estableciendo que cada objeto de la clase Persona tendrá el valor

de Perú para su propiedad país.

Page 23: Tutorial de Objective C

Tutorial Objective C

Autor: Ing. Luis Ernesto Castillo Alfaro