You are on page 1of 10

Programacin orientada a objetos

La programacin orientada a objetos o POO (OOP segn sus siglas en ingls) es un paradigma de programacin que usa objetos y sus interacciones, para disear aplicaciones y programas informticos. Est basado en varias tcnicas, incluyendo herencia, abstraccin, polimorfismo y encapsulamiento. Su uso se populariz a principios de la dcada de los aos 1990. En la actualidad, existe variedad de lenguajes de programacin que soportan la orientacin a objetos. El concepto de programacin orientada a objetos (OOP) no es nuevo, lenguajes clsicos como SmallTalk se basan en ella. Dado que la OOP. se basa en la idea natural de la existencia de un mundo lleno de objetos y que la resolucin del problema se realiza en trminos de objetos, un lenguaje se dice que est basado en objetos si soporta objetos como una caracterstica fundamental del mismo.

Objetos
El elemento fundamental de la OOP es, como su nombre lo indica, el objeto. Podemos definir un objeto como un conjunto complejo de datos y programas que poseen estructura y forman parte de una organizacin. Identificacion de objetos Un objeto no es un dato simple, sino que contiene en su interior cierto nmero de componentes bin estructurados. Cada objeto no es un ente aislado, sino que forma parte de una organizacin jerrquica o de otro tipo.

Comunicacin entre objetos


La comunicacin entre objetos se realiza por medio de dilogos formulados por el envo de mensajes en el lenguaje definido por los objetos que intervienen en este intercambio.

Mensajes
Los objetos de un programa interactan y se comunican entre ellos por medio de mensajes. Cuando un objeto A quiere que otro objeto B ejecute una de sus funciones miembro (mtodos de B), el objeto A manda un mensaje al objeto B. (complejo? :-) A veces el objeto que recibe el mensaje necesita ms informacin, si le decimos que queremos subir la velocidad, deberamos adems, decirle la velocidad exacta, por ejemplo. Esta informacin se pasa junto con el mensaje en forma de parmetro. Partes del mensaje si quisiramos (Yo) decirle a MiAmbulancia que suba la velocidad en 10 km/h: El objeto al cual se manda el mensaje (MiAmbulancia). El mtodo o funcin miembro que debe ejecutar (SubirVelocidad()). Los parmetros que necesita ese mtodo (10). Estas tres partes del mensaje (objeto destinatario, mtodo y parmetros) son suficiente informacin para que el objeto que recibe el mensaje ejecute el mtodo o la funcin miembro solicitada.

ESTRUCTURA DE UN OBJETO
Un objeto puede considerarse como una especie de cpsula dividida en tres partes: 1 - RELACIONES 2 - PROPIEDADES 3 - METODOS Cada uno de estos componentes desempea un papel totalmente independiente: Las relaciones permiten que el objeto se insterte en la organizacin y estn formadas esencialmente por punteros a otros objetos. Las propiedades distinguen un objeto determinado de los restantes que forman parte de la misma organizacin y tiene valores que dependen de lapropiedad de que se trate. Las propiedades de un objeto pueden ser heredadas a sus descendientes en la organizacin. Los mtodos son las operaciones que pueden realizarse sobre el objeto, que normalmente estarn incorporados en forma de programas (cdigo) que el objeto es capaz de ejecutar y que tambin pone a disposicin de sus descendientes a travs de la herencia.

Herencia
En orientacin a objetos la herencia es, despus de la agregacin o composicin, el mecanismo ms utilizado para alcanzar algunos de los objetivos ms preciados en el desarrollo de software como lo son la reutilizacin y la extensibilidad. A travs de ella los diseadores pueden crear nuevas clases partiendo de una clase o de una jerarqua de clases preexistente (ya comprobadas y verificadas) evitando con ello el rediseo, la modificacin y verificacin de la parte ya implementada. La herencia facilita la creacin de objetos a partir de otros ya existentes e implica que una subclase obtiene todo el comportamiento (mtodos) y eventualmente los atributos (variables) de su superclase. Es la relacin entre una clase general y otra clase ms especifica. Por ejemplo: Si declaramos una clase prrafo derivada de una clase texto, todos los mtodos y variables asociadas con la clase texto, son automticamente heredados por la subclase prrafo. La herencia es uno de los mecanismos de los lenguajes de programacin orientada a objetos basados en clases, por medio del cual una clase se deriva de otra de manera que extiende su funcionalidad. La clase de la que se hereda se suele denominar clase base, clase padre, superclase, clase ancestro (el vocabulario que se utiliza suele depender en gran medida del lenguaje de programacin).

Polimorfismo
En programacin orientada a objetos el polimorfismo se refiere a la posibilidad de enviar un mensaje a un grupo de objetos cuya naturaleza puede ser heterognea. El nico requisito que deben cumplir los objetos que se utilizan de manera polimrfica es saber responder al mensaje que se les enva. La apariencia del cdigo puede ser muy diferente dependiendo del lenguaje que se utilice, ms all de las obvias diferencias sintcticas. Por ejemplo, en un lenguaje de programacin que cuenta con un sistema de tipos dinmico (en los que las variables pueden contener datos de cualquier tipo u objetos de cualquier clase) como Smalltalk no se requiere que los objetos que se utilizan de modo polimrfico sean parte de una jerarqua de clases. En lenguajes basados en clases y con un sistema de tipos de datos fuerte (independientemente de si la verificacin se realiza en tiempo de compilacin o de ejecucin), es posible que el nico modo de poder utilizar objetos de manera polimrfica sea que compartan una raz comn, es decir, una jerarqua de clases, ya que esto proporciona la compatibilidad de tipos de datos necesaria para que sea posible utilizar una misma variable de referencia (que podr apuntar a objetos de diversas subclases de dicha jerarqua) para enviar el mismo mensaje (o un grupo de mensajes) al grupo de objetos que se tratan de manera polimrfica.

Clases
Una clase es un conjunto de objetos que comparten una estructura y comportamiento comunes. una clase es una construccin que se utiliza como un modelo (o plantilla) para crear objetos de ese tipo. El modelo describe el estado y el comportamiento que todos los objetos de la clase comparten. Un objeto de una determinada clase se denomina una instancia de la clase. La clase que contiene (y se utiliz para crear) esa instancia se puede considerar como del tipo de ese objeto, por ejemplo, una instancia del objeto de la clase "Persona" sera del tipo "Persona".

Diferencia entre clases y objetos

Clase representa una abstraccin, la esencia que comparten los objetos. Un objeto es un ejemplo de una clase. Un objeto no es una clase, y una clase no es un objeto (aunque puede serlo, p.e. en Smalltalk). Las clases actuan como intermediarias entre una abstraccin y los clientes que pretenden utilizar la abstraccin. De esta forma, la clase muestra: visin externa de comportamiento (interface), que enfatiza la abstraccin escondiendo su estructura y secretos de comportamiento. visin interna (implementacin), que abarca el cdigo que se ofrece en la interface de la clase

El modelo Orientado a Objetos


Para entender este modelo vamos a revisar 4 conceptos bsicos: Objetos Clases Herencia Envo de mensajes 1. Objetos Entender que es un objeto es la clave para entender cualquier lenguaje orientado a objetos. Existen muchas definiciones que se le ha dado al Objeto. Primero empecemos entendiendo que es un objeto del mundo real. Un objeto del mundo real es cualquier cosa que vemos a nuestro alrededor. Digamos que para leer este artculo lo hacemos a travs del monitor y una computadora, ambos son objetos, al igual que nuestro telfono celular, un rbol o un automvil. Analicemos un poco ms a un objeto del mundo real, como la computadora. No necesitamos ser expertos en hardware para saber que una computadora est compuesta internamente por varios componentes: la tarjeta madre, el chip del procesador, un disco duro, una tarjeta de video, y otras partes ms. El trabajo en conjunto de todos estos componentes hace operar a una computadora. Internamente, cada uno de estos componentes puede ser sumamente complicado y puede ser fabricado por diversas compaas con diversos mtodos de diseo. Pero nosotros no necesitamos saber cmo trabajan cada uno de estos componentes, como saber que hace cada uno de los chips de la tarjeta madre, o cmo funciona internamente el procesador. Cada componente es una unidad autnoma, y todo lo que necesitamos saber de adentro es cmo interactan entre s los componentes, saber por ejemplo si el procesador y las memorias son compatibles con la tarjeta madre, o conocer donde se coloca la tarjeta de video. Cuando conocemos como interaccionan los componentes entre s, podremos armar fcilmente una computadora. Que tiene que ver esto con la programacin? La programacin orientada a objetos trabaja de esta manera. Todo el programa est construido en base a diferentes componentes (Objetos), cada uno tiene un rol especfico en el programa y todos los componentes pueden comunicarse entre ellos de formas predefinidas. Todo objeto del mundo real tiene 2 componentes: caractersticas y comportamiento. Por ejemplo, los automviles tienen caractersticas (marca, modelo, color, velocidad mxima, etc.) y comportamiento (frenar, acelerar, retroceder, llenar combustible, cambiar llantas, etc.). Los Objetos de Software, al igual que los objetos del mundo real, tambin tienen caractersticas y comportamientos. Un objeto de software mantiene sus caractersticas en una o ms "variables", e implementa su comportamiento con "mtodos". Un mtodo es una funcin o subrutina asociada a un objeto.

Para redondear estas ideas, imaginemos que tenemos estacionado en nuestra cochera un Ford Focus color azul que corre hasta 260 km/h. Si pasamos ese objeto del mundo real al mundo del software, tendremos un objeto Automvil con sus caractersticas predeterminadas:

Marca = Ford Modelo = Focus Color = Azul Velocidad Mxima = 260 km/h Cuando a las caractersticas del objeto le ponemos valores decimos que el objeto tiene estados. Las variables almacenan los estados de un objeto en un determinado momento. Definicin terica: Un objeto es una unidad de cdigo compuesto de variables y mtodos relacionados.

2. Las Clases En el mundo real, normalmente tenemos muchos objetos del mismo tipo. Por ejemplo, nuestro telfono celular es slo uno de los miles que hay en el mundo. Si hablamos en trminos de la programacin orientada a objetos, podemos decir que nuestro objeto celular es una instancia de una clase conocida como "celular". Los celulares tienen caractersticas (marca, modelo, sistema operativo, pantalla, teclado, etc.) y comportamientos (hacer y recibir llamadas, enviar mensajes multimedia, transmisin de datos, etc.).

Cuando se fabrican los celulares, los fabricantes aprovechan el hecho de que los celulares comparten esas caractersticas comunes y construyen modelos o plantillas comunes, para que a partir de esas se puedan crear muchos equipos celulares del mismo modelo. A ese modelo o plantilla le llamamos CLASE, y a los equipos que sacamos a partir de ella la llamamos OBJETOS.

Esto mismo se aplica a los objetos de software, se puede tener muchos objetos del mismo tipo y mismas caractersticas. Definicin terica: La clase es un modelo o prototipo que define las variables y mtodos comunes a todos los objetos de cierta clase. Tambin se puede decir que una clase es una plantilla genrica para un conjunto de objetos de similares caractersticas. Por otro lado, una instancia de una clase es otra forma de llamar a un objeto. En realidad no existe diferencia entre un objeto y una instancia. Slo que el objeto es un trmino ms general, pero los objetos y las instancias son ambas representacin de una clase. Definicin Terica: Una instancia es un objeto de una clase en particular. 3. Herencia La herencia es uno de los conceptos ms cruciales en la POO. La herencia bsicamente consiste en que una clase puede heredar sus variables y mtodos a varias subclases (la clase

que hereda es llamada superclase o clase padre). Esto significa que una subclase, aparte de los atributos y mtodos propios, tiene incorporados los atributos y mtodos heredados de la superclase. De esta manera se crea una jerarqua de herencia. Por ejemplo, imaginemos que estamos haciendo el anlisis de un Sistema para una tienda que vende y repara equipos celulares.

En el grfico vemos 2 Clases ms que posiblemente necesitemos para crear nuestro Sistema. Esas 2 Clases nuevas se construirn a partir de la Clase Celular existente. De esa forma utilizamos el comportamiento de la SuperClase. En general, podemos tener una gran jerarqua de Clases tal y como vemos en el siguiente grfico:

4. Envo de Mensajes Un objeto es intil si est aislado. El medio empleado para que un objeto interacte con otro son los mensajes. Hablando en trminos un poco ms tcnicos, los mensajes son invocaciones a los mtodos de los objetos. Lenguaje de programacin Un lenguaje de programacin" es un lenguaje diseado para describir el conjunto de acciones consecutivas que un equipo debe ejecutar. Por lo tanto, un lenguaje de programacin es un modo prctico para que los seres humanos puedan dar instrucciones a un equipo. Por otro lado, el trmino "lenguaje natural" define un medio de comunicacin compartido por un grupo de personas (por ejemplo: ingls o francs). Los lenguajes que los equipos usan para comunicarse entre ellos no tienen nada que ver con los lenguajes de programacin; se los conoce como protocolos de comunicacin. Se trata de dos conceptos totalmente diferentes.

Lenguajes de programacin
Algunos ejemplos de lenguajes ampliamente usados A continuacin, encontrar una breve lista de los lenguajes de programacin actuales: Lenguaje ADA BASIC C C++ Cobol Fortran Java MATLAB Clculos matemticos LISP Pascal PHP Inteligencia artificial Perl Principal rea de aplicacin Tiempo real Programacin para fines educativos Programacin de sistema Compilado/interpreta do Lenguaje compilado Lenguaje interpretado Lenguaje compilado

Programacin de sistema orientado a Lenguaje compilado objeto Administracin Clculo Programacin orientada a Internet Clculos matemticos Clculos matemticos Inteligencia artificial Educacin Desarrollo de sitios web dinmicos Inteligencia artificial Procesamiento de cadenas de caracteres Lenguaje compilado Lenguaje compilado Lenguaje intermediario Lenguaje interpretado Lenguaje interpretado Lenguaje intermediario Lenguaje compilado Lenguaje interpretado Lenguaje interpretado Lenguaje interpretado

Herramientas de complilacion
Borland C++ Durante mucho tiempo fue mi favorito, aunque actualmente utilizo "Viusual" para mis desarrollos (Standard y Professional Editions). Durante mucho tiempo fue uno de los mejores compiladores C++, si no el mejor, si bien actualmente ha sido claramente desplazado por el equivalente de Microsoft. Es el mismo que utiliza el "Builder" de este afamado fabricante de software, aunque sin las utilidades "de pago", que son fundamentalmente el entorno grfico de desarrollo y las herramientas RAD. La versin que aqu sealamos es una versin Windows para ser utilizada mediante lneas de comandos desde el Shell del sistema (una ventana DOS). Est disponible para su descarga libre desde la Web, aunque para acceder al fichero de instalacin (un auto-instalable de 8.52 MB) hay que sufrir un proceso de "registro" algo tedioso El paquete contiene todas las herramientas para desarrollar aplicaciones C++, incluyendo la Librera Estndar de Plantillas (STL). Existen tres pginas de ayuda que

permiten hacerse una idea del contenido y comenzar rpidamente con las primeras pruebas. Aconsejo echarles un vistazo antes de la descarga e instalacin: Borland Turbo C++ Despus de un tiempo de inactividad, Builder haba quedado algo desfasado, por lo que la compaa ha decidido resucitar alguna de sus viejas glorias. En concreto la serie "turbo" que antao le dieran fama y liderazgo en el mundo de la programacin. Aunque hay quin dice que el esfuerzo es "too few and too late", quizs le interese echar un vistazo a la nueva versin del compilador. Existe una versin Profesional y otra, denominada Explorer, que es gratuita. Es un completo sistema de desarrollo (IDE) que permite construir aplicaciones nativas para Windows-32 con una adaptacin bastante perfecta al estndar ISO/ANSI C++ y soporte para las libreras Boost.

Compilador DJGPP Se trata de un completo sistema de desarrollo de cdigo abierto para construir programas C y C++ 32-bit. El entorno necesita un PC con procesador Intel 80386 y superior bajo DOS. El compilador de Delphi en el contexto actual. El hecho de ser un lenguaje compilado fue una de las tantas caractersticas que, desde su primer versin, diferenci a Delphi de sus competidores, all por la era glacial de los lenguajes visuales, 1995. Mientras Visual Basic necesitaba un runtime para sus pseudoejecutables, Delphi generaba directamente cdigo ejecutable. Este panorama, paradigma, est cambiando en estos das, con el advenimiento de la nueva arquitectura para el desarrollo de aplicaciones propuesta por el seor de anteojos que preside Microsoft. .NET difiere indudablemente respecto al modelo tradicional de creacin de aplicaciones sobre Windows, proponindonos un cambio radical en la forma de comunicarnos con el sistema operativo. El API Win32 fue pensado hace ya una dcada y no puede decirse que sea lo ms moderno y robusto. De hecho lenguajes orientados a objetos como Delphi han tenido que desarrollar envoltorios o wrappers para convertir en objetos o componentes ciertas tareas que el API Win32 nos brinda pero a travs de funciones y sin un serio control de excepciones. BCL (Base Class Library). .NET FrameWork CTS (Commont Type System) CLR (Common Language Runtime) Entorno de ejecucin. Las tres capas de .NET Si .NET nos propone ahora -entre otras cosas- un acceso ms homogneo a los recursos del sistema operativo, podemos deducir que en un futuro, cuando el de anteojos lo disponga, los sistemas operativos de las ventanitas dejarn de soportar el API Win32. Puede decirse que otra ventaja de utilizar la arquitectura .NET es el hecho de que cualquier entorno de desarrollo .NET puede compartir sus objetos .NET en la forma de IL Code (Intermediate Language). El entorno comn de ejecucin o CLR (Common Language Runtime) ejecutar el IL Code escrito en cualquiera de los lenguajes sea Visual C++, Visual Basic .NET, C#, Delphi, etc. El CLR es un entorno de ejecucin, una mquina virtual trmino acuado por los mentores de Java-, un programa que interpreta, compila y ejecuta, el cdigo intermedio. Esto significa que si utiliza Delphi 8 para generar aplicaciones .NET, estar generando un cdigo intermedio que ser compilado en tiempo de ejecucin. Ahora bien, si desarrolla aplicaciones tradicionales, utilizando la librera VCL o la joven CLX, generar aplicaciones que, aparte de generar un cdigo de ms rpida ejecucin -ya que no requieren el Runtime de .NET- sern en su totalidad cdigo ejecutable, cdigo mquina. Pero volvamos al compilador de Delphi, que no escapa a la generalidad de los compiladores. Manejo de funciones de entrada y salida.

En computacin, entrada/salida, tambin abreviado E/S o I/O (del original en ingls input/output), es la coleccin de interfaces que usan las distintas unidades funcionales(subsistemas) de un sistema de procesamiento de informacin para comunicarse unas con otras, o las seales (informacin) enviadas a travs de esas interfaces. Las entradas son las seales recibidas por la unidad, mientras que las salidas son las seales enviadas por sta. Las estructuras de seleccin son aquellas que permiten, bajo una condicin, ejecutar distintos cdigos. La ms simple es la estructura de seleccin IF. Se da una condicin que puede ser verdadera o falsa, y se ejecuta un cdigo u otro dependiendo del resultado de esa condicin en tiempo de ejecucin. Tambin est la estructura de seleccin SWITCH que, dependiendo de un valor, ejecutar distintos cdigos.

Ejecucin condicional: IF Nos permite decidir, a partir del resultado de evaluar una expresin booleana, si ejecutar o no un bloque determinado, u optar entre 2 bloques posibles. Sintaxis: if (<expresin booleana>) <bloque a ejecutar cuando la expresin es verdadera> else <bloque a ejecutar cuando la expresin es falsa> La sentencia else es opcional, puede utilizarse o no. En el caso de no utilizarlo, cuando la expresin evaluada sea falsa la ejecucin continuar con la sentencia inmediatamente posterior al if. Ejemplo: int max (int a, int b) { int c; if (a>b) c = a; else c = b; return c; }

Expresiones multivaluadas: SWITCH Nos permite decidir entre diferentes bloques a ejecutar segn el valor de una expresin. Sintaxis: switch ( <expresin ordinal> ) { case <valor 1>: <bloque1>; break; case <valor 2>: <bloque2>; break; . . . case <valor n>: <bloque n>; break; default: <bloque> } Luego estn las estructuras de repeticin, las cuales repiten un cdigo cierta cantidad de veces hasta que se cumpla o deje de cumplir una condicin. Son ejemplos de estas estructuras en C los WHILE, los FOR, etc. Ciclo, la estructura WHILE Nos permite repetir la ejecucin de un bloque hasta tanto una condicin booleana se vuelva falsa. Sintaxis: while ( <expresin booleana> ) <bloque> Ejemplo: int factorial (int n) { int res = 1; while ( n > 1 ) { res = res * n; n = n 1; }

return res; }

You might also like