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, [email protected]
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 Objective­C 2.0”. Addison Wesley, 2nd edition. 2009.
James Bucanek. “Professional Xcode 3”. Wrox. 2010.
IPhone SDK
●
Jonathan Zdziarski. “IPhone SDK”, O'REILLY. 2009.