PROGRAMACION ORIENTADA A OBJETOS
Los lenguajes
de programación orientada a objetos existen desde los años 60 durante la pasada
década se dio un crecimiento sin
paralelo en el uso y la aceptación de las tecnologías de objetos en toda
la industria del software.
Éxitos
recientes como los de Java, CORBA y C++ han impulsado a las tecnologías
orientadas a objetos a nuevos niveles de aceptación. Después de mucho tiempo
permaneces limitada a ambientes académicos.
En pocas
palabras las computadoras en la actualidad reciben el perfeccionamiento de más
de 50 años del perfeccionamiento de la programación orientada a objetos.
Había una
dificultad y es que esta programación está muy susceptible a errores, y la
falta de estructura consistente hacia prácticamente imposible el mantenimiento
del código.
Después de
la fama y popularidad de las computadoras, empezaron a aparecer lenguajes
procedurales también conocidos como lenguajes de procedimientos, Este paradigma
introdujo una gran cantidad de mejoras en cuanto al lenguaje de la maquina como
la estructura consistentes con ello la facilidad de depurarlas más fácilmente y
entenderlas más brevemente.
Ahora
hablemos de la programación modular o por módulos. Con un lenguaje como
Modula2, intenta superar algunas definiciones de la programación procedural. La
programación modular divide un programa en una gran cantidad de componente o
módulos, a diferencia de la programación procedural que separa datos y
procedimientos, los módulos combinan ambos elementos.
Pero la
programación modular tiene algunos inconvenientes importantes, los módulos no
son extensibles, lo que significa que no es posible realizar cambios
incrementales a un módulo sin abrir el
código y realizar cambios directamente. Tampoco es posible basar un módulo en
otro más que a través de la delegación y
a pesar que un módulo podría definir un tipo de dato, no puede compartir el
tipo de otro modulo.
S lenguajes
modulares y procedurales, los datos estructurados y sin estructura tienen un “tipo”.
El concepto tipo se puede entender con mayor facilidad si piensa que es el formato
que tienen los datos en memoria. Los lenguajes de tipos estrictos o llamados
fuertes requieren que cada objeto tenga un tipo específico definido. Sin embargo, los tipos no se pueden
extender para crear otro tipo, excepto mediante una técnica llamada “agregación”,
Por ejemplo, en C, podemos tener dos tipos de datos relacionados:
typedef
struct
{
int a;
int b;
}
unTipoBase;
typedef
struct
{
unTipoBase Base;
int c;
} unTipoDerivado;
En este
ejemplo, unTipoDerivado se basa en unTipoBase, pero una estructura de unTipoDerivado
no se puede manejar directamente como una estructura de unTipoBase. Solo es
posible hacer referencia al miembro Base de una estructura de unTipoDerivado.
Por último la programación modular es también un hibrido de programación
procedural que divide un programa en una gran cantidad procedimientos. La diferencia
es que en lugar de actuar sobre datos puros. Estos procedimientos manejan módulos.
La Programación
orientada a objetos da el siguiente paso lógico a la programación modular a través
de la adición de herencia y polimorfismo
al módulo. La POO estructura un programa dividiéndolo en una cantidad
determinada de objetos de alto nivel. Ada objeto le da forma a algún aspecto
del problema que se intenta resolver. Una secuencia de llamadas a
procedimientos para controlar el flujo dl programa ya no es el enfoque
principal de la programación orientada a objetos, Tan solo los objetos interactúan
y juegan entre ellos para dar así toda la fluidez al programa.
Enfoque De La Programación
Orientada a Objetos paras crear software mediante objetos.
Supongamos que
desarrollaremos un programa o aplicación con programación orientada a objetos
que implementara un carrito de compras en línea o una terminal de punto de
venta. Un programa OO contendrá objetos artículo, carrito de compras, cupones y
cajero. Cada uno de estos interactuara
con los demás para conformar el programa Por ejemplo: cuando el cajero procese
un pedido. Tendrá que revisar el precio de cada artículo.
La definición
de un programa en términos de objetos es una manera muy profunda de visualizar
al software.
Los objetos
deber ser conceptualizados en cuanto a su comportamiento, se debe mirar el
objeto en cuanto a su implementación, esta forma de pensar obliga a plantear
los términos naturales y reales. Los objetos permiten darle forma a un programa
en términos de sustantivos verbos y adjetivos del dominio del problema.
El dominio
es el espacio donde se desarrolla un problema. El dominio es el conjunto de
conceptos que representan los aspectos importantes del problema que intenta
resolver.
Objeto un
objeto es un componente de software que encapsula un estado y un comportamiento.
Los objetos permiten dar forma al software en términos y abstracciones reales.
Una comparación
muy precisa del software orientado a objetos, de la misma forma que la vida
real está conformada por objetos.
¿Qué es una clase?
Al igual que
en la vida real, en el mundo de la programación orientada a objetos esta agrupa
los objetos de acuerdo con sus atributos, características, comportamientos y
cualidades comunes.
Una clase
define todas las características comunes a un tipo de objeto. Específicamente,
la clase define todos los aquellos atributos y comportamientos exhibidos por el
objeto. La clase define de manera específica a cuales mensajes respondes sus objetos,
Cuando un objeto desea poner en práctica el comportamiento de otro objeto, no
lo hace directamente, si no que pide al otro objeto que se modifique así mismo.
En
resumen una clase define los atributos y
comportamientos comunes que comparte un tipo de objeto.
Los
atributos son las características externas y visibles de una clase, ejemplo el
color de los ojos y del pelo son ejemplos de atributos.
Los
lenguajes como C++ y Java tienen antecedentes del enfoque basado en procedimientos,
donde las llamadas a funciones son estáticas.
Reunión de todos los elementos:
Clases y Objetos
Tomemos por
ejemplo un objeto artículo. Un artículo posee una descripción. Un identificador,
un precio, una cantidad y un descuento opcional. Un artículo sabe cómo calcular
su precio con descuento.
Método
Constructor: Los constructores
son métodos que se utilizan para inicializar objetos en la etapa de instanciación.
La creación de objetos se denomina instalación porque durante esta se genera
una instancia de un objeto de la clase.
Los
accesores le dan acceso
a los datos internos de un objeto; sin embargo, no permiten saber si los datos están
en una variable, una combinación de variables o si son calculados. Los
accesores permiten modificar u obtener el valor y que se produzcan “efectos
secundarios” en el estado interno.
Los
moduladores permiten
modificar el estado de interno de un objeto, Al ejecutarse, sus programas
utilizan clases como Articulo Para crear o instanciar los objetos que conforman
la aplicación. Por ejemplo, si usted crea 2 objetos artículo a partir de la
misma clase Articulo, uno de los objetos podría tener un valor distinto al
otro.
Relaciones de Objetos
La manera en
que se relacionan los objetos es un componente muy importante de la POO. Los
objetos se pueden relacionar en dos formas principales.
Primero, Los
objetos pueden existir de manera independiente uno de otro. Dos objetos Artículo
pueden aparecer al mismo tiempo en un proceso. Si llega el momento en que estos
dos objetos independientes necesitan interactuar, podrán hacerlo intercambiando
mensajes.
2 o más
objetos se comunican entre sí por mensajes, los mensajes dan como resultados
que un objetó realice algo.
También
tenemos que recordar y tener siempre en cuenta que en la POO que todo es un
objeto y va orientado hacia ellos. La comunicación se da de la misma manera
entre un objeto y los objetos que contiene.
Beneficios Y Metas De
La Programación Orientada a Objetos
La programación orientada a objetos establece seis metas
primordiales para el desarrollo de software. La POO se esfuerza para producir
software que tenga las características siguientes:
Natural:
La POO produce software natural. Los programas naturales son más
comprensibles en lugar de programar en términos de arreglos o regiones de memoria,
usted puede hacerlo utilizando la terminología de su problema específico.
Confiable:
Si desea crear software útil, necesita que este sea igual de confiable
que otros productos, como los refrigeradores y los televisores, produce un
software bien diseñado cuidadosamente.
Reutilizable:
Usted puede reutilizar fácilmente las clases orientadas a objetos bien
diseñadas. Al igual que los módulos, puede reutilizar los objetos en diversos
programas.
Mantenible:
El ciclo de vida de un programa no termina cuando usted lo empaqueta y
lo entrega. Por el contrario, debe darle mantenimiento al condigo. De hecho,
entre 60 y 80 % del tiempo invertido en un programa se pasa en el mantenimiento,
el desarrollo tan solo se constituye el 20 % de la ecuación.
Extensible:
al igual qu8e usted debe darle mantenimiento a un programa, de la misma
manera sus usuarios recurrirán a usted para que agregue funcionalidad a sus
sistemas.
Oportuno:
Con frecuencia, el ciclo de vida de un proyecto moderno de software se
mide en semanas, La POO contribuye a lograr estos rápidos ciclos de desarrollo.
La POO reduce los tiempos perdidos del ciclo de desarrollo proporcionando
software confiable, reutilizable y fácilmente extensible.
Peligros más
importantes
Al
adelantarse por primera vez en POO, existen cuatro peligros que debes evitar:
Peligro
1: Pensar que la POO es tan sólo un lenguaje.
Con
frecuencia, la gente equipara los lenguajes orientados a objetos con la POO. El
error proviene de dar por sentado que se está programando con un estilo
orientado a objetos tan sólo porque se está utilizando lenguaje orientado a
objetos. Nada más alejado de la realidad.
Peligro
2: Miedo a la reutilización.
Debemos aprender a reutilizar el código. Aprender a
reutilizar sin padecer un sentimiento de culpa es con frecuencia una de las
lecciones más difíciles cuando se adentra por primera vez en la POO. Dos
problemas originan esta dificultad, Primero que alos programadores les gusta
ser creativos, Segundo, Muchos programadores padecen el sentimiento de “no fue
escrito aquí” lo cual no significa que no confían en el software que no
escribieron ellos mismos
¿Porque
Java?
Hay dos razones para utilizar java como herramienta de
enseñanza primero, Java lo aparta de los detalles relacionados con los sistemas
operativos y la computadora en lugar de preocuparse acerca de la asignación y designación
de memoria, simplemente se concentra en aprender los aspectos relacionados con
los objetos.
Cuestionario
1 ¿Que es la programación procedural?
La programación
procedural es aquella que se lleva a cabo por medio de diferentes procesos, o
en pocas palabras es aquella que se lleva a cabo por medio de un paso a paso.
2. ¿Qué beneficios
tiene la programación procedural
respecto de la programación que carece de estructura?
Que los
programas y procesos son más fáciles de entender , además de que estos
programas pueden ser leídos en un tipo de secuencia , por lo cual nos permite
llevar un tipo de orden , sin estar salteándonos de un lado a otro además lleva
algún tipo de orden, el cual nos permite entender que proceso conduce al otro.
3. ¿Qué es la programación
modular?
La
programación modular o por módulos. Con un lenguaje como Modula2, intenta superar
algunas definiciones de la programación procedural. La programación modular
divide un programa en una gran cantidad de componente o módulos, a diferencia
de la programación procedural que separa datos y procedimientos, los módulos combinan
ambos elementos.
4. ¿Qué beneficios
tiene la programación modular sobre la programación procedural?
Los
beneficios de la programación modular son que al dividir los programas en módulos
o subprocesos se hace más tangible y
manejable en cambio la programación estructurada tiene procesos ya
establecidos lo cual hace más complejo el proceso del programa.
5. Mencione una
desventaja de la programación procedural y de la modular
La programación modular tiene algunos
inconvenientes importantes, los módulos no son extensibles, lo que significa que no es
posible realizar cambios incrementales a
un módulo sin abrir el código y realizar cambios directamente.
Limitaciones
del programador: Es posible el programador desconozca algunas características
del paradigma y de hecho siga utilizando el paradigma estructurado.
6. Que es la programación
orientada a objetos?
Programación
orientada a objetos (POO, u OOP según sus
siglas en inglés) es un paradigma de programación que viene a innovar la forma de obtener resultados. Los objetos
manipulan los datos de entrada para la obtención de datos de salida
específicos, donde cada objeto ofrece una funcionalidad especial.
7. Cuáles son los 6
beneficios y metas de la programación orientada a objetos?
Natural
Confiable
Reutilizable
Mantenible
Extensible
Oportuno
8. Explique las metas
de la programación orientada a objetos?
Natural:
La POO produce software natural. Los programas naturales son más
comprensibles en lugar de programar en términos de arreglos o regiones de memoria,
usted puede hacerlo utilizando la terminología de su problema específico.
Confiable:
Si desea crear software útil, necesita que este sea igual de confiable
que otros productos, como los refrigeradores y los televisores, produce un
software bien diseñado cuidadosamente.
Reutilizable:
Usted puede reutilizar fácilmente las clases orientadas a objetos bien
diseñadas. Al igual que los módulos, puede reutilizar los objetos en diversos
programas.
Mantenible:
El ciclo de vida de un programa no termina cuando usted lo empaqueta y
lo entrega. Por el contrario, debe darle mantenimiento al condigo. De hecho,
entre 60 y 80 % del tiempo invertido en un programa se pasa en el mantenimiento,
el desarrollo tan solo se constituye el 20 % de la ecuación.
Extensible:
al igual qu8e usted debe darle mantenimiento a un programa, de la misma
manera sus usuarios recurrirán a usted para que agregue funcionalidad a sus
sistemas.
Oportuno:
Con frecuencia, el ciclo de vida de un proyecto moderno de software se
mide en semanas, La POO contribuye a lograr estos rápidos ciclos de desarrollo.
La POO reduce los tiempos perdidos del ciclo de desarrollo proporcionando
software confiable, reutilizable y fácilmente extensible.
9. Defina los
siguientes términos:
Clase:
Es una Plantilla de objetos esta agrupa los objetos de
acuerdo con sus atributos, características, comportamientos y cualidades
comunes.
Objeto:
Representación De las
cosas
10. Como se comunican
los objetos entre si?
Por medio de
mensajes
11. Que es un
constructor?
Los constructores
son métodos que se utilizan para inicializar objetos en la etapa de instanciación.
La creación de objetos se denomina instalación porque durante esta se genera
una instancia de un objeto de la clase.
12. Que es un accesor?
Le dan
acceso a los datos internos de un objeto; sin embargo, no permiten saber si los
datos están en una variable, una combinación de variables o si son calculados.
13. Que es mutador?
Son los famosos métodos get y set
14
¿Que es this?
Contenido null por defecto
de un objeto
Pilares de la programación orientada a
objetos
Los tres
pilares del desarrollo orientado a objetos son la encapsulación, la herencia y
el polimorfismo.
La encapsulación:
La encapsulación es la capacidad de ocultar los
datos abstraídos, aislarlos o protegerlos de quién no desees que
tenga acceso a ellos; otro objeto o función por ejemplo.
Cada objeto puede tener muchas cosas encapsuladas
en su interior, propiedades, funciones o incluso otros objetos.
Herencia:
La Herencia lo que
nos dice es que puede crearse un objeto a partir de otro objeto ya existente.
El nuevo objeto hereda todas las cualidades del objeto del que deriva y además
puede añadir nuevas funcionalidades o modificar las ya existentes.
Polimorfismo:
El polimorfismo es la capacidad para que
varias clases u objetos derivados de otros, reaccionen de manera diferente ante
los mismos métodos. El polimorfismo se puede aplicar tanto a objetos como a
funciones, por lo que podemos hablar de objetos polimórficos y de funciones
polimórficas.
Por ejemplo, cuando
apretamos el acelerador de un coche no va a responder igual el que posee un
motor diésel que el que tiene un motor de gasolina.
Comentarios
Publicar un comentario