Beruflich Dokumente
Kultur Dokumente
ES1511109383
DESARROLLO DE SOFTWARE
2DO SEMESTRE
UNIDAD 1
ACTIVIDAD 1
de programacin estructurada. Aunque a finales del siglo XX y, sobre todo en este siglo XXI, la
PROGRAMACIN ESTRUCTURADA
de la programacin estructurada.
ejecutan en el mismo orden en que han sido escritas. Sin embargo, este tipo de programacin
emplea la instruccin "goto". Una instruccin "goto" permite pasar el control a cualquier otra
parte del programa. Cuando se ejecuta una instruccin "goto" la secuencia de ejecucin del
programa contina a partir de la instruccin indicada por "goto". De esta forma, para
comprender como funciona un programa es necesario simular su ejecucin. Esto quiere decir
que en la mayora de los casos es muy difcil comprender la lgica de un programa de este tipo.
Algunos compiladores crean referencias cruzadas a las instrucciones apuntadas por los "goto",
posibilitando una navegacin rpida a travs del cdigo fuente. Sin embargo, es algo comn en
muchos lenguajes de programacin el empleo de una variable en asociacin con el destino del
implementar las vistas en diferentes idiomas, de forma que varias personas puedan visualizar la
que podamos llamar "programacin tradicional", por ejemplo la que se utilizaba (utiliza) en la
confeccin de programas para los primitivos PCs bajo MS-DOS, o en los actuales Win-32 bajo
una "ventana" DOS, es un concepto un tanto ambiguo, pero podemos intentar una definicin
caractersticas pueden coexistir juntas o faltar alguna, pero en general se dan simultneamente.
computadora) de manera clara. Para ello se utilizan nicamente tres estructuras: secuencia,
aplicaciones grficas, por lo que las tcnicas de programacin estructurada no son suficientes.
aplicaciones.
paradigma de programacin que usa objetos y sus interacciones, para disear aplicaciones y
orientacin a objetos.
(mtodo) e identidad:
El estado est compuesto de datos, ser uno o varios atributos a los que se habrn
asignado unos valores concretos (datos).
El comportamiento est definido por los mtodos o mensajes a los que sabe responder
dicho objeto, es decir, qu operaciones se pueden realizar con l.
La identidad es una propiedad de un objeto que lo diferencia del resto, dicho con otras
palabras, es su identificador (concepto anlogo al de identificador de una variable o una
constante).
Un objeto contiene toda la informacin que permite definirlo e identificarlo frente a otros
objetos pertenecientes a otras clases e incluso frente a objetos de una misma clase, al poder
tener valores bien diferenciados en sus atributos. A su vez, los objetos disponen de
mecanismos de interaccin llamados mtodos, que favorecen la comunicacin entre ellos. Esta
comunicacin favorece a su vez el cambio de estado en los propios objetos. Esta caracterstica
comportamiento.
por la propiedad de conjunto. Esta propiedad destaca que una clase requiere de mtodos para
poder tratar los atributos con los que cuenta. El programador debe pensar indistintamente en
ambos conceptos, sin separar ni darle mayor importancia a alguno de ellos. Hacerlo podra
producir el hbito errneo de crear clases contenedoras de informacin por un lado y clases
con mtodos que manejen a las primeras por el otro. De esta manera se estara realizando una
funciones, y en segundo lugar en las estructuras de datos que esos procedimientos manejan.
COMPARATIVO
PROGRAMACION PROGRAMACIN
ORIENTADA A OBJETOS ESTRUCTURADA
Se incrementa el rendimiento de
los programadores, comparado
con la forma anterior que utiliza
GOTO.
Cambio en la forma de El principal inconveniente de este
DESVENTAJAS pensar de la programacin paradigma de programacin es
tradicional a la orientada a que se obtiene un nico bloque
objetos. de programa, que cuando se
hace demasiado grande puede
La ejecucin de programas resultar problemtico su manejo;
orientados a objetos es ms esto se resuelve empleando la
lenta. programacin modular, definiendo
mdulos interdependientes
La necesidad de utilizar programados y compilados por
bibliotecas de clases obliga separado.
a su aprendizaje y
entrenamiento. Un mtodo un poco ms
sofisticado es la programacin
por capas, en la que los mdulos
tienen una estructura jerrquica
en la que se pueden definir
funciones dentro de funciones o
de procedimientos.
EJEMPLO
El hijo, como objeto responsable de un cometido, sabe lo que debe hacer hasta
conseguir una aspirina. Para ello entra en relacin con un nuevo objeto, la farmacutica, quien
responde al mensaje o evento de peticin del objeto hijo con la bsqueda de la aspirina. El
objeto farmacutica es ahora el responsable de la bsqueda de la aspirina. El objeto
farmacutica lanza un mensaje al objeto hijo solicitando el pago del importe, y el objeto hijo
responde a tal evento con la accin de pagar.
Como hemos podido ver, en esta situacin nos hemos encontrado con objetos que se
diferenciaban de los dems por un conjunto de caractersticas o propiedades, y por un conjunto
de acciones que realizaban en respuesta a unos eventos que se originaban en otros objetos o
en el entorno.
Tambin podemos darnos cuenta de que, aunque todos los objetos tienen propiedades
distintas, como el color del cabello, el grado de simpata o el peso, todos tienen un conjunto de
atributos en comn por ser ejemplos de una entidad superior llamada ser humano. A este
patrn de objetos (en nuestro caso ser humano) lo llamaremos clase.
Con este ejemplo espero que se entienda que los objetos son instancias o casos
concretos de las clases, que no son ms que plantillas que definen las variables y los mtodos
comunes a todos los objetos de un cierto tipo. La clase ser humano tendr, entre sus muchas
variables miembro o variables que la componen: color del cabello, color de los ojos, estatura,
peso, fecha de nacimiento, etc. A partir de una clase se podrn generar todos los objetos que
se deseen especificando valores particulares para cada una de las variables definida por la
clase. As, encontraremos el objeto farmacutica, cuyo color de cabello es rubio, color de ojos
azul, estatura 175 cm., peso 50 Kg., y as sucesivamente.
JAVA
Es Robusto
Java realiza chequeo de tipos durante la compilacin (al igual que C). En una
asignacin entre punteros el compilador verifica que los tipos sean compatibles.
Adems, Java realiza chequeo de tipos durante la ejecucin (cosa que C y C++ no
hacen). Cuando un programa usa un cast para accesar un objeto como si fuese de un
tipo especfico, se verifica durante la ejecucin que el objeto en cuestin sea
compatible con el cast que se le aplica. Si el objeto no es compatible, entonces se
levanta una excepcin que informa al programador la lnea exacta en donde est la
fuente del error.
Es Flexible
Lisp por su parte es un lenguaje flexible y robusto. Todas las variables son punteros a
objetos de cualquier tipo (un arreglo, un elemento de lista, etc.). El tipo del objeto se encuentra
almacenado en el mismo objeto. Durante la ejecucin, en cada operacin se chequea que el
tipo del objeto manipulado sea del tipo apropiado. Esto da flexibilidad a los programadores sin
sacrificar la robustez. Lamentablemente, esto hace que los programas en Lisp sean poco
legibles debido a que al estudiar su cdigo es difcil determinar cul es el tipo del objeto que
referencia una variable.
Adems este porcentaje de tiempo aumenta a medida que aumenta la complejidad del
software en desarrollo. Es relativamente sencillo liberar correctamente la memoria en un
programa de 1000 lneas. Sin embargo, es difcil hacerlo en un programa de 10000 lneas. Y se
puede postular que es imposible liberar correctamente la memoria en un programa de 100000
lneas.
Para entender mejor esta afirmacin, supongamos que hicimos un programa de 1000
lneas hace un par de meses y ahora necesitamos hacer algunas modificaciones. Ahora hemos
olvidado gran parte de los detalles de la lgica de este programa y ya no es sencillo determinar
si un puntero referencia un objeto que todava existe, o si ya fue liberado. Peor an, suponga
que el programa fue hecho por otra persona y evale cuan probable es cometer errores de
memoria al tratar de modificar ese programa.
Ahora volvamos al caso de un programa de 100000 lneas. Este tipo de programas los
desarrolla un grupo de programadores que pueden tomar aos en terminarlo. Cada
programador desarrolla un mdulo que eventualmente utiliza objetos de otros mdulos
desarrollados por otros programadores. Quin libera la memoria de estos objetos? Cmo se
ponen de acuerdo los programadores sobre cundo y quin libera un objeto compartido?
Como probar el programa completo ante las infinitas condiciones de borde que pueden existir
en un programa de 100000 lneas?
Es inevitable que la fase de prueba dejar pasar errores en el manejo de memoria que slo
sern detectados ms tarde por el usuario final. Probablemente se incorporn otros errores en
la fase de mantencin.
Se puede concluir:
Todo programa de 100000 lneas que libera explcitamente la memoria tiene errores
latentes.
Sin un recolector de basuras no hay verdadera modularidad.
Un recolector de basuras resuelve todos los problemas de manejo de memoria en
forma trivial.
CONCLUSIONES
Los programas son ms fciles de entender, ya que pueden ser ledos de forma
secuencial.
La estructura del programa es clara, puesto que las instrucciones estn ms ligadas o
relacionadas entre s.
Reduccin del esfuerzo en las pruebas, por lo que los errores se pueden detectar y
corregir ms fcil.
Principio de ocultacin: Cada objeto est aislado del exterior, es un mdulo natural, y cada
tipo de objeto expone una interfaz a otros objetos que especfica cmo pueden interactuar
con los objetos de la clase.
Herencia: Los objetos heredan las propiedades y el comportamiento de todas las clases a
las que pertenecen.
FUENTES
http://www.luis.izqui.org/resources/ProgOrientadaObjetos.pdf
http://www.bloodshed.net/