Blog de Página Web Leon

Programación orientada a objetos POO

Es un conjunto de metodologías de programación que deben cumplirse para determinar que se está escribiendo el código bajo ésta estructura en un lenguaje de programación con las respectivas características.  Este tipo de programación sirve para obtener el mejor rendimiento de trabajo en el sistema mejorando su distribución de procesos, creando un desarrollo bien estructurado, haciéndolo legible para todos los programadores, analistas y diseñadores involucrados, y lo más importante: reducir los tiempos de mantenimiento. Además que permitirá que muchas de sus rutinas podrán ser reusables para otros proyectos.

Características de la programación orientada a objetos

Para que un programa esté definido bajo la metodología de programación orientada a objetos, deberá estar escrito en un lenguaje que soporte esta arquitectura y que en el código se puedan distinguir las siguientes condiciones:

  • Encapsulamiento
  • Herencia
  • Polimorfismo
  • Abstracción de datos

Clase

Código o fracción de código finito compuesto de atributos y métodos escritos en un lenguaje de programación orientado a objetos.  Al conjunto de atributos y métodos de una clase se les conoce como datos miembro. Una clase sirve para crear la arquitectura que dará forma a un objeto, las clases se diseñan según los sustantivos que participarán en el sistema. Por ejemplo, diseñaremos un sistema que ejecutará lo siguiente:

Controlar el inventario de vehículos de una agencia

En la oración anterior notamos tres sustantivos: inventario, vehículos y agencia, por consiguiente, cada uno será una clase. Cada una tendrá atributos y métodos propios y específicos que darán funcionalidad a los objetos que sean creados. Hagamos un ejemplo, tomemos la clase vehículo y describamos sus atributos o propiedades, cabe mencionar que un atributo o método se entiende como todas aquellos adjetivos que describen un objeto y lo distinguen de otro aun cuando provengan de la misma “fábrica”:

  •                 Color
  •                 Placa
  •                 Tamaño
  •                 Marca
  •                 Kilometraje
  •                 Registro vehicular

Ahora describamos las acciones que hace un vehículo:

  •                 Encender
  •                 Apagar
  •                 Avanzar
  •                 Parar

Así quedará nuestra clase:

Diseño de la clase vahículo

Fig. 1.1 Diseño de la clase vehículo

Como podemos ver en la imagen de la figura 1.1, en los atributos y en los métodos se colocó un signo más antes de cada uno, esto implica que es público, si hubiese un signo menos, el atributo o el método sería privado, es decir, que solamente los métodos de la misma clase podrán acceder a estos componentes. Las clases se pueden comunicar entre sí para eso sirve el operador de acceso. Cuando una clase A se comunica con una clase B y la primera requiere de un proceso de la segunda, a la clase A no le importa que proceso se realice en la clase B, solo le interesa el dato:

Funcionamiento externo de una clase

Fig. 1.2 Funcionamiento externo de una clase

Al analizar una clase, veremos que dentro tiene un mecanismo que funciona para crear el objeto con componentes que se comunican entre sí y otros que se comunican hacia fuera de ésta:

Funcionamiento interno de una clase

Fig. 1.3 Funcionamiento interno de una clase

En resumen, una clase es una plantilla que sirve para crear objetos con diferentes características. Por ejemplo, con una misma horma se pueden crear diferentes tipos de calzado y el concepto de objeto se cumple, parten de un mismo molde pero resultan diferentes objetos semejantes con características propias:

horma y diferentes zapatos

Fig. 1.4 horma y diferentes zapatos

Retomando el ejemplo de la clase Vehículo, al instanciarla vemos que podremos lograr varios objetos sin esfuerzo, con características y acciones propias partiendo de una plantilla:

Ejemplo herencia de superclase vehículo

Fig. 1.5 Ejemplo herencia de clase vehículo

Al tener una idea de que es una clase podremos analizar las cualidades que hacen propia a la programación orientada objetos.

Encapsulamiento

Es la cualidad de restringir el acceso y ocultar el proceso de cada uno de los datos miembro de una clase y sólo podrán cambiar mediante las operaciones definidas para ese espacio. El aislamiento protege contra la modificación y garantiza el flujo del programa. Una clase y un método funcionan como cápsula. En una pantalla, nosotros solo vemos la imagen, y no conocemos lo que se procese dentro, figura 1.6.

Ejemplo de encapsulamiento, pantalla

Fig. 1.6 Ejemplo de encapsulamiento

Herencia

Es la propiedad de que unos objetos sean creados a partir de otros ya existentes en proporción a una relación entre una clase general y una más específica.  En la imagen se puede apreciar una superclase llamada Animales, que describe todos aquellos objetos animados clasificados como seres vivos, las subclases se encuentran en el segundo nivel y denotan características más específicas de los animales por su hábitat, estructura ósea, alimentación, etc. En la clase Acuáticos, podremos apreciar dos subclases, Ríos y Océanos. Un animal de Ríos tendrá las características de un animal Acuático heredando las características de la superclase Animal.

Superclase y clases sobre la clasificación de los animales

Fig. 1.7 Superclase y clases sobre la clasificación de los animales

Polimorfismo

Es la capacidad de crear objetos con diferentes formas donde la clase se comporta como una entidad donde puede procesar diferentes valores durante la ejecución del programa. En la figura 1.8 la clase Transporte genera 5 objetos completamente diferentes entre sí.

Clase Transporte y los objetos creados

Fig. 1.8 Clase Transporte y los objetos creados

Abstracción de datos

Es el aislamiento de un elemento de su entorno para obtener el procesamiento fundamental de éste dejando atrás los procesos no esenciales con el fin de implementarlo en otro entorno.

 Objeto

Un objeto se define como el conjunto de proceso de datos para una o varias tareas muy específicas y que vive solo en el transcurso que dure la ejecución del programa.  Los objetos se componen de estados, comportamiento e identidades.

Otras características

Ya vimos las principales características de la programación orientada a objetos, sin embargo aún existen más ya que es un tema complejo.

Sobrecarga de métodos

Es la capacidad de nombrar dos o más métodos con el mismo identificador pero definidas para diferentes propósitos. Lo único que hará la diferencia, son los parámetros que reciba. Ejemplo:

public class Iva {
   private double iva;
   public void setIva() {
        double ivaMexico = 0.16;
        iva = ivaMexico;
   }
   public void setIva(double ivaExtranjero) {
        iva = ivaExtranjero;
   }
}

Nótese que el método setIva se declara en dos rutinas diferentes, sin embargo la firma no es la misma ya que el primer método no recibe argumentos y el segundo si.

Modularidad

Consiste en dividir el programa en fracciones más pequeñas de código de nombre módulos. Cada módulo debe ser independiente de otro.

Jerarquía

Es una propiedad que permite ordenar las abstracciones.

Instancia

Una instancia es la declaración de un medio por el que se accederán a los datos miembro permitidos de una clase desde fuera de ésta. Un objeto es una instancia de una clase y se pueden tener muchas al mismo tiempo con características propias.

Relaciones entre clases

Se refiere a los mensajes que se comparten entre dos clases y la comunicación entre los objetos. Las relaciones pueden ser de uno a uno, uno a muchos, muchos a uno y muchos a muchos.

Conclusión

A grandes rasgos la programación orientada a objetos ganó prestigio por la estructuración que ofrece en los programas, por la sencillez para reusar código y la administración de proyectos donde intervienen muchas personas. No es el único modelo de programación que existe pero sí el más difundido. Entorno a esto, se han desarrollado herramientas de modelado como UML que planifica el desarrollo de manera gráfica pensando en modelos orientados a objetos. En los años 90’s se popularizó ésta forma de desarrollar software y tomó por asalto la industria de la informática inspirando a grandes firmas como Sun Microsystem lanzando al mercado su producto estrella: Java, el cual tenía como propósito disminuir el número de compilaciones y correcciones al código para su implementación en distintas plataformas. Pero java no fue el primer lenguaje de programación en adquirir la manipulación de objetos, a principios de los años 80’s, el popular lenguaje de programación C se rediseño con ésta característica y la extensión se llamó C++, en el año 2000 Microsoft lanzó su lenguaje de programación C# (C Sharp) el cuál se originó de mejoras de otros lenguajes como C y el propio C++.

El mundo de la programación avanza a pasos agigantados y gracias a este tipo de metodologías los desarrolladores acortan el tiempo y aumentando los beneficios, y lo podemos ver en nuestro entorno en nuestra vida cotidiana.

1 Comentario

  1. bestdatingsitesnow.com

    Hello, I think your website could be having web browser compatibility
    problems. Whenever I look at your web site in Safari, it looks fine however, when opening in Internet Explorer,
    it’s got some overlapping issues. I just wanted to give you a quick heads up!
    Other than that, fantastic site!

Dejar un comentario