Objective-C para niños
Datos para niños Objective-C |
||
---|---|---|
Desarrollador(es) | ||
? | ||
Información general | ||
Extensiones comunes | .h, .m, .mm, .M | |
Paradigma | orientado a objetos | |
Apareció en | 1980 | |
Diseñado por | Brad Cox y Tom Love | |
Última versión estable | 2.0 | |
Sistema de tipos | estático, dinámico, débil | |
Implementaciones | Clang, GCC | |
Dialectos | Objective-J, TOM | |
Influido por | C, Smalltalk | |
Ha influido a | Groovy, Java, Nu, Objective-C++, Swift, | |
Objective-C es un lenguaje de programación especial. Fue creado para añadir la programación orientada a objetos al lenguaje C. Imagina que C es un coche y Objective-C le añade un motor más moderno y funciones extra.
Fue inventado por Brad Cox y la empresa StepStone en 1980. Más tarde, en 1988, se convirtió en el lenguaje principal para el sistema operativo NEXTSTEP. Hoy en día, se usa mucho para crear aplicaciones para Mac OS X, iOS (los sistemas de los iPhone y iPad) y GNUstep. También se usa junto con Swift, otro lenguaje de programación.
Contenido
Historia de Objective-C
¿Por qué se creó Objective-C?
A principios de los años 80, los programas de computadora se hacían con un estilo llamado "programación estructurada". Este método ayudaba a dividir los programas grandes en partes más pequeñas. Así era más fácil trabajar en ellos.
Sin embargo, a medida que los programas se hacían aún más grandes y complejos, la programación estructurada a veces se volvía difícil. Los programadores repetían instrucciones, lo que podía llevar a un código desordenado y difícil de reutilizar.
Muchos pensaron que la "programación orientada a objetos" (POO) sería la solución. Ya existía un lenguaje llamado Smalltalk que usaba la POO y funcionaba muy bien para sistemas complejos. Pero Smalltalk necesitaba mucha memoria y era lento para las computadoras de esa época.
Los creadores y sus ideas
Objective-C fue creado principalmente por Brad Cox y Tom Love a principios de los años 80. Ambos habían aprendido sobre Smalltalk y vieron su potencial.
Brad Cox quería encontrar una forma de reutilizar partes de código en el desarrollo de programas. Se dio cuenta de que un lenguaje como Smalltalk, pero más eficiente, sería muy útil. Así que empezó a modificar el compilador de C (una herramienta que traduce el código a un lenguaje que la computadora entiende) para añadirle características de Smalltalk. A su creación la llamó "OOPC" (Programación Orientada a Objetos en C).
Tom Love, por su parte, también se inspiró en Smalltalk. Juntos, Cox y Love fundaron una empresa llamada Productivity Products International (PPI) para vender su nuevo compilador de Objective-C y sus bibliotecas de código.
En 1986, Brad Cox publicó un libro importante sobre Objective-C. Explicó cómo este lenguaje podía ayudar a reutilizar el código de los programas.
La popularidad con NeXT y Apple
En 1988, la empresa NeXT, fundada por Steve Jobs, adoptó Objective-C. NeXT mejoró el compilador y creó bibliotecas de código importantes para su sistema operativo, NEXTSTEP. Aunque las computadoras de NeXT no tuvieron mucho éxito, sus herramientas de programación fueron muy elogiadas. Esto hizo que NeXT se enfocara en el software.
Cuando Apple compró NeXT en 1996, usó OpenStep (una versión de NEXTSTEP) para crear su nuevo sistema operativo, Mac OS X. Así, Objective-C se convirtió en el lenguaje principal para desarrollar aplicaciones en Mac y, más tarde, en iPhone y iPad. Las herramientas de desarrollo de NeXT, como Project Builder, se convirtieron en Xcode, que es muy usado hoy en día.
En 2014, Apple anunció un nuevo lenguaje llamado Swift. Swift fue diseñado para ser más moderno y fácil de usar que Objective-C, aunque Objective-C sigue siendo muy importante.
¿Cómo funciona Objective-C?
Objective-C es como una capa extra sobre el lenguaje C. Esto significa que puedes escribir cualquier programa en C y compilarlo con un compilador de Objective-C. También puedes mezclar código C dentro de tus programas de Objective-C.
El famoso "Hola Mundo"
Para que un programa muestre el mensaje "Hola Mundo" en la pantalla, en Objective-C se puede escribir así:
#import <stdio.h>
int main( int argc, const char *argv[] ) {
printf( "Hola Mundo\n" );
return 0;
}
Este código es muy parecido al de C. La diferencia principal es el `#import` en lugar de `#include`. Objective-C también tiene su propia forma de imprimir texto, que es `NSLog(@"")`. Usándola, el código se vería así:
int main( int argc, const char *argv[] )
{
NSLog( @"Hola Mundo\n" );
return 0;
}
Mensajes entre objetos
En Objective-C, los programas se construyen enviando "mensajes" a los objetos. Imagina que los objetos son como personajes en un juego. Para que un personaje haga algo, le envías un mensaje. Por ejemplo, si tienes un objeto "perro" y quieres que ladre, le envías el mensaje "ladrar".
La forma de enviar un mensaje en Objective-C es con corchetes:
[miPerro ladrar];
Esto es diferente de otros lenguajes donde "llamas a un método". En Objective-C, el objeto decide cómo responder al mensaje en el momento en que lo recibe. Esto hace que el lenguaje sea muy flexible.
Interfaz e implementación
En Objective-C, cada "clase" (que es como un molde para crear objetos) tiene dos partes principales:
- Interfaz: Es como el plano o el diseño de la clase. Aquí se dice qué cosas puede hacer la clase y qué información guarda. Se suele guardar en un archivo con extensión `.h`.
- Implementación: Aquí se escribe el código real de cómo la clase hace lo que dice en su interfaz. Se guarda en un archivo con extensión `.m`.
Por ejemplo, la interfaz de una clase podría decir que tiene un método para "cambiar color". La implementación sería el código que realmente cambia el color.
Ejemplo de Interfaz
Así se vería una interfaz simple:
@interface NombreClase : SuperClase
{
// Aquí van las variables que guarda el objeto
}
// Aquí van los métodos (acciones) que puede hacer la clase
-(void) hacerAlgo; // Un método de instancia
+(void) hacerAlgoDeClase; // Un método de clase
@end
Los signos `+` son para métodos de clase (acciones que la clase puede hacer por sí misma), y los signos `-` son para métodos de instancia (acciones que un objeto específico de esa clase puede hacer).
Ejemplo de Implementación
Y así se vería la implementación:
@implementation NombreClase
-(void) hacerAlgo {
// Aquí se escribe el código de lo que hace "hacerAlgo"
}
+(void) hacerAlgoDeClase {
// Aquí se escribe el código de lo que hace "hacerAlgoDeClase"
}
@end
Creando objetos (Instanciación)
Para usar una clase, necesitas crear un objeto a partir de ella. Esto se llama "instanciar". Primero se reserva espacio en la memoria para el objeto y luego se le da un valor inicial.
MiObjeto *miNuevoObjeto = [[MiObjeto alloc] init];
`alloc` reserva la memoria y `init` prepara el objeto para ser usado.
Protocolos
Los protocolos en Objective-C son como listas de reglas o promesas. Una clase puede decir que "cumple" un protocolo, lo que significa que se compromete a tener ciertos métodos. Es como un contrato: si una clase firma el contrato de un protocolo, debe implementar todos los métodos que ese protocolo exige.
Tipado dinámico
Objective-C es muy flexible con los tipos de datos. Un objeto puede recibir un mensaje incluso si no está especificado en su interfaz. Esto permite que un objeto "reenvíe" un mensaje a otro objeto que sí sepa cómo responder. Es como si le pasaras una pregunta a alguien más que sí sabe la respuesta.
Variantes de Objective-C
Objective-C++
Objective-C++ es una mezcla de Objective-C y C++. Permite usar código de ambos lenguajes en el mismo programa. Sin embargo, hay algunas reglas para que funcionen juntos, ya que son lenguajes diferentes.
Objective-C 2.0
En 2006, Apple lanzó Objective-C 2.0. Esta versión trajo mejoras importantes, como:
- Propiedades: Una forma más sencilla de declarar variables de un objeto y cómo se accede a ellas.
- Recolección de basura (obsoleta): Una función que ayudaba a la computadora a limpiar la memoria automáticamente. Sin embargo, esta función fue reemplazada por el "Conteo Automático de Referencias" (ARC) en versiones más recientes, ya que ARC es más eficiente.
- Enumeración rápida: Una forma más fácil y rápida de recorrer listas de objetos.
Conteo Automático de Referencias (ARC)
ARC es una característica moderna que ayuda a los programadores a gestionar la memoria de forma automática. Antes, los programadores tenían que decir cuándo "reservar" y "liberar" la memoria. Con ARC, el compilador (la herramienta que traduce el código) se encarga de esto por sí mismo, haciendo el trabajo más sencillo y reduciendo errores.
Literales
Las versiones modernas de Objective-C permiten escribir valores comunes, como números o listas, de una forma más corta y directa. Por ejemplo, en lugar de escribir `[NSArray arrayConObjectos:objeto1,objeto2,nil];` para crear una lista, puedes escribir `@[ objeto1, objeto2 ];`. Esto hace el código más limpio.
Subíndices
También se pueden usar subíndices (corchetes `[]`) para acceder a elementos de listas o diccionarios de forma más sencilla, similar a como se hace en otros lenguajes. Por ejemplo, para obtener el primer elemento de una lista: `id objeto1 = miLista[0];`
Véase también
En inglés: Objective-C Facts for Kids