Está en la página 1de 10

EVOLUCION DE PROGRAMACION ORIENTADA A OBJETOS.

Lenguajes de Bajo Nivel Los primeros lenguajes de programacin tienen sus orgenes en las primeras computadoras digitales. En ese entonces, los lenguajes eran un reflejo directo del hardware que controlaban. Poco a poco esto fue cambiando, de tal forma que la mayora de los lenguajes contemporneos son independientes de cualquier plataforma computacional. A finales de los aos cuarenta, el desarrollo incipiente de las computadoras, hizo adoptar dos conceptos fundamentales para su posterior desarrollo, cuya validez se mantiene hasta el da de hoy: El sistema de numeracin usado por las computadoras debe ser binario en lugar de decimal, dado que es ms sencillo para los componentes electrnicos el tener que representar nicamente 2 estados. La memoria de la computadora adems de almacenar los datos de un programa, deber almacenar el programa mismo.

En la memoria se almacenan datos enteros, a los cuales se les pueden aplicar operaciones aritmticas cuyos resultados son depositados en un registro llamado acumulador. Es posible modificar las localidades de memoria mediante una operacin conocida como asignacin. Las instrucciones del programa se toman de la memoria y se ejecutan de manera secuencial, a no ser que se encuentre una instruccin de salto, en cuyo caso la siguiente instruccin a ejecutar ser tomada de la localidad de memoria indicada por dicha instruccin. Los lenguajes de programacin que la computadora puede entender de manera directa son conocidos como lenguajes de mquina. De manera simplista, a cada instruccin de lenguaje de mquina se le asigna un cdigo de operacin, el cual es un simple nmero. Estos cdigos de operacin son almacenados en la memoria en su representacin binaria. Aunque para una mquina una serie de unos y ceros es suficiente para representar un cdigo o instruccin, para los seres humanos resulta bastante incomprensible. Es por esto que surgi una variante de lenguaje de mquina conocido como lenguaje ensamblador, en donde los cdigos de operacin junto con otros elementos de un programa son reemplazados por nombres simblicos. Aunque el lenguaje ensamblador resulta crptico, es definitivamente ms claro que su representacin binaria. Sin embargo, este lenguaje an conlleva una limitacin ms, y es el hecho de que cada modelo de computadora tiene un lenguaje de mquina distinto a los dems, por lo que los programas escritos para una mquina especfica solamente funcionarn en sta. Lenguajes de Alto Nivel Cuando las computadoras digitales se convirtieron en un producto comercial, se vio la necesidad de generar programas utilizando lenguajes ms sencillos de comprender para el humano que el ensamblador. Era evidente que para superar los problemas que existan en el desarrollo de los sistemas computacionales, la programacin de stos se debera hacer a un nivel superior que el impuesto por las mquinas. Es as que surge el concepto de lenguaje de alto nivel. Los lenguajes de alto nivel ofrecen las siguientes ventajas sobre los lenguajes de bajo nivel:

Transportabilidad. Un lenguaje de alto nivel no es dependiente de una computadora especfica; lo cual implica que los programas pueden correr en distintas computadoras habiendo el nico requisito de que exista un traductor del lenguaje para la mquina en cuestin. Fcil comprensin. Los programas escritos en lenguajes de alto nivel son ms fciles de escribir y entender. Esto generalmente permite una reduccin del tiempo que el programador invierte en las fases de codificacin, depuracin y mantenimiento. Los primeros lenguajes de alto nivel fueron diseados para resolver problemas de ndole numrico, por lo tanto tuvieron una tendencia hacia la representacin de expresiones matemticas. Posteriormente las tendencias de diseo de Lenguajes de Programacin cambiaron, dando mayor nfasis al cmo hacer las cosas; es decir, los algoritmos comenzaron a jugar el papel preponderante. Finalmente, comenzando desde los aos setenta y hasta la fecha, se ha manifestado una tendencia hacia lo que se conoce como abstraccin de datos, que consiste en disear los sistemas de tal forma que gran parte de un programa puede ser especificado con independencia de la representacin de los datos. Los lenguajes de tercera generacin (tambin llamados lenguajes de programacin moderna o estructurada) estn caracterizados por sus potentes posibilidades procedurales y de estructuracin de datos. Los lenguajes de esta clase se pueden dividir en 3 grandes categoras: Lenguajes de Alto Nivel de Propsito General, Lenguajes de Alto Nivel Orientados a Objetos y

Lenguajes Especializados. Los lenguajes especializados han sido diseados para satisfacer los requisitos especiales y a menudo, tienen una formulacin y una sintxis nicas. Conceptos fundamentales de P.O.O Abstraccin Abstraccin es la descripcin o especificacin simplificada de un sistema que hace nfasis en algunos detalles o propiedades y suprime otros. Una buena abstraccin es aquella que hace nfasis en los detalles significativos y suprime los irrelevantes. La abstraccin debe enfocarse ms en qu es un objeto y qu hace antes de pensar en la implementacin. Otra caracterstica de la abstraccin es que un objeto puede abstraerse de diversas formas, dependiendo del observador. Encapsulamiento El encapsulamiento es la propiedad que los objetos tomaron prestada de sus primos los tipos de datos abstractos. El objeto tiene dos caras. La primera cara, la interfase, es la que el objeto da al mundo exterior; es la que muestra lo que puede hacer, ms no dice cmo lo hace. La otra cara, la implementacin, es la que se encarga de hacer el trabajo y de mantener el estado del objeto. Solamente esta cara puede modificar el estado del objeto. Al encapsular u ocultar informacin se separan los aspectos externos de un objeto (los accesibles para todos) de los detalles de implementacin (los accesibles para nadie). Con esto

se intenta lograr que al tener algn cambio en la implementacin de un objeto no se tengan que modificar los programas que utilizan tal objeto. Modularidad La modularidad consiste en dividir un programa en partes llamadas mdulos, las cuales pueden trabajarse por separado. En trminos de programacin, los mdulos pueden compilarse por separado y la divisin no depende de un cierto nmero de lneas, mas bien, se trata de una divisin que se hace con el objetivo de integrar en un mdulo un conjunto de procedimientos relacionados entre s, junto con los datos que son manipulados por tales procedimientos. El objetivo de la modularidad es reducir el costo de elaboracin de programas al poder dividir el trabajo entre varios programadores. " Un objeto es cualquier cosa que se ofrece a la vista y afecta los sentidos. Es una entidad tangible que exhibe algn comportamiento bien definido." En trminos de programacin, un objeto no es algo necesariamente tangible (por ejemplo: un proceso). Lo que s puede decirse de todo objeto es que tiene estado, comportamiento e identidad. El estado de un objeto abarca todas las propiedades o caractersticas distintivas del mismo y los valores de cada una de estas propiedades son las variables que sirven para describir tal objeto. El comportamiento es la forma en cmo acta o reacciona un objeto en trminos de cambios de estado, envo y recepcin de mensajes. Est formado por la definicin de las operaciones (funciones y procedimientos) que puede realizar este objeto. Los tipos ms comunes de operaciones, o mejor dicho, de mtodos son: modificar, seleccionar, iterar, construir y destruir. El conjunto de operaciones que un objeto puede realizar sobre otro, se conoce como protocolo. Identidad es la propiedad de un objeto que lo distingue de todos los dems. En un programa, normalmente se trata de un identificador. Herencia Cada objeto es una instancia de una clase. Una clase es parecida a lo que se ha manejado como tipo de dato abstracto: es una descripcin abstracta de los datos y comportamiento que comparten objetos similares. La herencia es la manera de establecer relaciones entre las distintas clases que conforman a un sistema orientado a objetos. Con la herencia se establecen jerarquas del tipo "es un", en donde una subclase hereda la estructura y comportamiento de una o ms superclases ms generalizadas. Tpicamente una subclase especializa a su superclase al aumentar o redefinir la funcionalidad de esta ltima. Existen lenguajes que solamente permiten que las subclases tengan un solo antecesor directo, mientras que otros permiten que tengan ms de uno. A los primeros se les conoce como lenguajes con herencia simple, mientras que a estos ltimos se les llama lenguajes con herencia mltiple. La herencia es la contribucin ms importante de la POO, pues mediante este mecanismo es posible lograr la principal meta de la POO que es la de la reutilizacin de cdigo. El atractivo de la herencia consiste en que al requerir un nuevo componente para un programa, en lugar de disearlo y construirlo de cero, se busca una clase que proporcione una funcionalidad lo ms parecido a la deseada; una vez encontrada, se crea una nueva clase que herede de sta, y se agregan y/o modifican nicamente aquellos detalles que sean precisos para obtener el componente que originalmente se estaba necesitando. Una subclase define el comportamiento

de un conjunto de objetos que heredan algunas de las caractersticas de la clase padre, en este sentido se dice que la subclase es una especializacin de la clase padre. Programacin Orientada a Objetos La programacin orientada a objetos es una filosofa de implementacin en donde los programas se organizan como una coleccin cooperativa de objetos, cada uno de los cuales representa una instancia de alguna clase y cuyas clases pertenecen a una jerarqua de clases unidas a travs de una relacin de herencia. Un lenguaje orientado a objetos debe soportar y encausar la programacin orientada a objetos. Se debe hacer la distincin entre los lenguajes que promueven la programacin orientada a objetos y aqullos que simplemente la permiten. En teora, se puede programar orientado a objetos en lenguajes que no fueron originalmente diseados con ese propsito, pero el hacerlo constituye una labor extraordinaria. Los conceptos generales ms empleados en el modelo orientado a objetos son: abstraccin, encapsulacin y modularidad y en cuanto a programacin son: objeto, clase, mtodo, envo y recepcin de mensajes, herencia y polimorfismo. Parece ser universalmente aceptado que para que un lenguaje sea considerado orientado a objetos debe contar con por lo menos las siguientes tres propiedades: encapsulamiento, polimorfismo y herencia. Clase (informtica) En la programacin orientada a objetos, 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". Una clase por lo general representa un sustantivo, como una persona, lugar o (posiblemente bastante abstracta) cosa - es el modelo de un concepto dentro de un programa de computadora. Fundamentalmente, encapsula el estado y el comportamiento del concepto que representa. Encapsula el estado a travs de marcadores de datos llamados atributos (o variables miembro o variables de instancia), y encapsula el comportamiento a travs de secciones de cdigo reutilizables llamados mtodos. Ms tcnicamente, una clase es un conjunto coherente que consiste en un tipo particular de metadatos. Una clase tiene tanto una interfaz y una estructura. La interfaz describe cmo interactuar con la clase y sus instancias con mtodos, mientras que la estructura describe cmo los datos se dividen en atributos dentro de una instancia. Una clase tambin puede tener una representacin (metaobjeto) en tiempo de ejecucin, que proporciona apoyo en tiempo de ejecucin para la manipulacin de los metadatos relacionados con la clase. En el diseo orientado a objetos, una clase es el tipo ms especfico de un objeto en relacin con una capa especfica. POLIMORFISMO se denomina polimorfismo a la capacidad que tienen los objetos de una clase de responder al mismo mensaje o evento en funcin de los parmetros utilizados durante su invocacin. Un objeto polimrfico es una entidad que puede contener valores de diferentes tipos durante la ejecucin del programa.

En algunos lenguajes, el trmino polimorfismo es tambin conocido como Sobrecarga de parmetros ya que las caractersticas de los objetos permiten aceptar distintos parmetros para un mismo mtodo (diferentes implementaciones) generalmente con comportamientos distintos e independientes para cada una de ellas. METODO Un mtodo es un trozo de cdigo que puede ser llamado o invocado por el programa principal o por otro mtodo para realizar alguna tarea especfica. El trmino mtodo en Java es equivalente al de subprograma, rutina, subrutina, procedimiento o funcin en otros lenguajes de programacin. El mtodo es llamado por su nombre o identificador seguido por una secuencia de parmetros o argumentos (datos utilizados por el propio mtodo para sus clculos) entre parntesis. Cuando el mtodo finaliza sus operaciones, devuelve habitualmente un valor simple al programa que lo llama, que utiliza dicho valor de la forma que le convenga. El tipo de dato devuelto por la sentencia return debe coincidir con el tipo de dato declarado en la cabecera del mtodo. JERARQUIA La jerarqua es una clasificacin u ordenacin de abstracciones Jerarquias de un sistema complejo: Estructura de clases (jerarqua de clases) Estructura de objetos (jerarqua de partes) 14. Constructor: Los constructores son mtodos o funciones que existen dentro de todos los objetos, y que se activan solamente en el momento de la creacin del objeto. Los constructores sirven para definir los valores iniciales de las propiedades del objeto. Tambin se dice que un constructor es una operacin que crea un objeto y/o inicializa su estado. 15. Destructor: El destructor es un mtodo que se activa cuando el objeto desaparece. El destructor es nico y sirve para que un objeto ejecute una accin (o grupo de acciones) antes de terminar su ciclo vital. Normalmente loa objetos dejan de existir cuando salen de su mbito (entorno) en donde fueron creados. Los destructores son importantes porque se activas automticamente, y eximen al programador de la tarea de liberar los recursos tomados por el objeto, ya que normalmente esta es la tarea ejecutada por el destructor. ESTRUCTURAS Las estructuras nos permiten agrupar varios datos, que mantengan algn tipo de relacin, aunque sean de distinto tipo, permitiendo manipularlos todos juntos, usando un mismo identificador, o cada uno por separado. Las estructuras son llamadas tambin muy a menudo registros, o en ingls records. Tienen muchos aspectos en comn con los registros usados en bases de datos. Y siguiendo la misma analoga, cada objeto de una estructura se denomina a menudo campo, o field. Los objetos de estructura son objetos declarados del tipo de la estructura, y su inclusin tambin es opcional. Sin bien, an siendo ambos opcionales, al menos uno de estos elementos debe existir.

En el interior de una estructura, entre las llaves, se pueden definir todos los elementos que consideremos necesarios, del mismo modo que se declaran los objetos. Las estructuras pueden referenciarse completas, usando su nombre, como hacemos con los objetos que ya conocemos, y tambin se puede acceder a los elementos definidos en el interior de la estructura, usando el operador de seleccin (.), un punto. UNIONES Una unin es un tipo de datos derivado, como una estructura, con miembros que comparten el mismo espacio de almacenamiento. Una variable de tipo unin puede contener (en momentos diferentes) objetos de diferentes tipos y tamaos. Las uniones proporcionan una forma de manipular diferentes clases de datos dentro de una sola rea de almacenamiento. En cualquier momento una unin puede contener un mximo de un objeto debido a que los miembros de una unin comparten el espacio de almacenamiento. Una unin se declara con el mismo formato de una struct. Primero declaramos el tipo unin y luego declaramos variables de ese tipo. LENGUAJES ORIENTADOS A OBJETOS ABAP ABL Lenguaje de programacin de OpenEdge de Progress Software ActionScript ActionScript 3 Ada C++ C# Clarion Clipper (lenguaje de programacin) (Versin 5.x con librera de objetos Class (y)) D Object Pascal (Delphi) Gambas Harbour Eiffel Java JavaScript (la herencia se realiza por medio de la programacin basada en prototipos) Lexico (en castellano) Objective-C

Ocaml Oz R Perl (soporta herencia mltiple. La resolucin se realiza en preorden, pero puede modificarse al algoritmo linearization C3 por medio del mdulo Class::C3 en CPAN) PHP (a partir de su versin 5) PowerBuilder Python Ruby Smalltalk (Proyecto investigativo. Influenci a Java.) Magik (SmallWorld) Vala VB.NET Visual FoxPro (en su versin 6) Visual Basic 6.0 Visual Objects XBase++ Lenguaje DRP Lenguaje de lang.org/page.jsp programacin Scala (lenguaje usado por Twitter) http://www.scala-

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, que despus fue aprobado como un estndar por la ECMA (ECMA-334) e ISO (ISO/IEC 23270). C# es uno de los lenguajes de programacin diseados para la infraestructura de lenguaje comn. Su sintaxis bsica deriva de C/C++ y utiliza el modelo de objetos de la plataforma .NET, similar al de Java, aunque incluye mejoras derivadas de otros lenguajes. El nombre C Sharp fue inspirado por la notacin musical, donde '#' (sostenido, en ingls sharp) indica que la nota (C es la nota do en ingls) es unsemitono ms alta, sugiriendo que C# es superior a C/C++. Adems, el signo '#' se compone de cuatro signos '+' pegados.1 Aunque C# forma parte de la plataforma .NET, sta es una API, mientras que C# es un lenguaje de programacin independiente diseado para generar programas sobre dicha plataforma. Ya existe un compilador implementado que provee el marco Mono - DotGNU, el cual genera programas para distintas plataformas como Windows, Unix, Android, iOS, Windows Phone, Mac OS y GNU/Linux. Historia

Durante el desarrollo de la plataforma .NET, las bibliotecas de clases fueron escritas originalmente usando un sistema de cdigo gestionado llamado Simple Managed C (SMC). En enero de 1999, Anders Hejlsberg form un equipo con la misin de desarrollar un nuevo lenguaje de programacin llamado Cool (C orientado a objetos). Este nombre tuvo que ser cambiado debido a problemas de marca, pasando a llamarse C#.2 La biblioteca de clases de la plataforma .NET fue migrada entonces al nuevo lenguaje. Hejlsberg lider el proyecto de desarrollo de C#. Anteriormente, ya particip en el desarrollo de otros lenguajes como Turbo Pascal, J++ y Embarcadero Delphi. Tipos de datos C# contiene dos categoras generales de tipos de datos integrados: tipos de valor y tipos de referencia. El trmino tipo de valor indica que esos tipos contienen directamente sus valores. Tipos para definir nmeros enteros: Tipo de datos de enteros Tipo Equivalente BCL Tamao 8-bit byte) 8-bit byte) 16-bit byte) 16-bit byte) 32-bit byte) 32-bit byte) 64-bit byte) 64-bit byte) (1Rango Significado

byte

System.Byte

0 a 255

Entero sin signo

sbyte System.SByte

(1-

-128 a 127

Entero signo

con

short

System.Int16

(2-

-32.768 a 32.767

Entero corto con signo Entero corto sin signo Entero medio con signo Entero medio sin signo a Entero largo con signo Entero largo sin signo

ushort System.UInt16

(2-

0 a 65.535

int

System.Int32

(4-

-2.147.483.648 a 2.147.483.647

uint

System.UInt32

(4-

0 a 4.294.967.295

long

System.Int64

(8- -9.223.372.036.854.775.808 9.223.372.036.854.775.807 (8-

ulong System.UInt64

0 a 18.446.744.073.709.551.615

Los tipos de coma flotante pueden representar nmeros con componentes fraccionales. Existen dos clases de tipos de coma flotante: float y double. El tipo double es el ms utilizado porque muchas funciones matemticas de la biblioteca de clases de C# usan valores double. Quiz, el tipo de coma flotante ms interesante de C# es decimal, dirigido al uso de clculos monetarios. La aritmtica de coma flotante normal est sujeta a una variedad de errores de redondeo cuando se aplica a valores decimales. El tipo decimal elimina estos errores y puede representar hasta 28 lugares decimales.

Tipo de datos de coma flotante Tipo Equivalente BCL Tamao 32-bit byte) 64-bit byte) (4Rango 1.401298E45 a 3.402823E+38 Significado Coma corto a Coma largo flotante

float

System.Single

double System.Double

(8- 4.94065645841246E324 1.79769313486232E+308

flotante

decimal System.Decimal

128-bit (16-byte)

7.9228162514264337593543950335 Coma flotante a monetario +7.9228162514264337593543950335

Los caracteres en C# no tienen un tamao de 8 bits como en otros muchos lenguajes de programacin, sino que usa un tamao de 16 bits llamado Unicode al cual se le llama char. No existen conversiones automticas de tipo entero a char. Tipo de datos de caracteres Tipo Equivalente BCL Tamao char System.Char Rango Significado

16-bit (2-byte) '\u0000' a '\uFFFF' Carcter unicode

Para los tipos de datos lgicos no existen conversiones automticas de tipo entero a bool. Tipo de datos lgicos Tipo Equivalente BCL Tamao Rango Significado

bool System.Boolean 8-bit (1-byte) true o false Verdadero o falso

Relaciones entre clases y objetos Todo objeto es el ejemplo de una clase, y toda clase tiene 0 ms objetos. Mientras las clases son estticas, con semntica, relaciones y existencia fijas previamente a la ejecucin de un programa, los objetos se crean y destruyen rpidamente durante la actividad de una aplicacin. El diseo de clases y objetos es un proceso incremental e iterativo. Debe asegurar la optimizacin en los parmetros: Acoplamiento: Grado de acoplamiento entre mdulos. Cohesin: Mide el grado de conectividad entre elementos de un mdulo, y entre objetos de una clase. Suficiencia: Indica que las clases capturan suficientes caractersticas de la abstraccin para conseguir un comportamiento e interaccin eficiente y con sentido.

Completitud: Indica que la interface de la clase captura todo el significado caracterstico de una abstraccin, escrito en el mnimo espacio. Primitividad: Las operaciones deben implementarse si dan acceso a una representacin fundamental de la abstraccin. Cuales son operaciones primitivas y cuales no (se pueden realizar a partir de otras) es un asunto subjetivo y afecta a la eficiencia en la implementacin. PAPEL DE CLASES Y OBJETOS EN EL ANLISIS Y EL DISEO Identificar las clases y objetos que forman el vocabulario del dominio del problema. Idear las estructuras por las que conjuntos de objetos trabajan juntos para lograr los comportamientos que satisfacen los requerimientos del problema. En conjunto, se llama a esas clases y objetos las abstracciones clave del problema, y se denomina a esas estructuras cooperativas los mecanismos de la implantacin. Durante estas fases del desarrollo, el inters principal del desarrollo debe estar en la vista externa de estas abstracciones clave y mecanismos. Esta vista representa el marco de referencia lgico del sistema y, por tanto, abarca la estructura de clases y la estructura de objetos del mismo. En las etapas finales del diseo y entrando ya en la implantacin, la tarea del desarrollador cambia: el centro de atencin est en la vista interna de estas abstracciones clave y mecanismos, involucrando a su representacin fsica. Pueden expresarse estas decisiones de diseo como parte de la arquitectura de mdulos y la arquitectura de procesos del sistema. La experiencia de algunos analistas nos lleva a aplicar en primer lugar el criterio orientado a objetos porque esta aproximacin es mejor a la hora de servir de ayuda para organizar la complejidad innata de los sistemas de software, al igual que ha servido de ayuda para describir la complejidad organizada de sistemas complejos tan diversos como las computadoras, plantas, galaxias o grandes instituciones sociales. Los sistemas orientados a objetos son tambin ms resistentes al cambio y por lo tanto estn mejor preparados para evolucionar en el tiempo, porque su diseo est basado en formas intermedias estables. El modelo de objetos ha influido incluso en las fases iniciales del ciclo de vida del desarrollo del software. El anlisis orientado a objetos (AOO) enfatiza la construccin de modelos del mundo real utilizando una visin del mundo orientado a objetos: El anlisis orientado a objetos es un mtodo de anlisis que examina los requisitos desde la perspectiva de las clases y objetos que se encuentran en el vocabulario del dominio del problema. CONCLUSION. La evolucin de la programacin orientada a objetos ha sido muy trascendente desde el comercio de las computadoras, ya que es ms sencillo programar el sistema de numeracin binario que utilizaban las computadoras digitales desde sus inicios, adems de que este programa es capaz de crear y almacenar programas. Gracias a esta gran evolucin de P.O.O. los programas utilizados en los computadores han sido ms fciles y sencillos de operar para el usuario; gracias a esta gran evolucin es ms sencillo crear programas no tan complejos para el usuario y as mismo el programador pueda realizar operaciones de manera ms sencilla y as tener la ventaja de que en su tareas puedan ser ms fcil de realizar y as ahorrar tiempo valioso gracias a P.O.O la tecnologa ha tenido el gran desarrollo que ahora conocemos.