Objective-C
|
Objective-C. Es un lenguaje de programación orientado a objetos y basado en mensajes, altamente dinámico. Este lenguaje consiste en un pequeño número de incrementos a ANSI C, y está caracterizado por su aplazamiento a muchas decisiones hasta que se cumple el tiempo de corrida del programa creado, soportando envíos dinámicos, escritura y carga dinámica.
Estas características soportan muchos de los patrones de diseño que utiliza Cocoa, incluyendo la delegación, notificación, y Modelo Vista Controlador. Debido a que es una extensión del lenguaje C, y al contener código y librerías de C, incluso aquellas que están basadas en C++, puede trabajar con aplicaciones basadas en Cocoa, sin perder nada del desarrollo original.
Sumario
Objetos
La unidad base de la actividad en todos los lenguajes orientados a objetos es el objeto – una entidad que asocia los datos con las operaciones que pueden ser hechas con esos datos. Objective-C provee un tipo de datos diferenciado, id, definido como un puntero a los datos de un objeto que permite trabajar con objetos. Un objeto puede ser declarado en el código de esta manera: id anObject; Para todas las construcciones orientadas a objetos de Objective-C, incluyendo los valores de retorno de los métodos, id, reemplaza el tipo de datos int, de C, como el tipo de datos de retorno por defecto.
Escritura dinámica
El tipo id es completamente ilimitado. Este tipo de datos dice muy poco acerca del objeto, indicando únicamente que el objeto es una entidad del sistema que puede responder a determinados mensajes y ser consultado para su comportamiento. Este tipo de comportamiento, conocido como “escritura dinámica”, permite al sistema encontrar la clase a la cual pertenece el objeto y determinar los mensajes necesarios para las llamadas de los métodos.
Escritura estática
Objective-C soporta la escritura estática, en la cual se declara una variable, usando un puntero a su tipo de clase, y no id, por ejemplo: NSObject *object; Esta declaración activará algún grado de chequeo de tiempo de compilación para generar advertencias (warnings), cuando no hay concordancia con un tipo de datos, y además cuando se usan métodos no implementados por una clase.
Mensajes
Los objetos en Objective-C son extremadamente autónomos, no son contenedores pasivos de comportamientos y estados, ni son datos y una colección de funciones que pueden ser aplicadas a los datos. Objective-C reafirma este concepto, permitiendo a cualquier mensaje- una solicitud para desarrollar una acción en particular- ser pasado a cualquier objeto.
Estructura de un mensaje
Las expresiones de mensajes en Objective-C son encerradas entre corchetes. La expresión consiste de las siguientes partes: el objeto al cual se le envía el mensaje (receptor), el nombre del mensaje, y opcionalmente algunos parámetros.
Clases
Los objetos en Objective-C son definidos en términos de una clase. Las nuevas clases de objetos son especificaciones de una clase más general. Cada clase nueva es la acumulación de las definiciones de la clase de la que hereda y puede expandir estas definiciones añadiendo nuevos métodos y variables o redefiniendo métodos existentes para realizar nuevas funcionalidades o expandir las heredadas.
Definición de las clases
En Objective-C, las clases son definidas en dos partes, usualmente separadas en dos archivos diferentes: - Una interfaz, la cual declara los métodos de las clases y las variables y nombra sus superclases. La interfaz usualmente es especificada en un archivo con la extensión .h, típico de los archivos cabecera de C. - Una implementación, la cual contiene el código que define los métodos de las clases. Por consenso, los archivos que contienen la implementación de una clase tienen una extensión .m
Categorías
Las categorías son una característica de Objective-C que permite la especialización de las clases sin la necesidad de utilizar la herencia. Las categorías pueden ser usadas para añadir comportamientos a clases existentes, sin tener que recompilarlas. Las instancias de clases especializadas adoptan los nuevos comportamientos. Incluso las instancias existentes y las instancias creadas y usadas completamente dentro de la implementación de las clases de Cocoa, adquieren el nuevo comportamiento.
Protocolos
Los protocolos de Objective-C son similares a las interfaces de Java. Los protocolos especifican los comportamientos de los objetos independientes de la clase de los objetos.
Tiempo de corrida
Objective-C incluye un sistema de tiempo de corrida similar en muchos sentidos a la Máquina Virtual de Java (JVM, del inglés Java Virtual Machine). El tiempo de corrida de Objective-C provee muchas de las características dinámicas de Objective-C y la carga dinámica de objetos. A diferencia de la JVM, el tiempo de corrida de Objective-C es pequeño y no provee características de seguridad. Es escrito en lenguaje C estándar.
Fuentes
- Cocoa Programming. Autores: Scott Anguish, Erik M. Buck, Donald A. Yacktman. Publicado el 20 de septiembre de 2002.
- Cocoa_in_a_Nutshell. Autores: Michael Beam, James Duncan Davidson. Publicado en mayo de 2003.