domingo, 9 de abril de 2017

PROGRAMACIÓN ORIENTADA A OBJETOS

UNIVERSIDAD NACIONAL DEL ALTIPLANO
FACULTAD DE INGENIERIA MECANICA ELECTRICA, ELECTRONICA Y SISTEMAS 
ESCUELA PROFESIONAL DE INGENIERÍIA DE SISTEMAS

Autor: Cristian A. Paredes Vilca
Docente: Ing. Aldo Hernán Zanabria Galvez
Asignatura: Lenguajes y Metodologías de Programación - II Semestre
Fecha: 10/04/17


CONTENIDO:

1. Introducción
2. Breve Historia
3. Programación Orientada a Objetos (POO)
4. Elementos de la POO - Ejemplos
5. Algunos Lenguajes Orientado a Objetos
6. Conclusiones
7. Fuentes

1. INTRODUCCION:

La tecnología orientada a objetos se define como una metodología de diseño de software que modela las características de objetos reales o abstractos por medio del uso de clases y objetos. Hoy en día, la orientación a objetos es fundamental en el desarrollo de software, sin embargo, esta tecnología no es nueva, sus orígenes se remontan a la década de los años sesenta. De hecho Simula, uno de los lenguajes de programación orientados a objetos más antiguos, fue desarrollado en 1967. 

Este tipo de programación permite solventar algunos de los problemas que ha tenido el desarrollo del software desde sus comienzos, como por ejemplo la falta de portabilidad y baja reusabilidad del código, junto con la dificultad en la modificación y desarrollo del mismo. Además es una técnica de codificación bastante mas intuitiva que el resto.

2. BREVE HISTORIA:

La POO tienen origen en Simula 67, un lenguaje diseñado para hacer simulaciones, creado por Ole-Johan Dahl y Kristen Nygaard, del Centro de Cómputo Noruego en Oslo. En este centro se trabajaba en simulaciones de naves, que fueron confundidas por la explosión combinatoria de cómo las diversas cualidades de diferentes naves podían afectar unas a las otras. La idea surgió al agrupar los diversos tipos de naves en diversas clases de objetos, siendo responsable cada clase de objetos de definir sus "propios" datos y comportamientos. Fueron refinados más tarde en Smalltalk, desarrollado en Simula en Xerox PARC (cuya primera versión fue escrita sobre Basic) pero diseñado para ser un sistema completamente dinámico en el cual los objetos se podrían crear y modificar "sobre la marcha" (en tiempo de ejecución) en lugar de tener un sistema basado en programas estáticos.

La POO se fue convirtiendo en el estilo de programación dominante a mediados de los años 1980, en gran parte debido a la influencia de C++, una extensión del lenguaje de programación C. Su dominación fue consolidada gracias al auge de las interfaces gráficas de usuario, para las cuales la POO está particularmente bien adaptada. En este caso, se habla también de programación dirigida por eventos.

Las características de orientación a objetos fueron agregadas a muchos lenguajes existentes durante ese tiempo, incluyendo Ada, BASIC, Lisp más Pascal, entre otros. La adición de estas características a los lenguajes que no fueron diseñados inicialmente para ellas condujo a menudo a problemas de compatibilidad y en la capacidad de mantenimiento del código. Los lenguajes orientados a objetos "puros", por su parte, carecían de las características de las cuales muchos programadores habían venido a depender. Para saltar este obstáculo, se hicieron muchas tentativas para crear nuevos lenguajes basados en métodos orientados a objetos, pero permitiendo algunas características imperativas de maneras "seguras". El lenguaje de programación Eiffel de Bertrand Meyer fue un temprano y moderadamente acertado lenguaje con esos objetivos, pero ahora ha sido esencialmente reemplazado por Java, en gran parte debido a la aparición de Internet y a la implementación de la máquina virtual Java en la mayoría de navegadores web. PHP en su versión 5 se ha modificado; soporta una orientación completa a objetos, cumpliendo todas las características propias de la orientación a objetos.

3. PROGRAMACION ORIENTADA A OBJETOS (POO):

Es un paradigma de programación que viene a innovar la forma de obtener resultados, más orientado a como vemos las cosas en la vida real que otros tipos de programación (programación lógica, funcional, imperativa).

Los objetos manipulan los datos de entrada para la obtención de datos de salida específicos, donde cada objeto ofrece una funcionalidad especial.

Muchos de los objetos pre-diseñados de los lenguajes de programación actuales permiten la agrupación en bibliotecas o librerías, sin embargo, muchos de estos lenguajes permiten al usuario la creación de sus propias bibliotecas.

Está basada en varias técnicas, incluyendo herencia, cohesión, abstracción, polimorfismo, acoplamiento y encapsulamiento.

3. ELEMENTOS DE LA POO:

CLASE:

Es un molde o bien prototipo en donde se definen los atributos (variables) y las acciones (métodos) comunes de una entidad. 

Una clase, es simplemente una abstracción que hacemos de nuestra experiencia sensible. El ser humano tiende a agrupar seres o cosas -objetos- con características similares en grupos -clases-. Así, aun cuando existen por ejemplo multitud de vasos diferentes, podemos reconocer un vaso en cuanto lo vemos, incluso aun cuando ese modelo concreto de vaso no lo hayamos visto nunca. El concepto de vaso es una abstracción de nuestra experiencia sensible. Quizás el ejemplo más claro para exponer esto lo tengamos en las taxonomías; los biólogos han dividido a todo ser (vivo o inerte) sobre la tierra en distintas clases.

Ejemplo:

Tomemos como ejemplo una pequeña porción del inmenso árbol taxonómico: 


Ellos, llaman a cada una de estas parcelas reino, tipo, clase, especie, orden, familia, género, etc.; sin embargo, nosotros a todas las llamaremos del mismo modo: clase. Así, hablaremos de la clase animal, clase vegetal y clase mineral, o de la clase félidos y de las clases leo (león) y tigris (tigre). 

Ejemplo:

La clase Avión se puede utilizar para definir los atributos (tipo de avión, distancia, altura, velocidad de crucero, capacidad, país de origen, etc.) y los métodos (calcular posición en el vuelo, calcular velocidad de vuelo, estimar tiempo de llegada, despegar, aterrizar, volar, etc.) 

Ejemplo:

La clase Celular tiene características (marca, modelo, sistema operativo, pantalla, teclado, etc.) y comportamientos (hacer y recibir llamadas, enviar mensajes multimedia, transmisión de datos, etc.).

ATRIBUTO:

Son los datos o variables que caracterizan al objeto y cuyos valores en un momento dado indican su estado. 

Un atributo es una característica de un objeto. Mediante los atributos se define información oculta dentro de un objeto, la cual es manipulada solamente por los métodos definidos sobre dicho objeto.

Un atributo consta de un nombre y un valor. Cada atributo está asociado a un tipo de dato, que puede ser simple (entero, real, lógico, carácter, string) o estructurado (arreglo, registro, archivo, lista, etc.)

Los modos de acceso son: Publico, Privado y Protegido.

METODO:

Son las operaciones (acciones o funciones) que se aplican sobre los objetos y que permiten crearlos, cambiar su estado o consultar el valor de sus atributos. 

Los métodos constituyen la secuencia de acciones que implementan las operaciones sobre los objetos. La implementación de los métodos no es visible fuera de objeto.

OBJETO: 

Una unidad de software conformada por atributos y métodos específicos. 

Es el concepto principal sobre el cual se fundamenta la tecnología orientada a objetos. Un objeto puede ser visto como una entidad que posee atributos y efectúa acciones. En el mundo real podemos encontrar cientos de ejemplos que cumplen con ésta definición, algunos de ellos son: una bicicleta, un automóvil, una persona, una computadora, etcétera.

Estos objetos son casos particulares de entidades llamadas clases en donde se definen las características comunes de tales objetos. 

Ejemplo:
  • Veamos el caso particular del objeto automóvil
  • Podemos mencionar como atributos de éste: el modelo, el color, la marca, el número de placas, entre otros
  • Algunas acciones que es capaz de realizar un automóvil son: ir en reversa, virar, frenar, acelerar y cambiar la velocidad
  • Este objeto automóvil, es una instancia particular de la entidad automóvil. 
  • En términos de la programación orientada a objetos, se dice que todo objeto tiene un estado (atributos) y un comportamiento (acciones)
Ejemplo:
  • Tomemos como ejemplo un cassette
  • Podemos mencionar como atributos de éste: peso, dimensiones, color, potencia
  • Métodos: grabar, avanzar cinta, reproducir
HERENCIA:

Es un molde o bien prototipo en donde se definen los atributos (variables) y las acciones (métodos) comunes de una entidad. 

La herencia es uno de los conceptos más cruciales en la POO (programacion orientada a objetos). La herencia básicamente consiste en que una clase puede heredar sus variables y métodos a varias subclases (la clase que hereda es llamada superclase o clase padre). Esto significa que una subclase, aparte de los atributos y métodos propios, tiene incorporados los atributos y métodos heredadosde la superclase. De esta manera se crea una jerarquía de herencia.

Ejemplo:

Por ejemplo la clase Leon hereda espina dorsal de su clase padre Vertebrados, se alimenta con leche materna de su clase padre Mamifero.

ABSTRACCION:

Consiste en captar las características esenciales de un objeto, así como su comportamiento.


Por ejemplo, volvamos al ejemplo de los automóviles, ¿Qué características podemos abstraer de los automóviles? O lo que es lo mismo ¿Qué características semejantes tienen todos los automóviles? Todos tendrán una marca, un modelo, número de chasis, peso, llantas, puertas, ventanas, etc. Y en cuanto a su comportamiento todos los automóviles podrán acelerar, frenar, retroceder, etc.

ENCAPSULAMIENTO:

Es la propiedad que permite ocultar al mundo exterior la representación interna del objeto. Esto quiere decir que el objeto puede ser utilizado, pero los datos esenciales del mismo no son conocidos fuera de él. 

La idea central del encapsulamiento es esconder los detalles y mostrar lo relevante. Permite el ocultamiento de la información separando el aspecto correspondiente a la especificación de la implementación; de esta forma, distingue el "qué hacer" del "cómo hacer". La especificación es visible al usuario, mientras que la implementación se le oculta. El encapsulamiento en un sistema orientado a objeto se representa en cada clase u objeto, definiendo sus atributos y métodos con los siguientes modos de acceso:
  1. Público (+): Atributos o Métodos que son accesibles fuera de la clase. Pueden ser llamados por cualquier clase, aun si no está relacionada con ella. 
  2. Privado (-): Atributos o Métodos que solo son accesibles dentro de la implementación de la clase. 
  3. Protegido (#): Atributos o Métodos que son accesibles para la propia clase y sus clases hijas (subclases). 
POLIMORFISMO:

Es una propiedad que permite que un método tenga múltiples implementaciones, que se seleccionan en base al tipo objeto indicado al solicitar la ejecución del método. 

El polimorfismo operacional o Sobrecarga operacional permite aplicar operaciones con igual nombre a diferentes clases o están relacionados en términos de inclusión. En este tipo de polimorfismo, los métodos son interpretados en el contexto del objeto particular, ya que los métodos con nombres comunes son implementados de diferente manera dependiendo de cada clase. 

Por ejemplo, el área de un cuadrado, rectángulo y círculo, son calculados de manera distinta; sin embargo, en sus clases respectivas puede existir la implementación del área bajo el nombre común Área. En la práctica y dependiendo del objeto que llame al método, se usará el código correspondiente. 

Ejemplo:  

Superclase: Clase Animal  
Subclases: Clases Mamífero, Ave, Pez 

Se puede definir un método Comer en cada subclase, cuya implementación cambia de acuerdo a la clase invocada, sin embargo el nombre del método es el mismo. 

Mamifero.Comer ≠ Ave.Comer ≠ Pez.Comer 

Otro ejemplo de polimorfismo es el operador +. Este operador tiene dos funciones diferentes de acuerdo al tipo de dato de los operandos a los que se aplica. Si los dos elementos son numéricos, el operador + significa suma algebraica de los mismos, en cambio si por lo menos uno de los operandos es un String o Carácter, el operador es la concatenación de cadenas de caracteres. 

4. ALGUNOS LENGUAJES ORIENTADO A OBJETOS:
  • C++: Está considerado como el lenguaje más potente, debido a que permite trabajar tanto a alto como a bajo nivel, aunque obliga a hacer casi todo manualmente, al igual que C, lo que hace difícil aprendizaje. 
  • C#: Combina el control a bajo nivel de lenguajes como C y la velocidad de programación de lenguajes como Visual Basic. 
  • VB.NET: Es una versión de Visual Basic destinada al desarrollo de aplicaciones .NET. Visual Basic apareció en el año 1991 como una evolución del QuickBasic que fabricaba Microsoft. 
  • Java: Fue desarrollado por James Gosling y sus compañeros de Sun Microsystems al inicio de la década de 1990. A diferencia de los lenguajes de programación convencionales, Java es compilado en un bytecode que es ejecutado por una máquina virtual Java. El lenguaje toma mucha de su sintaxis de C y C++, pero tiene un modelo de objetos mucho más simple y elimina herramientas como los punteros. 
  • Objective-C: Es el principal lenguaje de programación en Mac OS X. Mac OS X es el sistema operativo de la familia de ordenadores Macintosh. 
  • PHP: Es un lenguaje de programación usado generalmente para la creación de contenidos en webs. El nombre es el acrónimo recursivo de "PHP: Hypertext Preprocessor", inicialmente PHP Tools, o, Personal Home Page Tools. Se trata de un lenguaje interpretado. 
5. CONCLUSIONES:
  • La orientación a objetos es paradigma de que está de moda para el desarrollo de software.
  • Un objeto es una abstracción conceptual del mundo real que se puede traducir a un lenguaje de programación orientado a objetos.
  • Un objeto del mundo real tiene características y comportamientos, y de la misma manera, un objeto del mundo del software tiene variables y métodos.
  • Una clase es una plantilla que define las variables y métodos a ser incluidas en un tipo de objeto específico.
  • Los objetos también son llamados instancias de la clase. Los objetos sólo almacenan su estado. Se dice que un objeto tiene estado cuando tiene valores en sus variables.
  • Los objetos se comunican entre ellos usando los mensajes. Un mensaje es la invocación de un método del objeto.
6. FUENTES:














No hay comentarios.:

Publicar un comentario