SlideShare una empresa de Scribd logo
Tutorial Objective C
Autor:Ing. LuisErnestoCastilloAlfaro
AprendiendoObjectiveC:
Estás a punto de empezar a aprender Objective C, el lenguaje utilizado por Apple y por los
desarrolladoresde Apple paracrearaplicacionesparaiphone,ipadyparacrear aplicacionesmac.
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
comprendasmejor.
Hemostratado de hacer el curso lomás sencillo paraempezar.
Lección1: Escribiendounmensaje 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 amostrar”);
Ejemplo:Se deseamostrarunmensaje que contengaunabienvenidaal cursode Objective C.
Desarrollo:
NSLog(“@Bienvenidoal Cursode ObjectiveC”);
Lección2: Utilizandovariablesde tipocadena
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
stringque enObjective Cel tipode variablesque almacenanvaloresde tipocadenaes NSSTring.
Sintaxis:
NSString*nombrevariable=@”valorvariable”;
Ejemplo:Crearunavariable que almacene tunombre.
Desarrollo:
NSString*minombre=@”LUISERNESTOCASTILLOALFARO”;
Lección3: Imprimiendoel valorde unavariable:
En esta lección combinaremos lo aprendido en las 2 lecciones previas para mostrar en un mensaje
el valorde unavariable de tipocadena.
Tutorial Objective C
Autor:Ing. LuisErnestoCastilloAlfaro
Ejemplo: Imprimir en un mensaje tu nombre que previamente debe de ser almacenado en una
variable de tipoNSString.
Desarrollo:
1- Declaramoslavariable de tipoNSStringque almacenaránuestronombre
NSString*minombre=@”LUISERNESTOCASTILLOALFARO”;
2- Imprimimosel valorde lavariable *minombre
NSLog(minombre);
Lección4: Imprimiendomensajesde tipocadena concatenandoel valorde unavariable
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 vecescomovariablesagreguemosenunmensaje de salida.
Ejemplo:Imprimirunmensaje que contengaunsalidoseguidode tunombre almacenadoenuna
variable previamente.
Desarrollo:
1- Declarar lavariable de tipoNSStringque contendrátunombre:
NSString*minombre=@”LUISERNESTOCASTILLOALFARO”;
2- Imprimimosel mensaje:
NSlog(@“Hola que tal %@”,minombre);
Tarea: Crear un mensaje que muestre los datos de tus nombres y apellidos almacenados en
sus respectivasvariablesde tipoNSStringpreviamente.
Lección5: Trabajandocon 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 losvaloresde variablestipo NSString.
Sintaxisde declaraciónde variablestipoNSNumber:
Tutorial Objective C
Autor:Ing. LuisErnestoCastilloAlfaro
NSNumber*nombrevariable=@valornumérico;
Ejercicio:Mostrar unmensaje que muestre tuedadpreviamente almacenadoenunavariable de
tipoNSNumber,utilizarplaceholders.
Desarrollo:
1- Declarar lavariable de tipoNSNumberque almacenarátuedad:
NSNumber*miedad=@34;
2- Imprimirel mensaje mostrandotuedad:
NSLog(@”Mi edades%@”,miedad);
Lección6: Creandounavariable de tipoarray y accediendoasuselementos
Los arrays nos ayudan a almacenar objetos del mismo tipo en una misma variable. Si por ejemplo
deseamosalmacenarvaloresde tipocadenaenunarray loharíamos de la siguiente manera:
Ejemplo:Crearunarray que almacene unalistade ciudadesde Colombia.
Desarrollo:
1- Definirlavariable de tipoarrayy asignarsus 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 segundoelementode lalistaes%@”,ciucolochas[2]);
Tutorial Objective C
Autor:Ing. LuisErnestoCastilloAlfaro
Lección7: Imprimiendomensajesde 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
podemoshacercon lasiguiente sintaxis:
NSUIntegernombrevariable=[nombre variable de tipoNSString 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
%@, ensu lugarutilizamosel placeholder%lu.
Ejemplo: Mostrar unmensaje que indiquelacantidadde caracteresque tiene tunombre.
Desarrollo:
1- Declaramoslavariable de tipoNSStringque contienetunombre:
NSString*tunombre=@”LUIS”;
2- Declaramoslavariable de tipoNUIntegerque contendrálacantidadde caracteresde la
variable tunombre:
NUInteger longitudNombre=[tunombre length];
3- Imprimimosel mensaje que indicalacantidadde caracteresque tiene tunombre:
NSLog(@”Tunombre tiene %lucaracteres”,longitudnombre);
Lección8: OperandoconNSNumbers
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 estohacemoslosiguiente:
1- Declaramoslasvariablesde tipoNSNumber:
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
Tutorial Objective C
Autor:Ing. LuisErnestoCastilloAlfaro
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- Haciendolaconversiónde los objetostipoNSNumberal tipoNSUInteger:
NSUInteger numerounoEntero=[numeroUnounsignedIntegerValue];
NSUInteger numerodosEntero=[numeroDos unsignedIntegerValue];
3- Definiendolavariable de tipoNSUIntegerque almacenarael resultadode lamultiplicación
de los2 números:
NSUIntegerresultado=numerounoEntero*numeroDosEntero;
4- Imprimientoel resultadode lamultiplicaciónde los2números:
NSLog(@”El resultadode multiplicarlos2 númeroses%lu”,resultado);
Lección9: Uniendoobjetosde tipoNSString
Cuandose trata de unirobjetosde tipoNSStringse podríapensarque se podría haceralgo como
losiguiente:
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
NSStringque recibe el métodostringByAppendingString.
Sintaxis:
[cadena1stringByAppendingString:cadena2];
El métodostringByAppendingStringutilizalos2puntosindicandoque necesitaque se le indique
el parámetroque eneste caso esel objetode tipoNSStringque recibirádichométodo.
Ejemplo:Mostrarun mensaje que concatene losvaloresde lasvariablesque almacenenlosdatos
de tu nombre y de tu apellido.
Desarrollo:
1- Definimoslasvariablesque almacenaránlosdatosde nombre yapellido:
Tutorial Objective C
Autor:Ing. LuisErnestoCastilloAlfaro
NSString*nombre=@”LUIS”;
NSString*apellido=@”CASTILLO”;
2- Concatenamoslasvariablesde tipoNSString:
NSString*nombreCompleto=[nombre stringByAppendingString:apellido];
3- Imprimiendoel nombre completo:
NSLog(@”Tunombre completoes%@”,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- Definimoslasvariablesque almacenaránlosdatosde nombre yapellido:
NSString*nombre=@”LUIS”;
NSString*apellido=@”CASTILLO”;
b- Definimoslavariablede tipoNSStringque almacenaráel nombre seguidodel apellido
con un espacioenblancoentre 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 cantidadde objetosde tipoNSStringaconcatenar:
En primerlugaral espacioenblancoque habrá entre el nombre yel apellidorecibiráel
métodostringByAppendingStringque louniráconel valordel objetonombre:
Nombre stringByAppendingString:@”“
Luego a ese valor resultante lo debemos de concatenar con el valor de la variable
apellido:
[[Nombre stringByAppendingString:@”“] stringByAppendingString:apellido]
Este últimoresultadodebe de seralmacenadoenunavariable de tipoNSString:
NSString*nombreCompleto=[[Nombre stringByAppendingString:@”“]
stringByAppendingString:apellido];
Tutorial Objective C
Autor:Ing. LuisErnestoCastilloAlfaro
Finalmentemostramosel nombre completoenunmensaje:
NSLog(@”El nombre completoes%@”,nombreCompleto);
Lección10: Inicializandoobjetosconundeterminadovalor
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
ciudadpreviamentealmacenadaenunavariable de tipoNSString:
Desarrollo:
1- Definimoslavariableque almacenaráel nombre de laciudad:
NSSTring*miCiudad=@”TRUJILLO”;
2- Definimosunanuevavariable de tipoNSStringque inicialmentealmaceneel valor de
la variable miCiudad:
NSString*demiCiudad=[[NSString alloc]initWithString:miCiudad];
Lección11: Trabajandocon estructurascondicionales
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 ysuestructuraes la siguiente:
If(condiciónacumplirse){
Instruccionesaejecutarse de cumplirse lacondición;
}
Ejemplo:Mostrarun mensaje que indique que debemosde vestirropaabrigadorapor
que el climaesfrío.
Desarrollo:
1- Definirlavariable que estableceque el climaesfrío,para estovamosa hacer usode
variablestipoBOOLy le asignaremosunvalorYES.
Tutorial Objective C
Autor:Ing. LuisErnestoCastilloAlfaro
BOOL climafrio=YES;
2- Establecemoslaestructuracondicionalque incluyalacondiciónacumplirylas
instruccionesaejecutarde cumplirlacondición:
If(climafrio){
NSLog(@”Debesde vestirropaabrigadora”);
}
Sin embargo también podemos establecer las instrucciones a ejecutar si la condición
de que el climaes frionose cumplay para estoutilizamosel operadorde negación !.
Ejemplo:Teniendoen cuentael casoanterior mostrarun mensaje que indique vistas
ropa delgadaencaso de que el climano se frío.
Desarrollo:
1- Establecemosel valorde lavariable climafrioaNOpara que se cumpla el
segundogrupode 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 segundayde cumplirse estaejecute susinstrucciones:
If(climafrio){
NSLog(@”Debesde vestirropaabrigadora”);
}else{
NSLog(@”Debesde vestirropadelgada);
}
Tambiénpodemosestablecer lasestructurascondicionalesporseparadousando
el operadorde negación !:
If(climafrio){
NSLog(@”Debesde vestirropaabrigadora”);
}
Tutorial Objective C
Autor:Ing. LuisErnestoCastilloAlfaro
If(!climafrio){
NSLog(@”Debesde vestirropa delgada);
}
Lección11: Comparandocadenas
Para comparar valores de objetos tipo NSString se puede utilizar el método isEqualToString
cuya sintaxises:
NSStringisEqualToString:toanotherstring
Ejemplo:Mostrarun mensaje que indique el turnode trabajoque le corresponde alosmeseros
de un restaurante segúnel nombre de meseroconsultado:
Desarrollo:
1- Establecemos las estructuras condicionales para cada uno de los nombres de meseros a
comparar:
If(meseroisEqualToString:@”CARLOS”){
NSLog(@“Turno Mañana”);
}else if(meseroisEqualToString:@”JOSE”){
NSLog(@”TurnoTarde”);
}else{
NSLog(@”TurnoNoche”)
}
Lección12: Trabajandocon estructurasrepetitivas
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 estructurarepetitivafor.
Ejemplo:Mostrarla cantidadde caracteres de cada elementode unarreglo.
Solución:
1- Definimosel arreglo:
NSArray*nombres=@[@”CLAUDIA”,@”CAROLINA”,@”CRISTINA”,@”CARLA”);
2- Definimoslaestructurarepetitiva:
Tutorial Objective C
Autor:Ing. LuisErnestoCastilloAlfaro
for(NSString*nombre innombres){
NSUIntegercantcar=[nombre length];
NSLog(@”El nombre %@tiene %lucaracteres”,nombre,cantcar);
}
El resultadode sería:
El nombre CLAUDIA tiene 7 caracteres.
El nombre CAROLINA tiene 8caracteres.
El nombre CRISTINA tiene 8caracteres.
El nombre CARLA tiene 5caracteres.
Lección13: Trabajandocon 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 losmismos.
Ejemplo:Se deseacrearunbloque que debe de serusadopara mostrar unmensaje que indique
cual esel nombre de un estudiante ingresado.
Desarrollo:
1- Establecerlasinstruccionesaejecutar:
Lo que deseamosenprincipioesimprimirunmensajesegúnel nombre ingresadoypara
estousaremosel comandoNSLog:
NSLog(@”El nombre del estudiante es%@”,nomestudiante);
Previamentedebemosde tenerdeclaradalavariable nomestudianteque obviamente
tiene que serde tipoNSString:
NSString*nomestudiante;
NSLog(@”El nombre del estudiante es%@”,nomestudiante);
Si colocamosestasinstruccionesenunbloque seríaalgocomo:
Tutorial Objective C
Autor:Ing. LuisErnestoCastilloAlfaro
^ (NSString*nomestudiante){
NSLog(@”El nombre del estudiantees%@”,nomestudiante);
};
2- Establecemoslafunciónque usaráel conjuntode instruccionesdefinidaspreviamente:
void(^NombreEstudiante)(NSString*)=^(NSString*nomestudiante){
NSLog(@”El nombre del estudiantees%@”,nomestudiante);
};
3- Ahorausamosla función NombreEstudiante conalgunosnombrescomoporejemplo:
Carlos,Juan:
NombreEstudiante(@”Carlos”);
NombreEstudiante(@”Juan”);
Lección14: Reemplazandounacadenaporotra
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 vecesaparezcadichajerga.
Solución:
1- Declarar variablesque contenganel textoacorregir,lajergay la palabracorrecta:
NSSTring*texto=@”Enla actualidadexistenmuchosprogramasque noson
culturalespes,deberíantrasmitirprogramaseducativospes”;
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
necesitade 2 parámetros,susintaxises:
Tutorial Objective C
Autor:Ing. LuisErnestoCastilloAlfaro
TextoStringByReplacingOccurrencesOfString:textoabuscarwithString:
textoquereemplezaraaltextobuscado
3- Definirlavariable que contendráel textocorregido:
NSSTring*textocorregido=[textoStringByReplacingOccurrencesOfString:jergawithString:
palcorrecta];
4- Imprimiendoel resultadode lacorreccióndel 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 valorde:{
instruccionesarealizar
break;
}
case variable tiene el valorde:{
instruccionesarealizar
break;
}
}
Dónde:
Variable: es la variable a evualuar y depediendo de su valor se realizaran una serie de
instrucciones.Dichavariablepuedetenermúltiplesvalores.
Ejemplo: Dependiendo del día de la semana indicar que curso le toca a un estudiante
universitariode laEscuelade Ingenieríade Sistemasde unadeterminadaUniversidad.
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 tipoNSIntegerque recibael resultadode dichafunción:
Tutorial Objective C
Autor:Ing. LuisErnestoCastilloAlfaro
NSIntegerdiasemana=getDayOfWeek();
2- Evaluamos el valor de la variable diasemana usando switch y dependiendo del valor de
dichavariable ejecutaremosunaserie de instrucciones:
switch(diasemana) {
case 1: {
NSLog(@”HoytienesIntroducciónaSistemas”);
break;
}
case 2: {
NSLog(@”HoytienesAlgoritmos”);
break;
}
case 3: {
NSLog(@”HoytienesBase de Datos”);
break;
}
case 4: {
NSLog(@”HoytienesProgramaciónI”);
break;
}
case 5: {
NSLog(@”HoytienesRedes”);
break;
}
case 6: {
NSLog(@”HoytienesInteligenciaArtificial”);
break;
}
}
Se usa lainstrucció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.
Tutorial Objective C
Autor:Ing. LuisErnestoCastilloAlfaro
Lección16: Trabajandocon clases
Al igual que en otroslenguajes de programaciónen 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ónse lesconoce como métodos.
Por ejemplopodríamosdefinirunaclase personausandoundiccionarioenObjective c:
NSDictionary*persona=@{
@"Nombre":@"LuisCastillo",
@"Edad":@34,
@"Pais":@"Peru"
};
En este caso se han definido para la clase persona 3 propiedades: Nombre, Edad y País,
peroque hay de sus métodos,comose definenocreanlosmismos.
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úsculacomopor ejemploparanuestraclase sería:
Persona
Definiendolainterfacede unaclase:
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,lasintaxisparadefinirunainterface de unaclase 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 lasiguiente sintaxis:
Tutorial Objective C
Autor:Ing. LuisErnestoCastilloAlfaro
@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
propiedadesde Nombre,EdadyPaís a nuestra clase Persona:
Solución:
Para las propiedadesrequeridaslesasignaremosuntipoNSString:
@propertyNSString*Nombre;
@property NSString*Pais;
La declaraciónfinal sería:
@interface Persona:NSObject
@propertyNSString*Nombre;
@propertyNSString*Pais;
@end
Implementandounaclase:
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 conextensió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 siguientesintaxis:
@implementationPersona
@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 enel archivo con extensión
.m.Entoncesen el archivocon extensión.mse tendría:
Tutorial Objective C
Autor:Ing. LuisErnestoCastilloAlfaro
#importPersona.h
@implementationPersona
@end
Al implementar una clase las propiedades de la misma son implementadas automáticamente, esto
no sucede conlosmétodosde laclase.
Lección17: Creandométodosparauna 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 algocomo:
Persona*Luis= [[Personaalloc] init];
[Luishablar];
Para enviar el mensaje hablar al objeto Luis debemos de declarar el método hablar en nuestro
archivoheader(archivoconextensión.h),cuyasintaxisseríalasiguiente:
@interface Persona:NSObject
// listof 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
retornanada.
Implementandométodosde unaclase:
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
indicarque el métodohablarmuestre unmensaje de saludo:
En el archivocon extensión.mse tiene:
Tutorial Objective C
Autor:Ing. LuisErnestoCastilloAlfaro
#import"Persona.h"
@implementationPersona
- (void) hablar;
{
NSLog(@"Holami 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 eneste caso esun textode saludo.
Ejecutandoel 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étodoscrearemosunobjetode laclase personayle aplicaremosel métodohablar.
Pasos a seguir:
1- Importamosel archivoPersona.h
#import"Persona.h"
2- Creamosun objetode laclase Personaconel nombre Luis:
Persona*Luis= [[Personaalloc] init];
3- Enviamosel mensaje hablaral objetoLuis:
[Luishablar];
4- Obtenemosel resultadode invocar el métodohablar:
Hola mi nombre es:Luis
Tutorial Objective C
Autor:Ing. LuisErnestoCastilloAlfaro
Lección18: Métodosque retornanresultados:
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étodohablarde la clase personasi este devolvieraunresultado:
Pasosa 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
cadenao NSString:
-(NSString*)hablar;
Esto esel archivocon extensión.h
Al implementar el método en el archivo con extensión .m también se debe de declarar
el tipode resultadoretornado:
#import Persona.h
@ImplentationPersona
-(NSString*)hablar;
NSString*mensaje=@”Mi nombre es:Luis”;
returnmensaje;
@end
Ahoraveremoscomopasar el resultadodel métodohablarde laclase personaauna variable:
Pasosa 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];
Tutorial Objective C
Autor:Ing. LuisErnestoCastilloAlfaro
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ón19: Declarandométodosconargumentos:
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 ensu implementación:
a- En su declaración:
Persona.h
@inteface Persona:NSObject
-void(NSSTring*)hablar:(NSString*)saludo;
@end
Donde:
Los 2 puntos “:” significaque losiguiente esladeclaraciónde unargumento
(NSString*) significaque el argumentodelmétodoesde tipocadena
saludoesel nombre del argumentode tipoNSString
b- En su implementación:
#importPersona.h
@implementation Persona
-(NSString*)hablar:(NSString*)saludo;
{
Tutorial Objective C
Autor:Ing. LuisErnestoCastilloAlfaro
NSString *elsaludo =[NSString stringWithFormat:@"Yo:%@ digo: %@", self.nombre,
saludo];
returnelsaludo;
}
@end
Aquí notamos que como parte del mensaje a enviar encontramos self.nombre eso hace
referenciaalapropiedadnombre de cadaobjetoheredadode laclase Persona.
Haciendousodel argumentodel métodohablar:
Pasosa seguir:
1- Importarla clase Persona:
#importPersona.h
2- Crear unobjetoque herede de laclase Persona:
Persona*Luis=[[Personaalloc]init];
3- Inicializamoslapropiedadnombredel objetoLuis:
Luis.nombre=@”Luis Ernesto”;
4- Imprimimosalgunosmensajesparael métodohablardel objetoLuis:
NSLog([Luishablar:@”Hola”]);
NSLog([Luishablar:@”quetal”]);
NSLog([Luishablar:@”comote vá”]);
5- Los resultadosserían:
Yo: LuisErnestodigo:Hola
Yo: LuisErnestodigo:que tal
Yo: LuisErnestodigo:como te vá
Tutorial Objective C
Autor:Ing. LuisErnestoCastilloAlfaro
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 cambiodel valorde la propiedadnombre:
-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.
Tutorial Objective C
Autor:Ing. LuisErnestoCastilloAlfaro
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
precedidasporel guiónbajo(_),para la propiedadnombre de laclase personasería:
-nombre
Ahoramodificandoel métodocambiarnombre paramodificarel valorde lapropiedad
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 clase por
ejemplolaclase personase puede escribirel siguiente código:
@implementation Persona
- (Persona *) init;
{
_pais = @"Perú";
return [super init];
}
@end
Con este códigoestamos estableciendo que cada objeto de la clase Persona tendrá el valor
de Perúpara supropiedadpaís.
Tutorial Objective C
Autor:Ing. LuisErnestoCastilloAlfaro

Más contenido relacionado

PPTX
Resumen Java Script
DOC
1 herramientas desarrollo de software
PDF
Vb script hx-c-wd
PDF
VBScript Tutorial
PPTX
Anyi amaya
PDF
Guia no4 ado.net
DOCX
Tutorial Nro 1 de Desarrollo de Aplicaciones Móviles con Android
DOCX
Tutorial Nro.4 Desarrollo de Aplicaciones Móviles con Android
Resumen Java Script
1 herramientas desarrollo de software
Vb script hx-c-wd
VBScript Tutorial
Anyi amaya
Guia no4 ado.net
Tutorial Nro 1 de Desarrollo de Aplicaciones Móviles con Android
Tutorial Nro.4 Desarrollo de Aplicaciones Móviles con Android

Similar a Tutorial de Objective C (20)

PPTX
Constantes y variables enitmar
PDF
Implementacion de punteros
PDF
8.clases y objetos en c++
PDF
Tecnologia de informacion para uso empresarial
DOC
09 guiados spinner Java
DOCX
estreucturas basicas de la tecnologia 10-7
PDF
Estructuras Básicas_Tecnología_Grado10-7.pdf
PDF
Estructuras Básicas Ariadna Valencia 10-7
PDF
Trabajando de tecnología de concepto básicos de programación
PDF
conceptos básicos de programación tecnología
PDF
tecnología 2. contadores, acumuladores, variables
PDF
tecnología 2 trabajo grupal variables constantes acumuladores .pdf
PDF
taller de tecnologia. Conceptos básicos en programación
PDF
Conceptos básicos de programación trabajo
DOC
Jessik
DOC
Jessik
PDF
Unidad_01_01.pdf
PDF
Estructura de Datos
DOC
Vectores y matrices
Constantes y variables enitmar
Implementacion de punteros
8.clases y objetos en c++
Tecnologia de informacion para uso empresarial
09 guiados spinner Java
estreucturas basicas de la tecnologia 10-7
Estructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas Ariadna Valencia 10-7
Trabajando de tecnología de concepto básicos de programación
conceptos básicos de programación tecnología
tecnología 2. contadores, acumuladores, variables
tecnología 2 trabajo grupal variables constantes acumuladores .pdf
taller de tecnologia. Conceptos básicos en programación
Conceptos básicos de programación trabajo
Jessik
Jessik
Unidad_01_01.pdf
Estructura de Datos
Vectores y matrices
Publicidad

Más de Luis Ernesto Castillo Alfaro (6)

DOCX
TutorialKotlin.docx
DOCX
Tutorial de Lenguaje de Programación Swift
DOCX
Curso Excel- Sesión 1
DOCX
Tutorial Nro.5 Desarrollo de Aplicaciones Móviles con Android
DOCX
Tutorial Nro.3 - Desarrollo de Aplicaciones Móviles con Android
DOCX
Tutorial Nro. 2 de Desarollo de Aplicaciones Móviles con Android
TutorialKotlin.docx
Tutorial de Lenguaje de Programación Swift
Curso Excel- Sesión 1
Tutorial Nro.5 Desarrollo de Aplicaciones Móviles con Android
Tutorial Nro.3 - Desarrollo de Aplicaciones Móviles con Android
Tutorial Nro. 2 de Desarollo de Aplicaciones Móviles con Android
Publicidad

Último (20)

PPTX
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
PPTX
Acronis Cyber Protect Cloud para Ciber Proteccion y Ciber Seguridad LATAM - A...
PDF
Liceo departamental MICRO BIT (1) 2.pdfbbbnn
PDF
CyberOps Associate - Cisco Networking Academy
PPTX
ANCASH-CRITERIOS DE EVALUACIÓN-FORMA-10-10 (2).pptx
PPTX
RAP01 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
DOCX
Zarate Quispe Alex aldayir aplicaciones de internet .docx
PDF
Calidad desde el Docente y la mejora continua .pdf
PPT
El-Gobierno-Electrónico-En-El-Estado-Bolivia
PPTX
Presentación PASANTIAS AuditorioOO..pptx
PDF
Estrategia de apoyo tecnología miguel angel solis
PDF
Instrucciones simples, respuestas poderosas. La fórmula del prompt perfecto.
PPTX
Propuesta BKP servidores con Acronis1.pptx
PPTX
Presentación de Redes de Datos modelo osi
PDF
Maste clas de estructura metálica y arquitectura
PDF
5.1 Pinch y Bijker en libro Actos, actores y artefactos de Bunch Thomas (coor...
PPTX
IA de Cine - Como MuleSoft y los Agentes estan redefiniendo la realidad
PPTX
sa-cs-82-powerpoint-hardware-y-software_ver_4.pptx
PPTX
Power Point Nicolás Carrasco (disertación Roblox).pptx
PDF
Influencia-del-uso-de-redes-sociales.pdf
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
Acronis Cyber Protect Cloud para Ciber Proteccion y Ciber Seguridad LATAM - A...
Liceo departamental MICRO BIT (1) 2.pdfbbbnn
CyberOps Associate - Cisco Networking Academy
ANCASH-CRITERIOS DE EVALUACIÓN-FORMA-10-10 (2).pptx
RAP01 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
Zarate Quispe Alex aldayir aplicaciones de internet .docx
Calidad desde el Docente y la mejora continua .pdf
El-Gobierno-Electrónico-En-El-Estado-Bolivia
Presentación PASANTIAS AuditorioOO..pptx
Estrategia de apoyo tecnología miguel angel solis
Instrucciones simples, respuestas poderosas. La fórmula del prompt perfecto.
Propuesta BKP servidores con Acronis1.pptx
Presentación de Redes de Datos modelo osi
Maste clas de estructura metálica y arquitectura
5.1 Pinch y Bijker en libro Actos, actores y artefactos de Bunch Thomas (coor...
IA de Cine - Como MuleSoft y los Agentes estan redefiniendo la realidad
sa-cs-82-powerpoint-hardware-y-software_ver_4.pptx
Power Point Nicolás Carrasco (disertación Roblox).pptx
Influencia-del-uso-de-redes-sociales.pdf

Tutorial de Objective C

  • 1. Tutorial Objective C Autor:Ing. LuisErnestoCastilloAlfaro AprendiendoObjectiveC: Estás a punto de empezar a aprender Objective C, el lenguaje utilizado por Apple y por los desarrolladoresde Apple paracrearaplicacionesparaiphone,ipadyparacrear aplicacionesmac. 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 comprendasmejor. Hemostratado de hacer el curso lomás sencillo paraempezar. Lección1: Escribiendounmensaje 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 amostrar”); Ejemplo:Se deseamostrarunmensaje que contengaunabienvenidaal cursode Objective C. Desarrollo: NSLog(“@Bienvenidoal Cursode ObjectiveC”); Lección2: Utilizandovariablesde tipocadena 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 stringque enObjective Cel tipode variablesque almacenanvaloresde tipocadenaes NSSTring. Sintaxis: NSString*nombrevariable=@”valorvariable”; Ejemplo:Crearunavariable que almacene tunombre. Desarrollo: NSString*minombre=@”LUISERNESTOCASTILLOALFARO”; Lección3: Imprimiendoel valorde unavariable: En esta lección combinaremos lo aprendido en las 2 lecciones previas para mostrar en un mensaje el valorde unavariable de tipocadena.
  • 2. Tutorial Objective C Autor:Ing. LuisErnestoCastilloAlfaro Ejemplo: Imprimir en un mensaje tu nombre que previamente debe de ser almacenado en una variable de tipoNSString. Desarrollo: 1- Declaramoslavariable de tipoNSStringque almacenaránuestronombre NSString*minombre=@”LUISERNESTOCASTILLOALFARO”; 2- Imprimimosel valorde lavariable *minombre NSLog(minombre); Lección4: Imprimiendomensajesde tipocadena concatenandoel valorde unavariable 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 vecescomovariablesagreguemosenunmensaje de salida. Ejemplo:Imprimirunmensaje que contengaunsalidoseguidode tunombre almacenadoenuna variable previamente. Desarrollo: 1- Declarar lavariable de tipoNSStringque contendrátunombre: NSString*minombre=@”LUISERNESTOCASTILLOALFARO”; 2- Imprimimosel mensaje: NSlog(@“Hola que tal %@”,minombre); Tarea: Crear un mensaje que muestre los datos de tus nombres y apellidos almacenados en sus respectivasvariablesde tipoNSStringpreviamente. Lección5: Trabajandocon 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 losvaloresde variablestipo NSString. Sintaxisde declaraciónde variablestipoNSNumber:
  • 3. Tutorial Objective C Autor:Ing. LuisErnestoCastilloAlfaro NSNumber*nombrevariable=@valornumérico; Ejercicio:Mostrar unmensaje que muestre tuedadpreviamente almacenadoenunavariable de tipoNSNumber,utilizarplaceholders. Desarrollo: 1- Declarar lavariable de tipoNSNumberque almacenarátuedad: NSNumber*miedad=@34; 2- Imprimirel mensaje mostrandotuedad: NSLog(@”Mi edades%@”,miedad); Lección6: Creandounavariable de tipoarray y accediendoasuselementos Los arrays nos ayudan a almacenar objetos del mismo tipo en una misma variable. Si por ejemplo deseamosalmacenarvaloresde tipocadenaenunarray loharíamos de la siguiente manera: Ejemplo:Crearunarray que almacene unalistade ciudadesde Colombia. Desarrollo: 1- Definirlavariable de tipoarrayy asignarsus 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 segundoelementode lalistaes%@”,ciucolochas[2]);
  • 4. Tutorial Objective C Autor:Ing. LuisErnestoCastilloAlfaro Lección7: Imprimiendomensajesde 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 podemoshacercon lasiguiente sintaxis: NSUIntegernombrevariable=[nombre variable de tipoNSString 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 %@, ensu lugarutilizamosel placeholder%lu. Ejemplo: Mostrar unmensaje que indiquelacantidadde caracteresque tiene tunombre. Desarrollo: 1- Declaramoslavariable de tipoNSStringque contienetunombre: NSString*tunombre=@”LUIS”; 2- Declaramoslavariable de tipoNUIntegerque contendrálacantidadde caracteresde la variable tunombre: NUInteger longitudNombre=[tunombre length]; 3- Imprimimosel mensaje que indicalacantidadde caracteresque tiene tunombre: NSLog(@”Tunombre tiene %lucaracteres”,longitudnombre); Lección8: OperandoconNSNumbers 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 estohacemoslosiguiente: 1- Declaramoslasvariablesde tipoNSNumber: 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
  • 5. Tutorial Objective C Autor:Ing. LuisErnestoCastilloAlfaro 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- Haciendolaconversiónde los objetostipoNSNumberal tipoNSUInteger: NSUInteger numerounoEntero=[numeroUnounsignedIntegerValue]; NSUInteger numerodosEntero=[numeroDos unsignedIntegerValue]; 3- Definiendolavariable de tipoNSUIntegerque almacenarael resultadode lamultiplicación de los2 números: NSUIntegerresultado=numerounoEntero*numeroDosEntero; 4- Imprimientoel resultadode lamultiplicaciónde los2números: NSLog(@”El resultadode multiplicarlos2 númeroses%lu”,resultado); Lección9: Uniendoobjetosde tipoNSString Cuandose trata de unirobjetosde tipoNSStringse podríapensarque se podría haceralgo como losiguiente: 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 NSStringque recibe el métodostringByAppendingString. Sintaxis: [cadena1stringByAppendingString:cadena2]; El métodostringByAppendingStringutilizalos2puntosindicandoque necesitaque se le indique el parámetroque eneste caso esel objetode tipoNSStringque recibirádichométodo. Ejemplo:Mostrarun mensaje que concatene losvaloresde lasvariablesque almacenenlosdatos de tu nombre y de tu apellido. Desarrollo: 1- Definimoslasvariablesque almacenaránlosdatosde nombre yapellido:
  • 6. Tutorial Objective C Autor:Ing. LuisErnestoCastilloAlfaro NSString*nombre=@”LUIS”; NSString*apellido=@”CASTILLO”; 2- Concatenamoslasvariablesde tipoNSString: NSString*nombreCompleto=[nombre stringByAppendingString:apellido]; 3- Imprimiendoel nombre completo: NSLog(@”Tunombre completoes%@”,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- Definimoslasvariablesque almacenaránlosdatosde nombre yapellido: NSString*nombre=@”LUIS”; NSString*apellido=@”CASTILLO”; b- Definimoslavariablede tipoNSStringque almacenaráel nombre seguidodel apellido con un espacioenblancoentre 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 cantidadde objetosde tipoNSStringaconcatenar: En primerlugaral espacioenblancoque habrá entre el nombre yel apellidorecibiráel métodostringByAppendingStringque louniráconel valordel objetonombre: Nombre stringByAppendingString:@”“ Luego a ese valor resultante lo debemos de concatenar con el valor de la variable apellido: [[Nombre stringByAppendingString:@”“] stringByAppendingString:apellido] Este últimoresultadodebe de seralmacenadoenunavariable de tipoNSString: NSString*nombreCompleto=[[Nombre stringByAppendingString:@”“] stringByAppendingString:apellido];
  • 7. Tutorial Objective C Autor:Ing. LuisErnestoCastilloAlfaro Finalmentemostramosel nombre completoenunmensaje: NSLog(@”El nombre completoes%@”,nombreCompleto); Lección10: Inicializandoobjetosconundeterminadovalor 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 ciudadpreviamentealmacenadaenunavariable de tipoNSString: Desarrollo: 1- Definimoslavariableque almacenaráel nombre de laciudad: NSSTring*miCiudad=@”TRUJILLO”; 2- Definimosunanuevavariable de tipoNSStringque inicialmentealmaceneel valor de la variable miCiudad: NSString*demiCiudad=[[NSString alloc]initWithString:miCiudad]; Lección11: Trabajandocon estructurascondicionales 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 ysuestructuraes la siguiente: If(condiciónacumplirse){ Instruccionesaejecutarse de cumplirse lacondición; } Ejemplo:Mostrarun mensaje que indique que debemosde vestirropaabrigadorapor que el climaesfrío. Desarrollo: 1- Definirlavariable que estableceque el climaesfrío,para estovamosa hacer usode variablestipoBOOLy le asignaremosunvalorYES.
  • 8. Tutorial Objective C Autor:Ing. LuisErnestoCastilloAlfaro BOOL climafrio=YES; 2- Establecemoslaestructuracondicionalque incluyalacondiciónacumplirylas instruccionesaejecutarde cumplirlacondición: If(climafrio){ NSLog(@”Debesde vestirropaabrigadora”); } Sin embargo también podemos establecer las instrucciones a ejecutar si la condición de que el climaes frionose cumplay para estoutilizamosel operadorde negación !. Ejemplo:Teniendoen cuentael casoanterior mostrarun mensaje que indique vistas ropa delgadaencaso de que el climano se frío. Desarrollo: 1- Establecemosel valorde lavariable climafrioaNOpara que se cumpla el segundogrupode 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 segundayde cumplirse estaejecute susinstrucciones: If(climafrio){ NSLog(@”Debesde vestirropaabrigadora”); }else{ NSLog(@”Debesde vestirropadelgada); } Tambiénpodemosestablecer lasestructurascondicionalesporseparadousando el operadorde negación !: If(climafrio){ NSLog(@”Debesde vestirropaabrigadora”); }
  • 9. Tutorial Objective C Autor:Ing. LuisErnestoCastilloAlfaro If(!climafrio){ NSLog(@”Debesde vestirropa delgada); } Lección11: Comparandocadenas Para comparar valores de objetos tipo NSString se puede utilizar el método isEqualToString cuya sintaxises: NSStringisEqualToString:toanotherstring Ejemplo:Mostrarun mensaje que indique el turnode trabajoque le corresponde alosmeseros de un restaurante segúnel nombre de meseroconsultado: Desarrollo: 1- Establecemos las estructuras condicionales para cada uno de los nombres de meseros a comparar: If(meseroisEqualToString:@”CARLOS”){ NSLog(@“Turno Mañana”); }else if(meseroisEqualToString:@”JOSE”){ NSLog(@”TurnoTarde”); }else{ NSLog(@”TurnoNoche”) } Lección12: Trabajandocon estructurasrepetitivas 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 estructurarepetitivafor. Ejemplo:Mostrarla cantidadde caracteres de cada elementode unarreglo. Solución: 1- Definimosel arreglo: NSArray*nombres=@[@”CLAUDIA”,@”CAROLINA”,@”CRISTINA”,@”CARLA”); 2- Definimoslaestructurarepetitiva:
  • 10. Tutorial Objective C Autor:Ing. LuisErnestoCastilloAlfaro for(NSString*nombre innombres){ NSUIntegercantcar=[nombre length]; NSLog(@”El nombre %@tiene %lucaracteres”,nombre,cantcar); } El resultadode sería: El nombre CLAUDIA tiene 7 caracteres. El nombre CAROLINA tiene 8caracteres. El nombre CRISTINA tiene 8caracteres. El nombre CARLA tiene 5caracteres. Lección13: Trabajandocon 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 losmismos. Ejemplo:Se deseacrearunbloque que debe de serusadopara mostrar unmensaje que indique cual esel nombre de un estudiante ingresado. Desarrollo: 1- Establecerlasinstruccionesaejecutar: Lo que deseamosenprincipioesimprimirunmensajesegúnel nombre ingresadoypara estousaremosel comandoNSLog: NSLog(@”El nombre del estudiante es%@”,nomestudiante); Previamentedebemosde tenerdeclaradalavariable nomestudianteque obviamente tiene que serde tipoNSString: NSString*nomestudiante; NSLog(@”El nombre del estudiante es%@”,nomestudiante); Si colocamosestasinstruccionesenunbloque seríaalgocomo:
  • 11. Tutorial Objective C Autor:Ing. LuisErnestoCastilloAlfaro ^ (NSString*nomestudiante){ NSLog(@”El nombre del estudiantees%@”,nomestudiante); }; 2- Establecemoslafunciónque usaráel conjuntode instruccionesdefinidaspreviamente: void(^NombreEstudiante)(NSString*)=^(NSString*nomestudiante){ NSLog(@”El nombre del estudiantees%@”,nomestudiante); }; 3- Ahorausamosla función NombreEstudiante conalgunosnombrescomoporejemplo: Carlos,Juan: NombreEstudiante(@”Carlos”); NombreEstudiante(@”Juan”); Lección14: Reemplazandounacadenaporotra 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 vecesaparezcadichajerga. Solución: 1- Declarar variablesque contenganel textoacorregir,lajergay la palabracorrecta: NSSTring*texto=@”Enla actualidadexistenmuchosprogramasque noson culturalespes,deberíantrasmitirprogramaseducativospes”; 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 necesitade 2 parámetros,susintaxises:
  • 12. Tutorial Objective C Autor:Ing. LuisErnestoCastilloAlfaro TextoStringByReplacingOccurrencesOfString:textoabuscarwithString: textoquereemplezaraaltextobuscado 3- Definirlavariable que contendráel textocorregido: NSSTring*textocorregido=[textoStringByReplacingOccurrencesOfString:jergawithString: palcorrecta]; 4- Imprimiendoel resultadode lacorreccióndel 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 valorde:{ instruccionesarealizar break; } case variable tiene el valorde:{ instruccionesarealizar break; } } Dónde: Variable: es la variable a evualuar y depediendo de su valor se realizaran una serie de instrucciones.Dichavariablepuedetenermúltiplesvalores. Ejemplo: Dependiendo del día de la semana indicar que curso le toca a un estudiante universitariode laEscuelade Ingenieríade Sistemasde unadeterminadaUniversidad. 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 tipoNSIntegerque recibael resultadode dichafunción:
  • 13. Tutorial Objective C Autor:Ing. LuisErnestoCastilloAlfaro NSIntegerdiasemana=getDayOfWeek(); 2- Evaluamos el valor de la variable diasemana usando switch y dependiendo del valor de dichavariable ejecutaremosunaserie de instrucciones: switch(diasemana) { case 1: { NSLog(@”HoytienesIntroducciónaSistemas”); break; } case 2: { NSLog(@”HoytienesAlgoritmos”); break; } case 3: { NSLog(@”HoytienesBase de Datos”); break; } case 4: { NSLog(@”HoytienesProgramaciónI”); break; } case 5: { NSLog(@”HoytienesRedes”); break; } case 6: { NSLog(@”HoytienesInteligenciaArtificial”); break; } } Se usa lainstrucció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.
  • 14. Tutorial Objective C Autor:Ing. LuisErnestoCastilloAlfaro Lección16: Trabajandocon clases Al igual que en otroslenguajes de programaciónen 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ónse lesconoce como métodos. Por ejemplopodríamosdefinirunaclase personausandoundiccionarioenObjective c: NSDictionary*persona=@{ @"Nombre":@"LuisCastillo", @"Edad":@34, @"Pais":@"Peru" }; En este caso se han definido para la clase persona 3 propiedades: Nombre, Edad y País, peroque hay de sus métodos,comose definenocreanlosmismos. 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úsculacomopor ejemploparanuestraclase sería: Persona Definiendolainterfacede unaclase: 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,lasintaxisparadefinirunainterface de unaclase 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 lasiguiente sintaxis:
  • 15. Tutorial Objective C Autor:Ing. LuisErnestoCastilloAlfaro @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 propiedadesde Nombre,EdadyPaís a nuestra clase Persona: Solución: Para las propiedadesrequeridaslesasignaremosuntipoNSString: @propertyNSString*Nombre; @property NSString*Pais; La declaraciónfinal sería: @interface Persona:NSObject @propertyNSString*Nombre; @propertyNSString*Pais; @end Implementandounaclase: 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 conextensió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 siguientesintaxis: @implementationPersona @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 enel archivo con extensión .m.Entoncesen el archivocon extensión.mse tendría:
  • 16. Tutorial Objective C Autor:Ing. LuisErnestoCastilloAlfaro #importPersona.h @implementationPersona @end Al implementar una clase las propiedades de la misma son implementadas automáticamente, esto no sucede conlosmétodosde laclase. Lección17: Creandométodosparauna 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 algocomo: Persona*Luis= [[Personaalloc] init]; [Luishablar]; Para enviar el mensaje hablar al objeto Luis debemos de declarar el método hablar en nuestro archivoheader(archivoconextensión.h),cuyasintaxisseríalasiguiente: @interface Persona:NSObject // listof 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 retornanada. Implementandométodosde unaclase: 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 indicarque el métodohablarmuestre unmensaje de saludo: En el archivocon extensión.mse tiene:
  • 17. Tutorial Objective C Autor:Ing. LuisErnestoCastilloAlfaro #import"Persona.h" @implementationPersona - (void) hablar; { NSLog(@"Holami 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 eneste caso esun textode saludo. Ejecutandoel 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étodoscrearemosunobjetode laclase personayle aplicaremosel métodohablar. Pasos a seguir: 1- Importamosel archivoPersona.h #import"Persona.h" 2- Creamosun objetode laclase Personaconel nombre Luis: Persona*Luis= [[Personaalloc] init]; 3- Enviamosel mensaje hablaral objetoLuis: [Luishablar]; 4- Obtenemosel resultadode invocar el métodohablar: Hola mi nombre es:Luis
  • 18. Tutorial Objective C Autor:Ing. LuisErnestoCastilloAlfaro Lección18: Métodosque retornanresultados: 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étodohablarde la clase personasi este devolvieraunresultado: Pasosa 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 cadenao NSString: -(NSString*)hablar; Esto esel archivocon extensión.h Al implementar el método en el archivo con extensión .m también se debe de declarar el tipode resultadoretornado: #import Persona.h @ImplentationPersona -(NSString*)hablar; NSString*mensaje=@”Mi nombre es:Luis”; returnmensaje; @end Ahoraveremoscomopasar el resultadodel métodohablarde laclase personaauna variable: Pasosa 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];
  • 19. Tutorial Objective C Autor:Ing. LuisErnestoCastilloAlfaro 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ón19: Declarandométodosconargumentos: 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 ensu implementación: a- En su declaración: Persona.h @inteface Persona:NSObject -void(NSSTring*)hablar:(NSString*)saludo; @end Donde: Los 2 puntos “:” significaque losiguiente esladeclaraciónde unargumento (NSString*) significaque el argumentodelmétodoesde tipocadena saludoesel nombre del argumentode tipoNSString b- En su implementación: #importPersona.h @implementation Persona -(NSString*)hablar:(NSString*)saludo; {
  • 20. Tutorial Objective C Autor:Ing. LuisErnestoCastilloAlfaro NSString *elsaludo =[NSString stringWithFormat:@"Yo:%@ digo: %@", self.nombre, saludo]; returnelsaludo; } @end Aquí notamos que como parte del mensaje a enviar encontramos self.nombre eso hace referenciaalapropiedadnombre de cadaobjetoheredadode laclase Persona. Haciendousodel argumentodel métodohablar: Pasosa seguir: 1- Importarla clase Persona: #importPersona.h 2- Crear unobjetoque herede de laclase Persona: Persona*Luis=[[Personaalloc]init]; 3- Inicializamoslapropiedadnombredel objetoLuis: Luis.nombre=@”Luis Ernesto”; 4- Imprimimosalgunosmensajesparael métodohablardel objetoLuis: NSLog([Luishablar:@”Hola”]); NSLog([Luishablar:@”quetal”]); NSLog([Luishablar:@”comote vá”]); 5- Los resultadosserían: Yo: LuisErnestodigo:Hola Yo: LuisErnestodigo:que tal Yo: LuisErnestodigo:como te vá
  • 21. Tutorial Objective C Autor:Ing. LuisErnestoCastilloAlfaro 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 cambiodel valorde la propiedadnombre: -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.
  • 22. Tutorial Objective C Autor:Ing. LuisErnestoCastilloAlfaro 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 precedidasporel guiónbajo(_),para la propiedadnombre de laclase personasería: -nombre Ahoramodificandoel métodocambiarnombre paramodificarel valorde lapropiedad 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 clase por ejemplolaclase personase puede escribirel siguiente código: @implementation Persona - (Persona *) init; { _pais = @"Perú"; return [super init]; } @end Con este códigoestamos estableciendo que cada objeto de la clase Persona tendrá el valor de Perúpara supropiedadpaís.
  • 23. Tutorial Objective C Autor:Ing. LuisErnestoCastilloAlfaro