Programación Orientada
rockjonsk26 de Mayo de 2014
14.521 Palabras (59 Páginas)322 Visitas
José Luis López Goytia / Ángel Gutiérrez González 1
4. El paradigma de la Programación Orientada a Objetos
4.1. Un acercamiento intuitivo al paradigma de la POO
El desarrollo tecnológico pretende lograr que los sistemas estén integrados por
componentes relativamente independientes, diseñados y probados antes de ser
incorporados a un sistema global, de manejo sencillo y fácil construcción. Todo
ello con la idea de que si algún componente presenta problemas sólo hay que
remplazarlo por otro para solucionar la situación. A esta esta estrategia se le
conoce como desarrollo modular. En general, se busca la reutilización de
componentes o módulos de programas como lo hacen las bibliotecas de los
propios lenguajes de programación.
En la programación estructurada esta idea se cristalizó a través de subrutinas
agrupadas en bibliotecas. Sin embargo, al paso del tiempo este avance fue
insuficiente. Por ello, surgió la programación orientada a objetos (POO) como un
intento para dominar la complejidad del desarrollo de software.
Para llegar a una buena práctica de la Programación Orientada a Objetos hay
que proseguir con el enfoque modular, que busca aplicar principios de
abstracción al dividir un problema complejo en distintos módulos o partes. En
otras palabras, se trata de agregar un nuevo tipo de módulo -en nuestro caso,
clases y objetos- que permita manejar las variables que siempre es necesario
manipular en los programas
Al inicio es más fácil acercarse a este nuevo paradigma a través de ejemplos
de la vida cotidiana. Si miramos a nuestro alrededor podemos percibir que
estamos rodeados de objetos: muy probablemente en casa tenemos una
televisión, un teléfono, una computadora, un automóvil, una bicicleta y muchas
otras cosas más. Cada uno de estos objetos está compuesto por distintas partes o
componentes que interactúan con otras.Para el caso de una bicicleta sabemos
José Luis López Goytia / Ángel Gutiérrez González 2
que tiene cadena, ruedas y varios objetos más, de tal forma que si los armamos o
integramos adecuadamente tendremos el objeto bicicleta.
En todos los objetos existen componentes que el usuario final puede manipular
para hacerlos funcionar. No obstante, la forma en que trabajan está a nivel interno
y debe de ser desconocida e inaccesible para el propio usuario, lo cual hace más
fácil su manejo y brinda un aspecto de seguridad (¿se sentiría bien si supiera que
cualquier persona puede alterar la lógica interna del tablero del elevador?). En
teoría, un componente sólo debería comunicarse con otros componentes a través
de los controles establecidos para ello. El foco de un cuarto únicamente debiera
prenderse y apagarse a través de los contactos y no permitir que existiera un
"cable oculto" en la sala que también pudiera cubrir dicha funcion, pues aunque da
ciertas ventajas también podría ocasionar desde molestias hasta accidentes
graves. ¿Suena exagerado? En muchos países miles de medidores de luz tienen
"diablitos" que permiten que el hogar o el negocio reciban energía eléctrica sin que
este consumo quede registrado para el cobro correspondiente (y muchos de estos
"diablitos" improvisados han causado incendios).
Si los componentes funcionan correctamente es mucho más fácil su
instalación y reemplazo. Un ratón de computadora que ya no sirva puede ser
sustituido con suma facilidad siempre y cuando el nuevo ratón cubra con la misma
interfase para interactuar con el sistema (en la actualidad, la entrada USB se ha
convertido prácticamente en un estándar de entrada para este tipo de
dispositivos)1.
Esta forma de visualizar los objetos permite el diseño de aplicaciones
orientadas a objetos y su posterior programación con lenguajes orientados a
objetos, independientemente de cual se utilice. Cuando un programa está
1 Un tema polémico acerca de la sustitución de componentes en el área electrónica y de cómputo
es el impacto ecológico que trae consigo, sobre todo por la llamaa obsolescencia programada.
¿Hasta dónde debe tirarse un componente y hasta qué punto debe ser reparado? El tema va más
allá de lo teórico, pues también aplica a los componentes de software. Lamentablemente, la
discusión queda fuera de los alcances de este libro.
José Luis López Goytia / Ángel Gutiérrez González 3
elaborado en función de sus componentes, cada uno de ellos tiene una función
predeterminada y puede interactuar con otros de diferentes formas predefinidas.
La programación orientada a objetos es una manera diferente ver o atacar los
problemas. De ahí la posible dificultad de aprender un lenguaje orientado a objetos
sin entender las bases de la programación orientada a objetos.
Si se observa con cuidado, muchos de estos conceptos ya se aplican a
subrutinas, pero la programación orientada a objetos crea una mayor
independencia de los componentes con el programa principal.
POO y objetos
Un primer acercamiento intuitivo a la programación orientada a objetos pasa,
justamente por los objetos, llamados también instancias de clase. Por ejemplo, mi
computadora es una de las tantas que existen, representa una instancia de la
clase de objetos conocida como computadoras. Como lo mencionamos
anteriormente los objetos tienen estados o atributos: marca, procesador8 y
algunos métodos: lectura de archivos, escritura de archivos.
El factor determinante es el estado muy particular de cada computadora, que
es independiente del estado de las demás computadoras. La particularidad de
cada atributo puede ser diferente en cada caso. Una computadora tiene un
procesador, que es de alguna de las distintas velocidades de procesamiento que
existen; también puede ser de una marca entre varias. De tal forma que podemos
definir un grupo de variables y métodos para todas las computadoras.
En la programación orientada a objetos se abordan los problemas a través de
objetos, situándolos en un escenario del "mundo real" del problema para
implementarlo en nuestro programa. Por ejemplo, si hacemos referencia al objeto
automóvil, podemos deducir que tiene características y diferente comportamiento.
José Luis López Goytia / Ángel Gutiérrez González 4
Características o atributos: Marca, Modelo, Color, HP,…
Comportamiento o métodos: Frenar, Acelerar, Retroceder,…
La realidad (perros, edificios, servicios, etc.) será representada a través de
objetos dentro de un programa. Estos objetos poseen un conjunto de propiedades
o atributos y un conjunto de métodos mediante los cuales muestran su
comportamiento. Las posibles características (atributos) de un objeto y su
comportamiento (métodos) quedan definidos por la clase a la cual pertenece.
Un objeto representa un concepto dentro de un programa y tiene la información
necesaria para abstraer dicho concepto: los datos que describen su estado y las
operaciones que pueden modificar dicho estado y determinan las capacidades del
objeto. Los objetos tienen un tiempo de vida (existen mientras está en ejecución el
programa) y un comportamiento, en el que los programas interactúan con los
objetos mediante interfaces de otros objetos.
Un objeto es que un conjunto de atributos y métodos que se relacionan entre sí
y que modelan objetos o entidades del mundo real. En otras palabras, un objeto es
la representación en un programa de un concepto y contiene toda la información
necesaria para su abstracción: datos o variables que describen sus atributos y
operaciones que pueden realizarse sobre los ellos.
Figura 4-1. Una clase Foco con un atributo y una rutina de comportamiento. A
partir de ella se definieron los objetos foco1 y foco2, que tienen diferente
estatus.
Suponga que existen dos objetos de la clase Foco, llamados foco1 y foco2.
Ambos tendrán los mismos atributos y métodos, aunque cada uno tendrá sus
propios valores para los distintos atributos, como se muestra en los diagramas de
Foco
estado: String
cambiarEstado()
foco1: Foco
estado=”encendido”
foco2: Foco
estado=”apagado”
José Luis López Goytia / Ángel Gutiérrez González 5
clase de la figura 4-1. En resumen, un objeto es una unidad de código compuesto
de atributos y métodos relacionados.
Si retomamos el ejemplo de un automóvil, podríamos tener un FIAT 500,
año 2014, color rojo y que alcanza una velocidad de 240 km/h. En otras palabras,
tendremos al objeto automóvil con sus características definidas. Cuando a las
características del objeto se le ponemos valores entonces se dice que el objeto
tiene estados. Los atributos almacenan los estados de un objeto. Los datos
anteriores los podríamos expresar de la siguiente manera:
ATRIBUTO VALOR
Marca FIAT
Modelo 500
Año 2014
Color Rojo
Velocidad 240 km/h
Los lenguajes de programación estructurados
...