lunes, 23 de mayo de 2016

Programacion orientada a objetos: evolucion de los lenguajes


Programacion orientada a objetos 


La programación orientada a Objetos básicamente define una serie de conceptos y técnicas de programación para representar acciones o cosas de la vida real basada en objetos, a diferencia de otras formas de programación como por ejemplo la estructurada, con la POO se trabaja  de manera distinta vinculando diferentes conceptos tales como clases, objetos, métodos, propiedades, estados, herencia, encapsulación entre otros, generando cada vez interrelaciones en nuestro desarrollo en pro del funcionamiento del sistema principal, definiendo el programa como un conjunto de estos objetos relacionados entre si.
Los pilares de la programación orientada a objetos son : Herencia ,encapsulación, polimorfismo y la abstracción.

Evolución de los lenguajes de programación orientados a objetos



Simula 67

El primer lenguaje orientado a objetos es el Simula 67 , fue desarrollado por los noruegos :Krinsten Nygaard y Ole-Johan Dahl y fue presentado en el año 1967
Creadores del Simula 67
Krinsten Nygaard y Ole-Johan Dahl 
















Simula 67 fue primer lenguaje que presentó las nociones de clase y herencia jerárquica. No se admite la herencia múltiple. El ocultamiento de información se lleva a cabo “protegiendo” una característica, lo cual, a su vez, evita que sea heredada en lo sucesivo. Admite la sobrecarga de métodos. La comprobación de tipos se puede realizar, bien estáticamente en el momento de la compilación, para mayor eficiencia, o bien en el momento de la ejecución si se define una característica como “virtual”.

Smalltalk


Interfaz  grafica del  Smalltalk























A principio de los años 70 ' en el centro de investigacion "Palo Alto Xerox " crearon Smalltalk fue el primer lenguaje Orientado a Objetos puro de los lenguajes Orientados a Objetos, es decir, únicamente utiliza clases y objetos 

Los objetos Smalltalk presentan características comunes:

  • Tienen una memoria propia.
  • Poseen capacidad para comunicarse con otros objetos.
  • Poseen la capacidad de heredar características de objetos ancestros.
  • Tienen capacidad de procesamiento
    Los objetos se comunican entre sí mediante el envío de mensajes.. Asimismo, un objeto puede proveer muchas operaciones (actualmente esto está determinado por cada implementación). 

    D. Parnas uno de los creadores propuso la disciplina de ocultar la información.

    Encapsulaba cada una de las variables globales de la aplicación en un solo módulo junto con sus operaciones asociadas, sólo mediante las cuales se podía tener acceso a esas variables.
    El resto de los módulos (objetos) podían acceder a las variables sólo de forma indirecta mediante las operaciones diseñadas para este proposito
    Interfaz



    C++

    C++ es un lenguaje de programación creado por Bjarne Stroustrup en 1983. Stroustrup tomó como base el lenguaje de programación más popular en aquella época el cual era C(diseñado en 1971  por Dennis Ritchie Ken Thompson basados B y BCPL) al que le añadio cualidades y características de las que carecía.
    C++ es un lenguaje de programación orientado a objetos que toma la base del lenguaje C y le agrega la capacidad de abstraer tipos como en Smalltalk.
    La intención de su creación fue el extender al exitoso lenguaje de programación C con mecanismos que permitieran la manipulación de objetos. En ese sentido, desde el punto de vista de los lenguajes orientados a objetos, el C++ es un lenguaje híbrido 
    Posteriormente se añadieron facilidades de programación genérica, que se sumó a los otros dos paradigmas que ya estaban admitidos (programación estructurada y la programación orientada a objetos). Por esto se suele decir que el C++ es un lenguaje de programación multiparadigma 
    C++ introduce nuevas palabras clave y operadores para manejo de clases

    C++ tiene los siguientes tipos fundamentales:

    • Caracteres: char (también es un entero), wchar_t
    • Enteros: short, int, long, long long
    • Números en coma flotante: float, double, long double
    • Booleanos: bool
    • Vacío: void
    Características 
    • Tiene un conjunto completo de instrucciones de control.
    • Permite la agrupación de instrucciones.
    • Incluye el concepto de puntero (variable que contiene la dirección de otra variable).
    • Los argumentos de las funciones se transfieren por su valor.
    •  E/S no forma parte del lenguaje, sino que se proporciona a través de una biblioteca de funciones.
    • Permite la separación de un programa en módulos que admiten compilación independiente.


    Interfaz Grafica del Dev-c++


    Eiffel



    Eiffel es un lenguaje de programacion orientado a objetos diseñado por Bertrand Meyer en 1985. Este lenguaje dispone de diseño por contrato que facilita la deteccion de errores y la depuracion de codigos .
    Las clases son la unidad basica , su gestion de memoria es automatica y es implementada por el recolector de basura.
    Posee un panel central de la herencia , incluyendo herencia multiple.
    Es un lenguaje orientado hacia el diseño de grandes aplicaciones y su compatibilidad asegura su portabilidad hacia otros sistemas operativos
    Posee dos desventajas , la primera es el manejo de memoria , que no es de los mejores y la segunda es que sus librerias de clases son reducidas.
    Hay 3 compiladores para Eiffel que son
    • Small Eiffel
    • ISE Eiffel
    • Visual Eiffel
    Este lenguaje soporta Herencia multiple , polimorfismo , encapsulacion y tipos genericos

    Otras caracteristicas de este lenguaje son :
    • No es sensible a mayusculas y minusculas
    • Programacion generica con y sin restricciones
    • Rutinas de ejecucion unica
    • Gestion de un sistema de tipo uniforme


    Delphi

    En este caso Delphi no es un lenguaje de programacion unicamente orientado a objetos , sino que es un entorno de desarrollo de software diseñado para la programacion visual . Pero existe una version especializada en objetos que es Objet Pascal y fue desarrollado por Apple computer en 1986 y se utilizaron para la Macintosh . En 1994 se dejo de utilizar este lenguaje cuando en Apple empezaron a utilizar chips de motorola de 68k , de arquitectura IBM que fue re-escrito en C++.
    El desarrollo de Borland Delphi se inició en 1993, y Delphi 1.0 fue lanzado oficialmente en los Estados Unidos el 14 de febrero de 1995. Delphi presentó una nueva sintaxis usando la palabra clave "class" en lugar de "object", el constructor" Create" y un destructor virtual "Destroy " (no teniéndose así que llamar a "New" ni a" Dispose"), las propiedades, los  punteros de método, y algunas otras cosas; y al mismo tiempo mantenía compatibilidad con la anterior sintaxis (permitiendo migración). 




    Java
    Es un lenguaje de progamacion orientado a objetos que fue creado en 1995 (es una extension de C++) se popularizo en 1996 por su lanzamiento comercial de su primera version , la JDK 1.0 
    en Java todos los tipos, a excepción de los tipos fundamentales de variables (int, char, long...) son clase

    El código generado por el compilador Java es independiente de la arquitectura: podría ejecutarse en un entorno UNIX, Mac o Windows

    Posee todos los conceptos en los que se basa la programacion orientada a objetos , como la herencia polimorfismo , encapsulamiento , entre otras cosas.
     Su filosofía es aprovechar el software existente. Facilitar la adaptación del mismo a otros usos diferentes a los originales sin necesidad de modificar el código ya existente.
    Java proporciona una colección de clases para su uso en aplicaciones de red, que permiten abrir sockets y establecer y aceptar conexiones con servidores o clientes remotos, facilitando así la creación de aplicaciones distribuidas .
    Proporciona numerosas comprobaciones en compilación y en tiempo de ejecución y  especifica los tamaños de sus tipos de datos básicos y el comportamiento de sus operadores aritméticos
    La sintaxis de Java se deriva en gran medida de C++. Pero a diferencia de éste, que combina la sintaxis para programación genérica, estructurada y orientada a objetos, Java fue construido desde el principio para ser completamente orientado a objetos. Todo en Java es un objeto (salvo algunas excepciones), y todo en Java reside en alguna clase





    C#

    Es un lenguaje de programacion orientado a objetos desarrollado y estandarizado por Microsoft como parte de su plataforma .Net
    Este lenguaje fue creado al principio de los 2000 por Microsoft. Con el C# se pretendió  incorporar las ventajas o mejoras que tiene el lenguaje JAVA. Así se consiguió que tuviese las ventajas del C,del C++, pero además la productividad que posee el lenguaje JAVA y se le denomino C#
    C# utiliza plantillas de proyecto, diseñadores, páginas de propiedades, asistentes de código, un modelo de objetos y otras características del entorno de desarrollo.
    C# es simple, eficaz, con seguridad de tipos y orientado a objetos.  Las numerosas innovaciones de C# permiten desarrollar aplicaciones rápidamente y mantener la expresividad y elegancia 

    de los lenguajes de estilo de C.  
    Una variable de objeto de cierta clase no almacena los valores del objeto sino su referencia (al igual que Java).
    El operador de asignación no copia los valores de un objeto, sino la referencia al mismo (al igual que Java).
    Un constructor tiene el mismo nombre que su clase y es sintácticamente similar a un método.
    La palabra clave this es una referencia al mismo objeto en el cual se usa.
    Tiene la Capacidad para desarrollar componentes de software que se puedan usar en ambientes distribuidos.
    Su codigo fuente es porable
    El cambio de los programadores familiriazidaos a C ,  c++ y Java a este lenguaje es relativamente facil ya que posee caracteristicas similares a los anteriores





    4 comentarios:

    1. Este comentario ha sido eliminado por el autor.

      ResponderBorrar
    2. Un detalle en la sección de Delphi. Donde dice: ...En 1994 se dejo de utilizar este lenguaje cuando en Apple empezaron a utilizar chips de motorola de 68k , de arquitectura IBM que fue re-escrito en C++...

      En realidad en 1994 se dejaron de utilizar los procesadores 680x0 de Motorola, y se los reeemplazó por los Power PC de IBM.

      ResponderBorrar