Académique Documents
Professionnel Documents
Culture Documents
ORIENTADA A
OBJETOS
La inteligencia es la capacidad de crear objetos artificiales, es
especial, herramientas para hacer herramientas Henry Bergson
Introduccin y profundizacin en el estudio de lenguajes orientados a
objetos.
2011
Pgina | 2
Programacin
Orientada a
Objetos
Integrantes
GUAYMAS, Miguel A.
- 58828
GUTIERREZ, Diego A.
- 57972
MICELLI, Gonzalo D.
- 59192
RODRIGUEZ, Gabriel
- 57885
Profesor
Vctor Fernndez
INFORMTICA I 2011
INTRODUCCIN
Pgina | 3
Pgina | 4
Pgina | 5
INDICE
Pgina | 6
Recoleccin de basura................................................................................... 27
Sobrecarga..................................................................................................... 27
ALGUNOS LENGUAJES BASADOS EN POO.............................................27
Smalltalk........................................................................................................... 27
Adaptaciones de Smalltalk............................................................................. 28
Objective C........................................................................................................ 29
Qu es Objective C?..................................................................................... 29
Caractersticas del lenguaje...........................................................................30
Compilador..................................................................................................... 39
Crear un ejecutable........................................................................................ 40
Cuadro comparativo C y Objective C.............................................................41
C++.................................................................................................................. 41
Tipos de datos................................................................................................ 42
Ejemplo de una clase..................................................................................... 43
C#..................................................................................................................... 43
Instrucciones de control.................................................................................44
Metas del diseo del lenguaje........................................................................47
Compiladores................................................................................................. 47
Cadena de caracteres.................................................................................... 48
CONCLUSIN....................................................................................49
BIBLIOGRAFA CONSULTADA...............................................................50
Pgina | 7
DESARROLLO
UNA BASE FUNDAMENTAL: LENGUAJE C
Lenguaje C
C es un lenguaje de programacin creado en 1972 por Dennis M.
Ritchie en los Laboratorios Bell como evolucin del anterior lenguaje B (Se
le dio el nombre "C" porque muchas de sus caractersticas fueron tomadas
del lenguaje anterior B, ambos basados en BCPL.
BCPL es la sigla en ingls de Basic Combined Programming
Language (Lenguaje de Programacin Bsico Combinado). Fue diseado
por Martin Richards de la Universidad de Cambridge en 1966 .
El primer compilador implementado fue escrito en 1967. El lenguaje
fue descrito por primera vez en una conferencia informtica en 1969. Aos
despus, Dennis Ritchie lo utiliz como base para desarrollar B.
Los lenguajes de los que surgi son lenguajes sin tipos, al contrario
que el C que proporciona varios tipos de datos. Los tipos que ofrece son
caracteres, nmeros enteros y en coma flotante, de varios tamaos.
Adems se pueden crear tipos derivados mediante la utilizacin de
punteros, vectores, registros y uniones.
El lenguaje C se trata de un lenguaje categorizado de medio nivel
pero con muchas caractersticas de bajo nivel. Dispone de las estructuras
tpicas de los lenguajes de alto nivel pero, a su vez, dispone de
construcciones del lenguaje que permiten un control a muy bajo nivel.
Trabaja con tipos de datos que son directamente tratables por
el hardware de la mayora de computadoras actuales, como son los
caracteres, nmeros y direcciones. Estos tipos de datos pueden ser
manipulados por las operaciones aritmticas que proporcionan las
computadoras. No proporciona mecanismos para tratar tipos de datos que
no sean los bsicos, debiendo ser el programador el que los desarrolle.
Esto permite que el cdigo generado sea muy eficiente y de ah
el xito que ha tenido como lenguaje de desarrollo de sistemas. No
proporciona otros mecanismos de almacenamiento de datos que no sea el
esttico y no proporciona mecanismos de entrada ni salida. Ello permite
que el lenguaje sea reducido y los compiladores de fcil implementacin
Pgina | 8
ANSI C e ISO C
La primera estandarizacin del lenguaje C fue en ANSI, con el
estndar X3.159-1989. El lenguaje que define este estndar fue conocido
vulgarmente como ANSI C. Posteriormente, en 1990, fue ratificado como
estndar ISO (ISO/IEC 9899:1990).
El estndar est basado en el manual de referencia original de 1972 y
se desarrolla con el mismo espritu de sus creadores originales. La primera
versin de estndar se public en 1988 y actualmente todos los
compiladores utilizan la nueva definicin. Una aportacin muy importante
de ANSI consiste en la definicin de un conjunto de libreras que
acompaan al compilador y de las funciones contenidas en ellas. Muchas
de las operaciones comunes con el sistema operativo se realizan a travs
de estas funciones. Una coleccin de ficheros de encabezamiento,
headers, en los que se definen los tipos de datos y funciones incluidas en
cada librera.
A finales de la dcada de 1970, C empez a sustituir a BASIC como
lenguaje de programacin de microcomputadores predominante. Durante
la dcada de 1980 se empez a usar en los IBM PC, lo que increment su
popularidad significativamente. Al mismo tiempo, Bjarne Stroustrup
Pgina | 9
Propiedades
P g i n a | 10
Ventajas
El lenguaje en c es muy eficiente puesto que es posible utilizar sus
caractersticas de bajo nivel para realizar implementaciones ptimas.
A pesar de su bajo nivel es el lenguaje ms portado en existencia,
habiendo compiladores para casi todos los sistemas conocidos.
Proporciona facilidades para realizar programas modulares y/o utilizar
cdigo o bibliotecas existentes.
Variantes
Este lenguaje fue la base fundamental y esencial para la creacin de
posteriores lenguajes de programacin y ha influido especialmente a
Vala, C#, Objective-C, C++, AWK, Java, entre otros.
Desde el inicio del lenguaje han surgido varias ramas de evolucin
que han generado varios lenguajes:
Objective-C es un primer intento de proporcionar soporte para
la programacin orientada a objetos en C, de escasa difusin, pero
actualmente usado en Mac OS X y GNUstep.
C++ diseado por Bjarne Stroustrup fue el segundo intento de
proporcionar orientacin a objetos a C y es la variante ms difundida y
aceptada. Esta versin combina la flexibilidad y el acceso de bajo nivel de
C con las caractersticas de la programacin orientada a objetos como
abstraccin, encapsulacin y ocultacin.
Tambin el lenguaje C ha influido especialmente a Vala, C#,
Objective-C, C++, AWK, Java, entre otros.
Proceso de compilacin
La compilacin de un programa C se realiza en varias fases que
normalmente son automatizadas y ocultadas por los entornos de
desarrollo:
P g i n a | 11
P g i n a | 12
}
Con el visualizamos el mensaje Hola amigos! en el terminal. En la
primera lnea indica que se tengan en cuenta las funciones y tipos
definidos en la librera stdio (standard input/output). Estas definiciones se
encuentran en el fichero header stdio.h. Ahora, en la funcin main se
incluye una nica sentencia que llama a la funcin printf. Esta toma
como argumento una cadena de caracteres, que se imprimen van
encerradas entre dobles comillas " ". El smbolo \n indica un cambio de
lnea.
Hay un grupo de smbolos, que son tratados como caracteres
individuales, que especifican algunos caracteres especiales del cdigo
ASCII. Los ms importantes son:
\a
Alerta
\b
Espacio atrs
\f
Salto de pgina
\n
Salto de lnea
\r
Retorno de carro
\t
Tabulacin horizontal
\v
Tabulacin vertical
\\
Barra invertida
\'
Comilla simple
\"
Comillas dobles
\OOO
\xHHH
P g i n a | 13
Char
Carcter
(normalmente 8 bits)
Short
(normalmente 16 bits)
signo
Int
(depende de la
implementacin)
Unsigne
(depende de la
implementacin)
Long
(normalmente 32 bits)
signo
Float
Flotante simple
(normalmente 32 bits)
Double
Flotante doble
(normalmente 64 bits)
Funciones
Un programa C est formado por un conjunto de funciones que al
menos contiene la funcin main. Una funcin se declara con el nombre de
la funcin precedido del tipo de valor que retorna y una lista de
argumentos encerrados entre parntesis. El cuerpo de la funcin est
formado por un conjunto de declaraciones y de sentencias comprendidas
entre llaves
Expresiones y operadores:
Los distintos operadores permiten formar expresiones tanto
aritmticas como lgicas. Los operadores aritmticos y lgicos son:
P g i n a | 14
+, -
suma, resta
++, --
incremento, decremento
*, /, %
>>,
<<
izquierda.
&
AND booleano
OR booleano
EXOR booleano
complemento a 1
==, !
igualdad, desigualdad
&&, ||
AND, OR lgico
<, <=
>, >=
Aplicaciones
Hecho principalmente para la fluidez de programacin en
sistemas UNIX. Se usa tambin para el desarrollo de otros sistemas
operativos como Windows o GNU/Linux. Igualmente para aplicaciones
de escritorio como OpenOffice.org, cuyo principal lenguaje de
programacin es C.
P g i n a | 15
P g i n a | 16
P g i n a | 17
Qu es un objeto?
Un objeto es un conjunto de variables, atributos (o datos) y mtodos
(o funciones) relacionados entre s. En primer lugar, un objeto no es un
dato simple, sino que contiene en su interior cierto nmero de
componentes bien estructurados. Por lo tanto, un objeto es la
representacin en un programa de un concepto, y contiene toda la
informacin necesaria para abstraerlo: datos que describen sus atributos y
operaciones que pueden realizarse sobre los mismos. Es una estructura
con datos y mtodos que manipulan los datos.
P g i n a | 18
P g i n a | 19
Fig. 1: Representacin de un objeto
* Frenar
* Cambiar cadencia
P g i n a | 20
Recordar:
Cuando se dice ATRIBUTOS se hace mencin
al dato concreto, cuando hablamos de METODOS
nos referimos a las funciones que puede realizar el
objeto.
Qu es un mensaje?
P g i n a | 21
P g i n a | 22
pblicas) por sus mtodos, as que los mensajes representan todas las
posibles interacciones que pueden realizarse entre objetos.
2) Los objetos no necesitan formar parte del mismo proceso, ni
siquiera residir en un mismo ordenador para mandarse mensajes entre
ellos (y de esta forma interactuar).
Qu es una clase?
Cuando programamos un objeto y definimos sus caractersticas y
funcionalidades en realidad lo que estamos haciendo es programar una
clase.
Una clase es una plantilla que define las variables y los mtodos que
son comunes para todos los objetos de un cierto tipo.
P g i n a | 23
P g i n a | 24
class Aritmetica
{
public:
inline int sumar (int a, int b) const
{
return a + b;
}
inline int restar (int a, int b) const
{
return a - b;
}
inline float multiplicar (int a, int b) const
{
return a * b;
}
inline float dividir (int a, int b) const
{
return a / b;
}};
P g i n a | 25
Encapsulacin
Como ya mencionamos anteriormente, la encapsulacin, a veces
llamada ocultacin de la informacin, es la capacidad de ocultar los
procesos internos de un objeto a sus usuarios y proporcionar una interfaz
para los miembros que quiera que el cliente tenga posibilidad de
manipular directamente. Es bsicamente, el hecho de empaquetar juntos
datos y funcionalidad, dejando visible al exterior solo lo estrictamente
necesario.
Sin embargo, tambin hablamos de abstraccin en el mismo
contexto, por eso en esta seccin aclararemos cualquier confusin
relacionada con estos dos conceptos tan parecidos. La encapsulacin
proporciona el vnculo entre la interfaz externa de una clase -esto es, los
miembros pblicos visibles a los usuarios de la clase- y sus detalles de
implementacin interna. La ventaja de la encapsulacin para el
desarrollador de la clase es que puede exponer los miembros de una clase
que quedaran estticos, o inamovibles, mientras se ocultan los procesos
internos ms voltiles y dinmicos.
Herencia
La herencia sirve para crear objetos que incorporen propiedades y
mtodos de otros objetos. As podremos construir unos objetos a partir de
otros sin tener que reescribirlo todo. Mediante esta tcnica, se pueden
crear (o derivar de otra) nuevas clases a partir de alguna anterior, de
forma que las nuevas "heredan" las caractersticas de sus ancestros
(propiedades y mtodos). Entonces puede modificar la clase de la manera
que quiera y crear objetos nuevos del tipo derivado. Esta habilidad es la
esencia de la creacin de una jerarqua de clases (del mismo aspecto que
el rbol genealgico de una familia).
P g i n a | 26
P g i n a | 27
Polimorfismo
Una de las caractersticas fundamentales de la POO es el
polimorfismo, que no es otra cosa que la posibilidad de construir varios
mtodos (funciones) con el mismo nombre, pero con relacin a la clase a
la que pertenece cada uno, con comportamientos diferentes. Dicho de
simple manera, el polimorfismo sirve para que no tengamos que
preocuparnos sobre lo que estamos trabajando, y abstraernos para definir
un cdigo que sea compatible con objetos de varios tipos. Esto conlleva la
habilidad de enviar un mismo mensaje a objetos de clases diferentes.
Estos objetos recibiran el mismo mensaje global pero responderan a l de
formas diferentes; por ejemplo, un mensaje "+" a un objeto ENTERO
significara suma, mientras que para un objeto STRING significara
concatenacin ("pegar" strings uno seguido al otro).
ABSTRACCIN
Denota las caractersticas esenciales de un objeto, donde se capturan
sus comportamientos. Cada objeto en el sistema sirve como modelo de un
"agente" abstracto que puede realizar trabajo, informar y cambiar su
estado, y "comunicarse" con otros objetos en el sistema sin revelar cmo
se implementan estas caractersticas. Los procesos, las funciones o los
mtodos pueden tambin ser abstrados y cuando lo estn, una variedad
de tcnicas son requeridas para ampliar una abstraccin. El proceso de
abstraccin permite seleccionar las caractersticas relevantes dentro de un
P g i n a | 28
SOBRECARGA
Posibilidad de crear diferentes mtodos dentro de una clase que
comparten el mismo nombre, pero que aceptan argumentos diferentes y
se comporten de forma distinta segn la naturaleza de estos argumentos.
RECOLECCIN
DE BASURA
P g i n a | 29
Mquina virtual
Imagen virtual que contiene todos los objetos del sistema
ADAPTACIONES
DE
SMALLTALK
P g i n a | 30
Objective C
QUE ES OBJETIVE C?
P g i n a | 31
P g i n a | 32
P g i n a | 33
P g i n a | 34
p = [p init];
P g i n a | 35
P g i n a | 36
/* Saludos.m */
#import Saludos.h
#import <stdio.h>
P g i n a | 37
#import <stdlib.h>
#import <string.h>
@ implementacin Saludos
- Init {
If (self=[super init]) {
Saludo=Hola mundo;
}
return self;
}
- (void) setSaludo: (char*) un saludo {
Saludo=unSaludo;
}
- (void) setSaludo: (char*) unsaludo y: (char*) unacoletilla {
Saludo=malloc (strlen (unsaludo)+strlen (unacoletilla)+1);
Strcpy (saludo, unsaludo);
Stracat (saludo, unacoletilla);
}
- (void) saluda {
Printf(%s\n, saludo);
}
@end
P g i n a | 38
Int main() {
Saludador*s=[[saludador alloc] init];
[s saluda];
[s setsaludo: hola de nuevo];
[s saluda];
[s setsaludo: hola buenos das,
Y: encantado de verle];
[s saluda];
[s free];
Return EXIT_SUCCESS;
}
Al estar usando el framework de clases de GNU, el programa puede
ser compilado y enlazado con los comandos:
$ GCC C Saludos.m
$ GCC C pidesaludo.m
$ GCC Saludos.o pidesaludos.o lobjc o pidesaludo
P g i n a | 39
/* saludo */
#import <Foundation/NSObject.h>
@interface Saludo:NSObject {
Char* saludo;
}
-init;
-(void) setsaludo(char*)unsaludo;
-(void) setsaludo(char*) unsaludo y(char*)unacoletilla;
-(void) saluda;
@end
P g i n a | 40
*/ saludo */
#import saludo.h
#import <stdio.h>
#import <stdblib.h>
#import <string.h>
@implementacion saludos
-init {
If (self=[super init]) {
Saludo=hola mundo;
}
Return self;
}
-(void) setsaludo:(char*)unsaludo {
Saludo=unsaludo;
}
-(void) setsaludo:(char*) unsaludo y: (char*) unacoletilla {
Saludo=malloc (strelen(unsaludo)+strlen(unacoletilla)+1);
Strcpy (saludo, unsaludo);
Strcat (saludo, unacoletilla);
}
-(void) saluda {
printf (%s\n, saludo);
}
P g i n a | 41
@end
/* pidesaludo.m */
#import saludos.h
Int main()
Saludos*s=[[saludos alloc]init];
[s saluda];
[s setsaludo: hola de nuevo];
[s saluda];
[s setsaludo: hola buenos das,
Y: encantado de verle];
[s saluda];
[s release];
Return EXIT_SUCCESS;
}
COMPILADOR
El compilador a usar en este lenguaje ser el GCC (GNU Compiler
Collection), es escencialmente un conjunto de herramientas que proporciona GNU
para programar en varios lenguajes y plataformas. Mac OS X y IPhone OS se
apoyan en estas herramientas para realizar las tareas de compilacin y enlazado
de sus correspondientes aplicaciones.
P g i n a | 42
Environment) que permite realizar de forma grfica las tareas comunes de
programacin, y que hace las correspondientes llamadas a las GCC para realizar
las tareas caractersticas de compilacin y enlazado de forma transparente al
programador.
XCODE, incluye la creacin de compiladores del proyecto GNU (GCC), y
puede compilar cdigo C,C++, Objective-C, Objective-C++, Java y Apple Script,
mediante una amplia gama de modelos de programacin entre los ms
destacados Cocoa, Carbn y Java.
CREAR UN EJECUTABLE:
Como aclaramos anteriormente que Objective-C es una extensin al
lenguaje C, entonces un programa en C se puede compilar en Objective-C sin la
necesidad de efectuar ningn cambio. Debemos aclarar que solo se deben llevar
a cabo dos cambios, un programa de Objective-C usa la sintaxis de C excepto por
dos aspectos, ellos son los siguientes:
El primer aspecto es que en vez de usar la directiva del procesador #include
se ha usado la directiva del procesador #import. Ambas directivas realizan la
operacin de incluir un fichero dentro de otro fichero, pero a diferencia de
#include la directiva #import asegura que el fichero incluido no se incluya nunca
ms de una vez, con lo que en los ficheros de cabecera incluidos nunca s
incluidos con esta directiva no es necesario hacer un control de inclusiones. Con
la directiva del procesador #ifdef, tal como se acostumbra a hacer en C y C++.
La otra direncia radica en que est en que la extensin de los ficheros
Objective-C es .m, extensin usada por el comando GCC para saber que se trata
de un programa en Objective-C.
/* holamundo.m */
#import <stdio.h>
#import <stdlib.h>
Int main()
P g i n a | 43
{
Printf(hola mundo desde Objective-C\n);
Return EXIT_SUCCESS;
}
Para compilar y ejecutar este programa bastara con ejecutar los comandos:
$ GCC hola mundo.m -o holamundo
$ ./holamundo
Hola desde Objective-C
CUADRO
COMPARATIVO DE
Caractersticas
Directiva del
prepreprocesador
En cadenas
Compilador
Archivo
Herramienta grfica
OBJECTIVE C
Lenguaje C
#include
Lenguaje Objective C
#import
#ifdef
Char *
Turbo C, entre
#ifdef
NSString
GCC
otros
.c
.h(interface)
No tiene
.m(implementacin)
X Code
C++
C++ es un lenguaje de programacin diseado a mediados de los
aos 1980 por Bjarne Stroustrup. La intencin de su creacin fue el
extender al exitoso lenguaje de programacin C con mecanismos que
permitan la manipulacin de objetos.
P g i n a | 44
TIPOS
DE DATOS
P g i n a | 45
Booleanos: bool
Vaco: void
UN
Nmero de bits
8
16
32
32
64
C++:
class Punto
{
//por omisin los miembros son 'private' para que slo se
puedan modificar desde la propia clase.//
private:
// Variable miembro privada
int id;
protected:
// Variables miembro protegidas
int x;
int y;
public:
// Constructor
Punto();
// Destructor
~Punto();
// Funciones miembro o mtodos
int ObtenerX();
int ObtenerY();
};
C#
C o C# (pronunciado si sharp en ingls) es un lenguaje de
programacin orientado a objetos desarrollado y estandarizado por
Microsoft como parte de su plataforma .NET
P g i n a | 46
INSTRUCCIONES
DE CONTROL
P g i n a | 47
P g i n a | 48
}
}
P g i n a | 49
METAS
P g i n a | 50
COMPILADORES
En la actualidad existen los siguientes compiladores para el lenguaje
C:
CADENAS
DE CARACTERES
P g i n a | 51
CONCLUSIN
Como hemos ledo anteriormente en todas estas paginas, el trabajo
consisti en explicitar arduamente todo esta gran forma de programacin.
Como primera instancia detallamos sobre la base de lo que es la POO, sin
dejar de lado las definiciones fundamentales de la misma.
Describimos los principios y caractersticas bsicas de esta
programacin ya que sobre ellos se forman y se basan todos los lenguajes
orientados a objetos; lenguajes que tambin explicamos y con ellos
P g i n a | 52
BIBLIOGRAFA CONSULTADA
Wikipedia,
extrado
art.
de
Programacin
orientada
objetos,
http://es.wikipedia.org/wiki/Programaci
%C3%B3n_orientada_a_objetos
P g i n a | 53
4.
Wikipedia,
art.
Objetos
(programacin),
extrado
de
http://es.wikipedia.org/wiki/Objetos_(programaci
%C3%B3n_orientada_a_objetos)
5. Diego Gomz, art. Smalltalk, extrado de
http://swiki.agro.uba.ar/small_land/65
6. Rodoval, art. Smalltalk extraido de
http://www.rodoval.com/paginalen.php?len=Smalltalk
7. Germn S. Arduino, art. Intrduccin Informal a Smalltalk
extraido de http://www.arsol.net/art/introst/introst.htm
8. MacProgramadores, El lenguaje Objective-C para
programadores C++ y Java