Está en la página 1de 24

1.

Cul es la diferencia entre programacin estructurada y programacin orientada a


objetos

Programacin Estructurada

La programacin estructurada naci como solucin a los problemas que presentaba la


programacin no estructurada, la cual se emple durante mucho tiempo antes de la invencin
de la programacin estructurada.

Un programa no estructurado es un programa procedimental: las instrucciones se 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 "goto", no permitiendo la creacin automtica de tablas de referencias cruzadas. Existen
problemas similares en algunos lenguajes de programacin estructurada, por ejemplo cmo
implementar las vistas en diferentes idiomas, de forma que varias personas puedan visualizar
la misma informacin, pero cada una en su idioma.

Esto se opone a la idea de utilizar algn tipo de abstraccin que permita comprender cmo
funciona realmente un programa, que es lo que hace la programacin estructurada. Lo 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
diciendo que se basa en algunas premisas y caractersticas bastante definidas. Estas
caractersticas pueden coexistir juntas o faltar alguna, pero en general se dan
simultneamente.

La programacin estructurada es una tcnica para escribir programas (programacin de


computadora) de manera clara. Para ello se utilizan nicamente tres estructuras: secuencia,
seleccin e iteracin; siendo innecesario el uso de la instruccin o instrucciones de
transferencia incondicional (GOTO, EXIT FUNCTION, EXIT SUB o mltiples RETURN).

Hoy en da las aplicaciones informticas son mucho ms ambiciosas que las necesidades de
programacin existentes en los aos 1960, principalmente debido a las aplicaciones grficas,
por lo que las tcnicas de programacin estructurada no son suficientes. Ello ha llevado al
desarrollo de nuevas tcnicas, tales como la programacin orientada a objetos y el desarrollo
de entornos de programacin que facilitan la programacin de grandes aplicaciones.
Programacin orientada a objetos

La programacin orientada a objetos o POO (OOP segn sus siglas en ingls) es un paradigma
de programacin que usa objetos y sus interacciones, para disear aplicaciones y programas
informticos. Est basado en varias tcnicas, incluyendo herencia, abstraccin, polimorfismo y
encapsulamiento. Su uso se populariz a principios de la dcada de los aos 1990. En la
actualidad, existe variedad de lenguajes de programacin que soportan la orientacin a
objetos.

Los objetos son entidades que tienen un determinado estado, comportamiento (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 lleva a tratarlos como unidades indivisibles, en las que no se separa el estado y
el comportamiento.

Los mtodos (comportamiento) y atributos (estado) estn estrechamente relacionados 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
programacin estructurada camuflada en un lenguaje de programacin orientado a objetos.

La POO difiere de la programacin estructurada tradicional, en la que los datos y los


procedimientos estn separados y sin relacin, ya que lo nico que se busca es el
procesamiento de unos datos de entrada para obtener otros de salida. La programacin
estructurada anima al programador a pensar sobre todo en trminos de procedimientos o
funciones, y en segundo lugar en las estructuras de datos que esos procedimientos manejan.
En la programacin estructurada slo se escriben funciones que procesan datos. Los
programadores que emplean POO, en cambio, primero definen objetos para luego enviarles
mensajes solicitndoles que realicen sus mtodos por s mismos.

2. Ventajas y desventajas de la programacin orientada a objetos

Las ventajas de POO

La primera ventaja del concepto de objetos es que todo el cdigo que tiene algo que
ver con las naves espaciales se encuentra en un solo lugar.
Otra ventaja es que los objetos pueden poseer atributos inherentes de la clase a la
que pertenecen, por ejemplo, naves espaciales y asteroides podran tener ambos una
posicin XY porque todos los objetos que pertenecen a la clase de los objetos en
movimiento tiene una posicin XY.
Escribir cdigos es ms fcil porque se pueden conceptualizar como algo que le sucede
a un objeto. Otra ventaja es que POO hace que los programas grandes sean ms
manejables.
Si todas las ventanas pertenecen a una jerarqua de clases de ventanas y todo el
cdigo que se refiere a una ventana particular est dentro de esa ventana, todas las
manipulaciones de ventana se pueden escribir como una sencilla transferencia de
mensajes.

Las desventajas de POO

No todos los programas pueden ser modelados con exactitud por el modelo de
objetos.
Si lo que deseas es leer algunos datos, hacerles algo simple y escribir de nuevo, no
tienes necesidad de definir clases y objetos.
Sin embargo, en algunos lenguajes de POO, puede que tengas que realizar este paso
extra.
Otra desventaja es que si se fuerza el lenguaje en el concepto de programacin
orientada a objetos, se pierden algunas de las caractersticas de lenguajes tiles, como
los "lenguajes funcionales".
Otra desventaja el que concepto que un programador tiene de lo que constituye un
objeto abstracto puede no coincidir con la visin de otro programador.
Los objetos a menudo requieren una extensa documentacin.
3. Defina Clase, instancia de clase, atributo, comportamiento, identidad, constructor e
identificadores.

Atributos
Los atributos son las caractersticas individuales que diferencian un objeto de otro y
determinan su apariencia, estado u otras cualidades. Los atributos se guardan en variables
denominadas de instancia, y cada objeto particular puede tener valores distintos para estas
variables.

Las variables de instancia tambin denominados miembros dato, son declaradas en la clase
pero sus valores son fijados y cambiados en el objeto.

Adems de las variables de instancia hay variables de clase, las cuales se aplican a la clase y a
todas sus instancias. Por ejemplo, el nmero de ruedas de un automvil es el mismo cuatro,
para todos los automviles.

Comportamiento

El comportamiento de los objetos de una clase se implementa mediante funciones miembro o


mtodos. Un mtodo es un conjunto de instrucciones que realizan una determinada tarea y
son similares a las funciones de los lenguajes estructurados.

Del mismo modo que hay variables de instancia y de clase, tambin hay mtodos de instancia
y de clase. En el primer caso, un objeto llama a un mtodo para realizar una determinada
tarea, en el segundo, el mtodo se llama desde la propia clase.

El proyecto

El proyecto consta de dos archivos, el primero contiene la clase Rectangulo que se guarda en
el archivo Rectangulo.java y no tiene el mtodo main. La ltima casilla del asistente de
creacin de clases New Java File debe de estar desactivada.

La otra clase, es la que describe la aplicacin RectanguloApp1 y se guarda en el archivo


RectanguloApp1.java, esta clase tiene que tener el mtodo main, por lo tanto, la ltima casilla
del asistente de creacin de clases New Java File debe de estar activada.

Un proyecto puede constar de varias clases (normalmente se sita cada clase en un archivo)
pero solamente una tiene el mtodo main y representa la aplicacin. Para distinguir la clase
que describe la aplicacin de las dems le hemos aadido el sufijo App.

La clase

Para crear una clase se utiliza la palabra reservada class y a continuacin el nombre de la clase.
La definicin de la clase se pone entre las llaves de apertura y cierre. El nombre de la clase
empieza por letra mayscula.

class Rectangulo{

//miembros dato

//funciones miembro
}

Los miembros dato

Los valores de los atributos se guardan en los miembros dato o variables de instancia. Los nombres
de dichas variables comienzan por letra minscula.

Vamos a crear una clase denominada Rectangulo, que describa las caractersticas comunes a estas
figuras planas que son las siguientes:

El origen del rectngulo: el origen o posicin de la esquina superior izquierda del rectngulo en el
plano determinado por dos nmeros enteros x e y.

Las dimensiones del rectngulo: ancho y alto, otros dos nmeros enteros.

rectangulo.gif (956 bytes)

class Rectangulo{

int x;

int y;

int ancho;

int alto;

//faltan las funciones miembro

Las funciones miembro

En el lenguaje C++ las funciones miembro se declaran, se definen y se llaman. En el lenguaje


Java las funciones miembro o mtodos solamente se definen y se llaman.

El nombre de las funciones miembro o mtodos comieza por letra minscula y deben sugerir
acciones (mover, calcular, etc.). La definicin de una funcin tiene el siguiente formato:

tipo nombreFuncion(tipo parm1, tipo parm2, tipo parm3){

//...sentencias

Entre las llaves de apertura y cierre se coloca la definicin de la funcin. tipo indica el tipo de
dato que puede ser predefinido int, double, etc, o definido por el usuario, una clase
cualquiera.
Para llamar a un funcin miembro o mtodo se escribe

retorno=objeto.nombreFuncion(arg1, arg2, arg3);

Cuando se llama a la funcin, los argumentos arg1, arg2, arg3 se copian en los parmetros
parm1, parm2, parm3 y se ejecutan las sentencias dentro de la funcin. La funcin finaliza
cuando se llega al final de su bloque de definicin o cuando encuentra una sentencia return.

Cuando se llama a la funcin, el valor devuelto mediante la sentencia return se asigna a la


variable retorno.

Cuando una funcin no devuelve nada se dice de tipo void. Para llamar a la funcin, se escribe

objeto.nombreFuncion(arg1, arg2, arg3);

Estudiaremos ms adelante con ms detalle como se definen las funciones.

Una funcin suele finalizar cuando llega al final del bloque de su definicin

void funcion(....){

//sentencias...

Una funcin puede finalizar antes del llegar al final de su definicin

void funcion(....){

//sentencias...

if(condicion) return;

//sentencias..

Una funcin puede devolver un valor (un tipo de dato primitivo o un objeto).

double funcion(....){

double suma=0.0;

//sentencias...

return suma;

}
Cualquier variable declarada dentro de la funcin tiene una vida temporal, existiendo en
memoria, mientras la funcin est activa. Se trata de variables locales a la funcin. Por
ejemplo:

void nombreFuncion(int parm){

//...

int i=5;

//...

La variable parm, existe desde el comienzo hasta el final de la funcin. La variable local i, existe
desde el punto de su declaracin hasta el final del bloque de la funcin.

Se ha de tener en cuenta que las funciones miembro tienen acceso a los miembros dato, por
tanto, es importante en el diseo de una clase decidir qu variables son miembros dato, qu
variables son locales a las funciones miembro, y qu valores les pasamos a dichas funciones.
Los ejemplos nos ayudarn a entender esta distincin.

Hemos definido los atributos o miembros dato de la clase Rectangulo, ahora le vamos aadir
un comportamiento: los objetos de la clase Rectangulo o rectngulos sabrn calcular su rea,
tendrn capacidad para trasladarse a otro punto del plano, sabrn si contienen en su interior
un punto determinado del plano.

La funcin que calcula el rea realizar la siguiente tarea, calcular el producto del ancho por
el alto del rectngulo y devolver el resultado. La funcin devuelve un entero es por tanto, de
tipo int. No es necasario pasarle datos ya que tiene acceso a los miembros dato ancho y alto
que guardan la anchura y la altura de un rectngulo concreto.

class Rectangulo{

int x;

int y;

int ancho;

int alto;

int calcularArea(){

return (ancho*alto);

}
}

A la funcin que desplaza el rectngulo horizontalmente en dx, y verticalmente en dy, le


pasamos dichos desplazamientos, y a partir de estos datos actualizar los valores que guardan
sus miembros dato x e y. La funcin no devuelve nada es de tipo void.

class Rectangulo{

int x;

int y;

int ancho;

int alto;

void desplazar(int dx, int dy){

x+=dx;

y+=dy;

La funcin que determina si un punto est o no en el interior del rectngulo, devolver true si
el punto se encuentra en el interior del rectngulo y devolver false si no se encuentra, es
decir, ser una funcin del tipo boolean. La funcin necesitar conocer las coordenadas de
dicho punto. Para que un punto de coordenadas x1 e y1 est dentro de un rectngulo cuyo
origen es x e y, y cuyas dimensiones son ancho y alto, se deber cumplir a la vez cuatro
condiciones

x1>x y a la vez x1<x+ancho

Tambin se debe cumplir

y1>y y a la vez y1<y+alto

Como se tienen que cumplir las cuatro condiciones a la vez, se unen mediante el operador lgico
AND simbolizado por &&.

class Rectangulo{

int x;

int y;
int ancho;

int alto;

boolean estaDentro(int x1, int y1){

if((x1>x)&&(x1<x+ancho)&&(y1>y)&&(y1<y+ancho)){

return true;

return false;

En el lenguaje Java, si la primera condicin es falsa no se evalan las restantes expresiones ya


que el resultado es false. Ahora bien, si la primera es verdadera true, se pasa a evaluar la
segunda, si sta el falsa el resultado es false, y as sucesivamente.

Los constructores

Un objeto de una clase se crea llamando a una funcin especial denominada constructor de la
clase. El constructor se llama de forma automtica cuando se crea un objeto, para situarlo en
memoria e inicializar los miembros dato declarados en la clase. El constructor tiene el mismo
nombre que la clase. Lo especfico del constructor es que no tiene tipo de retorno.

class Rectangulo{

int x;

int y;

int ancho;

int alto;

Rectangulo(int x1, int y1, int w, int h){

x=x1;

y=y1;

ancho=w;

alto=h;
}

El constructor recibe cuatro nmeros que guardan los parmetros x1, y1, w y h, y con ellos
inicializa los miembros dato x, y, ancho y alto.

Una clase puede tener ms de un constructor. Por ejemplo, el siguiente constructor crea un
rectngulo cuyo origen est en el punto (0, 0).

class Rectangulo{

int x;

int y;

int ancho;

int alto;

Rectangulo(int w, int h){

x=0;

y=0;

ancho=w;

alto=h;

Este constructor crea un rectngulo de dimensiones nulas situado en el punto (0, 0),

class Rectangulo{

int x;

int y;

int ancho;

int alto;

Rectangulo(){

x=0;
y=0;

ancho=0;

alto=0;

Con estas porciones de cdigo definimos la clase, y la guardamos en un archivo que tenga el
mismo nombre que la clase Rectangulo y con extensin .java.

public class Rectangulo {

int x;

int y;

int ancho;

int alto;

public Rectangulo() {

x=0;

y=0;

ancho=0;

alto=0;

public Rectangulo(int x1, int y1, int w, int h) {

x=x1;

y=y1;

ancho=w;

alto=h;

public Rectangulo(int w, int h) {

x=0;
y=0;

ancho=w;

alto=h;

int calcularArea(){

return (ancho*alto);

void desplazar(int dx, int dy){

x+=dx;

y+=dy;

boolean estaDentro(int x1, int y1){

if((x1>x)&&(x1<x+ancho)&&(y1>y)&&(y1<y+ancho)){

return true;

return false;

Los objetos

Para crear un objeto de una clase se usa la palabra reservada new.

Por ejemplo,

Rectangulo rect1=new Rectangulo(10, 20, 40, 80);

new reserva espacio en memoria para los miembros dato y devuelve una referencia que se
guarda en la variable rect1 del tipo Rectangulo que denominamos ahora objeto. Dicha
sentencia, crea un objeto denominado rect1 de la clase Rectangulo llamando al segundo
constructor en el listado. El rectngulo estar situado en el punto de coordenadas x=10, y=20;
tendr una anchura de ancho=40 y una altura de alto=80.
Rectangulo rect2=new Rectangulo(40, 80);

Crea un objeto denominado rect2 de la clase Rectangulo llamando al tercer constructor, dicho
rectngulo estar situado en el punto de coordenadas x=0, y=0; y tendr una anchura de
ancho=40 y una altura de alto=80.

Rectangulo rect3=new Rectangulo();

Crea un objeto denominado rect3 de la clase Rectangulo llamando al primer constructor, dicho
rectngulo estar situado en el punto de coordenadas x=0, y=0; y tendr una anchura de
ancho=0 y una altura de alto=0.

Acceso a los miembros

Desde un objeto se puede acceder a los miembros mediante la siguiente sintaxis

objeto.miembro;

Por ejemplo, podemos acceder al miembro dato ancho, para cambiar la anchura de un objeto
rectngulo.

rect1.ancho=100;

El rectngulo rect1 que tena inicialmente una anchura de 40, mediante esta sentencia se la
cambiamos a 100.

Desde un objeto llamamos a las funciones miembro para realizar una determinada tarea. Por
ejemplo, desde el rectngulo rect1 llamamos a la funcin calcularArea para calcular el rea de
dicho rectngulo.

rect1.calcularArea();

La funcin miembro area devuelve un entero, que guardaremos en una variable entera
medidaArea, para luego usar este dato.

int medidaArea=rect1.calcularArea();

System.out.println("El rea del rectngulo es "+medidaArea);

Para desplazar el rectngulo rect2, 10 unidades hacia la derecha y 20 hacia abajo, escribiremos
rect2.desplazar(10, 20);

Podemos verificar mediante el siguiente cdigo si el punto (20, 30) est en el interior del
rectngulo rect1.

if(rect1.estaDentro(20,30)){

System.out.println("El punto est dentro del rectngulo");

}else{

System.out.println("El punto est fuera del rectngulo");

rect1.dentro() devuelve true si el punto (20, 30) que se le pasa a dicha funcin miembro est
en el interior del rectngulo rect1, ejecutndose la primera sentencia, en caso contrario se
ejecuta la segunda.

Como veremos ms adelante no siempre es posible acceder a los miembros, si establecemos


controles de acceso a los mismos.

public class RectanguloApp1 {

public static void main(String[] args) {

Rectangulo rect1=new Rectangulo(10, 20, 40, 80);

Rectangulo rect2=new Rectangulo(40, 80);

Rectangulo rect3=new Rectangulo();

int medidaArea=rect1.calcularArea();

System.out.println("El rea del rectngulo es "+medidaArea);

rect2.desplazar(10, 20);

if(rect1.estaDentro(20,30)){

System.out.println("El punto est dentro del rectngulo");

}else{

System.out.println("El punto est fuera del rectngulo");

}
}

La vida de un objeto

En el lenguaje C++, los objetos que se crean con new se han de eliminar con delete. new
reserva espacio en memoria para el objeto y delete libera dicha memoria. En el lenguaje Java
no es necesario liberar la memoria reservada, el recolector de basura (garbage collector) se
encarga de hacerlo por nosotros, liberando al programador de una de las tareas que ms
quebraderos de cabeza le producen, olvidarse de liberar la memoria reservada.

Veamos un ejemplo

public class UnaClase {

public static void main(String[] args) {

Image granImagen=creaImagen();

mostrar(graImagen);

while(condicion){

calcular();

El objeto granImagen, continua en memoria hasta que se alcanza el final de la funcin main,
aunque solamente es necesario hasta el bucle while. En C o en C++ eliminariamos dicho objeto
liberando la memoria que ocupa mediante delete. El equivalente en Java es el de asignar al
objeto granImagen el valor null.

public class UnaClase {

public static void main(String[] args) {

Image granImagen=creaImagen();

mostrar(graImagen);

granImagen=null;

while(condicion){

calcular();
}

A partir de la sentencia marcada en letra negrita el recolector de basura se encargar de


liberar la memoria ocupada por dicha imagen. As pues, se asignar el valor null a las
referencias a objetos temporales que ocupen mucha memoria tan pronto como no sean
necesarios.

Creamos dos objetos de la clase rectngulo, del mismo modo que en el apartado anterior

Rectangulo rect1=new Rectangulo(10, 20, 40, 80);

Rectangulo rect3=new Rectangulo();

Si escribimos

rect3=rect1;

En rect3 se guarda la referencia al objeto rect1. La referencia al objeto rect3 se pierde. El


recolector se encarga de liberar el espacio en memoria ocupado por el objeto rect3.

La destruccin de un objeto es una tarea (thread) de baja prioridad que lleva a cabo la
Mquina Virtual Java (JVM). Por tanto, nunca podemos saber cuando se va a destruir un
objeto.

Puede haber situaciones en las que es necesario realizar ciertas operaciones que no puede
realizar el recolector de basura (garbage collector) cuando se destruye un objeto. Por ejemplo,
se han abierto varios archivos durante la vida de un objeto, y se desea que los archivos estn
cerrados cuando dicho objeto desaparece. Se puede definir en la clase un mtodo
denominado finalize que realice esta tarea. Este mtodo es llamado por el recolector de
basura inmeditamente antes de que el objeto sea destrudo.

Identificadores

Cmo se escriben los nombres de la variables, de las clases, de las funciones, etc., es un asunto
muy importante de cara a la comprensin y el mantenimiento de cdigo. En la introduccin a
los fundamentos del lenguaje Java hemos tratado ya de los identificadores.

El cdigo debe de ser tanto ms fcil de leer y de entender como sea posible. Alguien que lea
el cdigo, incluso despus de cierto tiempo, debe ser capaz de entender lo que hace a primera
vista, aunque los detalles internos, es decir, cmo lo hace, precise un estudio detallado.

Vemos primero un ejemplo que muestra un cdigo poco legible y por tanto, muy difcil de
mantener
public class Cuen{

private int ba;

Cuen(int ba){

this.ba=ba;

public void dep(int i){

ba+=i;

public boolean ret(int i){

if(ba>=i){

ba-=i;

return true;

return false;

public int get(){

return ba;

Las abreviaciones empleadas solamente tienen significado para el programador en el


momento de escribir el cdigo, ya que puede olvidarse de su significado con el tiempo. Otros
programadores del grupo tienen que descifrar el significado del nombre de cada variable o de
cada funcin. El tiempo extra que se gasta en escribir con claridad el nombre de los diversos
elementos que entran en el programa, se ahorra ms adelante durante su desarrollo,
depuracin, y mejora, es decir, durante todo el ciclo de vida del programa.

public class CuentaBancaria{


private int balance;

CuentaBancaria(int balance){

this.balance=balance;

public void depositar(int cantidad){

balance+=cantidad;

public boolean retirar(int cantidad){

if(balance>=cantidad){

balance-=cantidad;

return true;

return false;

public int obtenerBalance(){

return balance;

Este es una programa sencillo de una cuenta bancaria. El tipo de dato puede ser entero (int o
long), si la unidad monetaria tiene poco valor como la peseta, o un nmero decimal (double) si
la unidad monetaria es de gran valor como el Euro y el Dlar.

El cdigo de las funciones miembro es muy sencillo y su significado se hace evidente al leer el
programa. La funcin retirar es de tipo boolean, ya que no (false) estamos autorizados a
retirar una cantidad mayor que la existente en ese momento en el banco. Sin embargo, si
(true) estamos autorizados a retirar una cantidad menor que la que tenemos en la cuenta.

4. Informe los tipos de clase


5. Describa el concepto de Modularizacin
La modularizacin consiste en dividir un programa en mdulos que se puedan compilar por
separado, pero que tienen conexiones con otros mdulos. Al igual que la encapsulacin, los
lenguajes soportan la Modularidad de diversas formas.

La Modularidad es la propiedad de un sistema que permite su descomposicin en un conjunto


de mdulos cohesivos y dbilmente acoplados. Por supuesto no todos los mdulos son
iguales: tomar un programa monoltico y separarlo de forma aleatoria en archivos no es
ptimo. Se debe tener en cuenta los conceptos asociados de dependencia, acoplamiento,
cohesin, interfaz, encapsulacin y abstraccin. Una vez identificado lo que es un buen
mdulo, se puede contemplar la reutilizacin de un buen mdulo como componente.

El Mdulo A depende del Mdulo B si cualquier cambio en el Mdulo B implica que el Mdulo
A tambin tenga que ser modificado. A veces se dice que el Mdulo A es un cliente del Mdulo
B, o que el Mdulo B acta como servidor del Mdulo A. En general, es normal que un mismo
mdulo sea tanto cliente como servidor. Esto significa, que depende de algunos mdulos,
mientras que otros mdulos dependen de l. Incluso es posible que un par de mdulos se
tengan uno al otro de cliente; sin embargo, ste es un ejemplo de dependencia circular, que
debe evitarse cuando sea posible debido a que impide la reutilizacin.

La dependencia a veces se conoce como acoplamiento. Un sistema con muchas dependencias


tiene fuerte acoplamiento. Los buenos sistemas tienen dbil acoplamiento, porque en ese
caso los cambios en una parte del sistema son menos probables de propagarse a travs del
sistema.

Los mdulos correctos a menudo tienen la propiedad de que sus interfaces proporcionan una
abstraccin de algn elemento conocido de manera intuitiva que puede, no obstante, ser
difcil de implementar. Este tipo de mdulos se dice que tienen una fuerte cohesin. El mdulo
realiza un conjunto coherente de cosas, pero dentro de lo posible el desarrollador del cliente
est protegido de la informacin irrelevante relativa a cmo el mdulo hace lo que hac

6. Describa el concepto de Herencia

La herencia es especfica de la programacin orientada a objetos, donde una clase nueva se


crea a partir de una clase existente. La herencia (a la que habitualmente se denomina
subclase) proviene del hecho de que la subclase (la nueva clase creada) contiene las atributos
y mtodos de la clase primaria. La principal ventaja de la herencia es la capacidad para definir
atributos y mtodos nuevos para la subclase, que luego se aplican a los atributos y mtodos
heredados.

Esta particularidad permite crear una estructura jerrquica de clases cada vez ms
especializada. La gran ventaja es que uno ya no debe comenzar desde cero cuando desea
especializar una clase existente. Como resultado, se pueden adquirir bibliotecas de clases que
ofrecen una base que puede especializarse a voluntad (la compaa que vende estas clases
tiende a proteger las datos miembro usando la encapsulacin).
7. Describa el concepto de Polimorfismo

La palabra polimorfismo proviene del griego y significa que posee varias formas diferentes.
Este es uno de los conceptos esenciales de una programacin orientada a objetos. As como la
herencia est relacionada con las clases y su jerarqua, el polimorfismo se relaciona con los
mtodos.

En general, hay tres tipos de polimorfismo:

Polimorfismo de sobrecarga

Polimorfismo paramtrico (tambin llamado polimorfismo de plantillas)

Polimorfismo de inclusin (tambin llamado redefinicin o subtipado)

Polimorfismo de sobrecarga

El polimorfismo de sobrecarga ocurre cuando las funciones del mismo nombre existen, con
funcionalidad similar, en clases que son completamente independientes una de otra (stas no
tienen que ser clases secundarias de la clase objeto). Por ejemplo, la clase complex, la clase
image y la clase link pueden todas tener la funcin "display". Esto significa que no necesitamos
preocuparnos sobre el tipo de objeto con el que estamos trabajando si todo lo que deseamos
es verlo en la pantalla.

Por lo tanto, el polimorfismo de sobrecarga nos permite definir operadores cuyos


comportamientos varan de acuerdo a los parmetros que se les aplican. As es posible, por
ejemplo, agregar el operador + y hacer que se comporte de manera distinta cuando est
haciendo referencia a una operacin entre dos nmeros enteros (suma) o bien cuando se
encuentra entre dos cadenas de caracteres (concatenacin).

Polimorfismo paramtrico

El polimorfismo paramtrico es la capacidad para definir varias funciones utilizando el mismo


nombre, pero usando parmetros diferentes (nombre y/o tipo). El polimorfismo paramtrico
selecciona automticamente el mtodo correcto a aplicar en funcin del tipo de datos
pasados en el parmetro.
Por lo tanto, podemos por ejemplo, definir varios mtodos homnimos de addition()
efectuando una suma de valores.

El mtodo int addition(int,int) devolvera la suma de dos nmeros enteros.

float addition(float, float) devolvera la suma de dos flotantes.

char addition(char, char) dara por resultado la suma de dos caracteres definidos por el autor.

etc.

Una signature es el nombre y tipo (esttico) que se da a los argumentos de una funcin. Por
esto, una firma de mtodo determina qu elemento se va a llamar.

Polimorfismo de subtipado

La habilidad para redefinir un mtodo en clases que se hereda de una clase base se llama
especializacin. Por lo tanto, se puede llamar un mtodo de objeto sin tener que conocer su
tipo intrnseco: esto es polimorfismo de subtipado. Permite no tomar en cuenta detalles de las
clases especializadas de una familia de objetos, enmascarndolos con una interfaz comn
(siendo esta la clase bsica).

Imagine un juego de ajedrez con los objetos rey, reina, alfil, caballo, torre y pen, cada uno
heredando el objeto pieza.

El mtodo movimiento podra, usando polimorfismo de subtipado, hacer el movimiento


correspondiente de acuerdo a la clase objeto que se llama. Esto permite al programa realizar
el movimiento.de_pieza sin tener que verse conectado con cada tipo de pieza en particular.

8. Describa el concepto de Encapsulamiento

La encapsulacin es un mecanismo que consiste en organizar datos y mtodos de una


estructura, conciliando el modo en que el objeto se implementa, es decir, evitando el acceso a
datos por cualquier otro medio distinto a los especificados. Por lo tanto, la encapsulacin
garantiza la integridad de los datos que contiene un objeto.

9. Informe cmo convertir un String a entero en Java


10. Defina el concepto de mtodo y realice un ejemplo constructor
Constructor es una subrutina cuya misin es inicializar un objeto de una clase. En el
constructor se asignan los valores iniciales del nuevo objeto.

Se utiliza para crear tablas de clases virtuales y poder as desarrollar el polimorfismo,


una de las herramientas de la programacin orientada a objetos. Al utilizar un
constructor, el compilador determina cual de los objetos va a responder al mensaje
(virtual) que hemos creado. Tiene un tipo de acceso, un nombre y un parntesis.
Ejemplo:
Un constructor por defecto para la clase SSuma quedara as: public SSuma() {}
Como se observa el constructor no posee ningn parmetro, ya que como no ha sido
definido propiamente por el programador, Java lo hace por default.
Si se define un constructor con parmetros (definido explcitamente) el constructor
por default se reemplaza por este.
A continuacin se crear un constructor explcito para una clase simple, utilizando una
clase Persona con una serie de atributos.
Primero se declara la clase con sus atributos:
class Persona
{
//ATRIBUTOS
private String nombre;
private int edad;
private String empleo;
private double salario;

//CONSTRUCTORES
public Persona() {} //CONSTRUCTOR SIN PARMETROS
public Persona(String nombre, int edad, String empleo, double salario)
{
asignarNombre(nombre);
asignarEdad(edad);
asignarEmpleo(empleo);
asignarSalario(salario);
}
//...
}
El constructor sin parmetros es reemplazado por el constructor explcito. En este
ejemplo se puede observar que los constructores preferentemente se declaran
pblicos para que puedan ser invocados desde cualquier parte.

Una lnea como esta invocar al constructor sin parmetros:

Persona pers01 = new Persona();// invoca al constructor Persona


El operador new crea un nuevo objeto, en este caso de la clase Persona, y a
continuacin se invoca al constructor de la clase para realizar las operaciones de
iniciacin que estn programadas.

A continuacin se invocar al constructor con parmetros, que se introducirn en el


orden especificado en el constructor.

Persona pers02 = new Persona("Pepe Prez", 30, "Programador", 25000);


11. Qu funcin tiene el paquete Swing en Java y describa sus principales caractersticas

Swing es una biblioteca grfica para Java. Incluye widgets para interfaz grfica de usuario tales
como cajas de texto, botones, desplegables y tablas.

Principales caractersticas:

Independencia de plataforma.
Extensibilidad: es una arquitectura altamente particionada: los usuarios pueden
proveer sus propias implementaciones modificadas para sobrescribir las
implementaciones por defecto. Se puede extender clases existentes proveyendo
alternativas de implementacin para elementos esenciales.
Personalizable: dado el modelo de representacin programtico del framework de
swing, el control permite representar diferentes estilos de apariencia "look and feel"
(desde apariencia MacOS hasta apariencia Windows XP pasando por apariencia GTK+,
IBM UNIX o HP UX entre otros). Adems, los usuarios pueden proveer su propia
implementacin de apariencia, que permitir cambios uniformes en la apariencia
existente en las aplicaciones Swing sin efectuar ningn cambio al cdigo de aplicacin.
12. Consultar la estructura y sintaxis de cmo funcionan las excepciones en Java.

Referencias
http://ingieneriadelsoftware2.blogspot.com.co/2012/11/programa
cion-orientada-objeto-y.html

http://www.ehowenespanol.com/ventajas-desventajas-
programacion-orientada-objetos-info_184901/

http://www.sc.ehu.es/sbweb/fisica/cursoJava/fundamentos/clases
1/clases.htm
http://biostec2007.blogspot.com.co/2007/09/modularidad-
objetos.html

http://es.ccm.net/contents/411-poo-herencia

http://es.ccm.net/contents/413-oop-
polimorfismohttp://es.ccm.net/contents/410-poo-encapsulacion-
de-datos
https://es.wikipedia.org/wiki/Constructor_(inform%C3%A1tica)

También podría gustarte