Download Objective C (Desarrollo con Apple)
Document related concepts
no text concepts found
Transcript
Moisés Alencastre Miranda 1 Objective C (Desarrollo con Apple) Introducción a Objective C para programación en Iphone SDK: Similitudes y Diferencias entre Objective C con C/C++ y Java Dr. Moisés Alencastre Miranda, malencastre@itesm.mx Moisés Alencastre Miranda 2 Introducción al IPhone SDK ● Oficialmente, sólo se pueden programar aplicaciones en IPad, IPhone y Ipod Touch con: – Sistema Operativo Mac OS X (10.5. Leopard en adelante). – Lenguaje de Programación Objective C. – IDE (Integrated Development Environment) Xcode (3.0 en adelante) ● – http://developer.apple.com/technologies/tools/xcode.html IPhone SDK ● Inicia en Marzo del 2008. ● Incluye Xcode. ● Versión previa 3.2 (Abril, 2010). ● Última versión 4.0 (Junio 2010). – http://developer.apple.com/iphone/index.action Moisés Alencastre Miranda Introducción a Objective C Similitudes con Java y C/C++ ● Los archivos con código fuente deben llevar cierta extensión: – ● En Java: “.java” – En C/C++: “.h”, “.c” y “.cpp” – En Objective C: “.h” y “.m” Objective C es orientado a objetos: – Similar a Java y C++ en el manejo de clases, objetos, variables globales (atributos), métodos (llamadas operaciones), propiedades get y set, herencia, polimorfismo, encapsulamiento, etc, pero se implementa de diferente forma. – No existe un constructor como tal. – La sintáxis es muy diferente a C/C++ y Java. – Pero se puede incluir código de lenguaje C dentro de Objective 3 Moisés Alencastre Miranda Introducción a Objective C Similitudes con Java y C/C++ ● Todas las estructuras de control son iguales a Java y C/C++: – ● if (el if, else), for, while, switch, do (while). Todos los operadores son iguales a Java y C/C++: – ● 4 +, , *, /, =, %, ++, , +=, =, *=, /=, !=, ==, <, > <=, >=, etc. Los tipos de datos básicos de C son iguales, los demás varían: – int, float, double, char, short int, unsigned int, long int, unsigned short int, unsigned long int, long double. – En Objective C, el tipo de dato “void” se llama “id”. La palabra reservada “null” es “nil”. – El tipo de dato “bool” de C/C++ o “boolean” de Java cambia en Objective C por “BOOL”. Y las palabras reservadas “true” y “false” cambian por “YES” y “NO”. Moisés Alencastre Miranda Introducción a Objective C Similitudes con Java y C/C++ ● Para cargar librerías, clases o archivos en el proyecto se usa: – En Java: import ruta.subruta.clase; import java.util.Vector; – import java.util.*; En C/C++: #include <ruta/archivoDelSistema.h> #include <stdio.h> – #include “ruta/miArchivo.h” En Objective C: ● Se pueden utilizar los archivos “.h” de lenguaje C pero con import. #import <ruta/archivoDelSistema.h> #import <UIKit/UIKit.h> #import “ruta/miArchivo.h” 5 Moisés Alencastre Miranda Introducción a Objective C Similitudes con Java y C/C++ ● El main: – En Java: public static void main (String args[]){ ... } – En C/C++: int main(int argc, char **argv){ ... } – En Objective C: ● Igual que en C/C++. int main(int argc, char *argv[]) { ... } 6 Moisés Alencastre Miranda Introducción a Objective C Similitudes con Java y C/C++ ● Para escribir en pantalla se utiliza: – En Java: System.out.print(“Hola”); System.out.println(“Hola”); System.out.println(“Hola “+varInt+”, “+varFloat+”, “+varString); – En C/C++: cout << “Hola” << endl; cout << “Hola\n”; Cout << “Hola ” << varInt << “, “ << varFloat << “, “ << varString << endl; printf(“Hola %d, %f, %s\n”, varInt, varFloat, varCadenaChars ); – En Objective C: NSLog(@“Hola”); NSLog(@“%@”, varString); NSLog(@”Hola %d, %f, %@”, varInt, varFloat, varString ); 7 Moisés Alencastre Miranda Introducción a Objective C Similitudes con Java y C/C++ ● Los comentarios dentro del código son igual que en Java y C/C++: – En una línea. // Comentario simple. – Delimitados. /* Este es un método que recibe un par de datos y regresa su multiplicación */ – Para funciones y clases. Estándar para generación de comentarios. /** Este es un método que recibe * un par de datos y regresa su * multiplicación */ 8 Moisés Alencastre Miranda Introducción a Objective C Similitudes con Java y C/C++ ● La estructura general de una clase cambia mucho aunque sigue la ideología de separar en 2 archivos como en C++: – En Java: ... // Los import necesarios public class MiClase extends ClasePadre { // Mis variables globales normalmente private o protected private tipoDato variable; // Aquí se puede poner el Constructor y/o Destructor. public MiClase ( parámetros ... ) { ... } // Mis métodos de propiedades set y get. // Mis métodos implementados, se indica si son public, private public tipoDato miMetodo( parámetros ... ) { ... // código } ... // etc } 9 Moisés Alencastre Miranda Introducción a Objective C Similitudes con Java y C/C++ – 10 En C/C++, archivo “.h” o encabezado con la definición de la clase: ... // Los include necesarios. Y los using necesarios. class MiClase : public MiClasePadre { private: ... // Defino mis variables globales dentro de las secciones private, etc. public: ... // Aquí se puede poner el encabezado o prototipo del Constructor/Destructor. O puedo implementarlos aquí si son cortos. ... // Defino los encabezados o prototipos de mis métodos de propiedades set y get. O puedo implementarlos aquí. // Defino solamente los encabezados o prototipos de mis métodos. tipoDato miMetodo( parámetros ... ); ... // etc }; Moisés Alencastre Miranda Introducción a Objective C Similitudes con Java y C/C++ – En C/C++, archivo “.cpp” con la implementación de los métodos: // El include de mi archivo .h con la definición de la clase #include “MiClase.h” // Implementación de todos los métodos sólo definidos en el archivo .h tipoDato MiClase::miMetodo( parámetros ... ) { ... // Código de implementación. } ... // Más métodos. 11 Moisés Alencastre Miranda Introducción a Objective C Similitudes con Java y C/C++ – En Objective C, archivo “.h” con la definición de la clase: ... // Los import necesarios. @interface MiClase : MiClasePadre { int miValInt; ... // Defino mis variables globales. NSString *miString; } // No se puede de forma fácil definir private y protected ... // Defino los encabezados de mis métodos de propiedades set/get. @property (readonly) NSString *_palabraMostrada; ... // Defino los encabezados o prototipos de mis métodos. (tipoDato) miMetodo: parametros; (BOOL) enviarStr: (NSString *) miStr; //Ejemplo @end 12 Moisés Alencastre Miranda Introducción a Objective C Similitudes con Java y C/C++ – 13 En Objective C/C, archivo “.m” con la implementación de los métodos: #import “MiClase.h” // El include de mi archivo .h con la definición de la clase @implementation MiClase @synthesize miVar; // Este es necesario por cada get y set. ...// Implementación de todos los métodos definidos en el archivo .h (tipoDato) miMetodo: parametros { ... // Código de implementación. } (BOOL) enviarStr: (NSString *) miStr { ... } // Ejemplo @end Moisés Alencastre Miranda Introducción a Objective C Similitudes con Java y C/C++ ● 14 La instancia de objetos y ejecución de métodos es diferente: – En Java: MiClase miObjeto = new MiClase( parámetros ... ); miObjeto.miMetodo( parámetros ... ); – En C/C++: MiClase *miObjeto = new MiClase( parámetros ... ); miObjeto>miMetodo( parámetros ... ); – En Objective C (no lleva paréntesis en los métodos): MiClase *miObjeto; miObjeto = [[MiClase alloc] init]; // Para inicializar [miObjeto miMetodo: parámetros ]; // Para ejecutar ese método. [miObjeto miMetodo: [otroObjeto otroMetodo]]; [miObjeto release]; // Para liberar memoria Moisés Alencastre Miranda 15 Introducción a Objective C ● ● Ver los ejemplos y presentaciones del curso CADI para mayor detalle. Recomendación: tener al menos un libro a la mano de: – Objective C ● – Xcode ● – Stephen G. Kochan. “Programming in ObjectiveC 2.0”. Addison Wesley, 2nd edition. 2009. James Bucanek. “Professional Xcode 3”. Wrox. 2010. IPhone SDK ● Jonathan Zdziarski. “IPhone SDK”, O'REILLY. 2009.