Tema 8 - Desarrollo de Aplicaciones en Java

download Tema 8 - Desarrollo de Aplicaciones en Java

of 18

Transcript of Tema 8 - Desarrollo de Aplicaciones en Java

  • 8/17/2019 Tema 8 - Desarrollo de Aplicaciones en Java

    1/18

    ITSON Manuel Domitsu Kono

    Tema 8

    Desarrollo de Aplicaciones enJava 

    En el análisis y Diseño Orientado a objetos, la codificación de una aplicación parte delos diagramas de clase – diseño y los diagramas de secuencia. Los diagramas de clasedescriben los componentes individuales, objetos, a partir de los cuales se construirá laaplicación y su relación entre ellos. Sin embargo, los diagramas de clase no establecencomo los diferentes componentes interactúan entre sí para lograr las funcionalidadesde la aplicación, quienes realizan esta tarea son los diagramas de secuencia.

    Un diagrama de secuencia establece qué tareas y en qué orden deben realizar loscomponentes de una aplicación para realizar un caso de uso. Cada componente saberealizar un conjunto de tareas. Esas tareas están descritas por el código de losmétodos de su respectiva clase. Para que un componente realice una tarea, sucorrespondiente método debe ser invocado. Esa invocación puede ser hecha por otrocomponente o por sí mismo. Por lo tanto, un diagrama de secuencia describe el ordenen que ocurren las invocaciones de los métodos de los diferentes objetos queparticipan en la realización de un caso de uso.

    Un diagrama de secuencia puede codificarse mediante un método, cada una de lassentencias de dicho método representa una invocación del diagrama de secuencia.

    Esos métodos que implementan las realizaciones de los casos de uso se agrupan enuna o más clases llamadas clases de control.

    Ejemplo sobre una Aplicación con una Interfaz deUsuario Gráfica

    Por ejemplo, suponga que la aplicación Amante Música, debe tener las funcionalidadesdescritas en el diagrama de casos de uso de la figura 8.1.

  • 8/17/2019 Tema 8 - Desarrollo de Aplicaciones en Java

    2/18

    236 Desarrollo de Aplicaciones en Java

    ITSON Manuel Domitsu Kono

    Figura 8.1 Diagramas de Caso de Uso de la aplicación Amante Música

    El caso de uso Agregar Canción nos permite agregar una canción al catálogo decanciones. El diagrama de secuencia de la figura 8.2 realiza dicho caso de uso.

  • 8/17/2019 Tema 8 - Desarrollo de Aplicaciones en Java

    3/18

    Tema 8 Desarrollo de Aplicaciones en Java 237

    ITSON Manuel Domitsu Kono

    Figura 8.2 Diagrama de secuencia – Agregar canción

    El caso de uso empieza cuando el usuario selecciona del menú de la ventana de laaplicación la opción Agregar Canción, haciendo que la opción del menú invoque al

    método oyente opci onMenuAgregarCanci onAct i onPer f ormed( ) , cuyo código semuestra en el siguiente fragmento de código:

    FrmAmanteMusica.java (Fragmento)/ ** Fr mAmant eMusi ca. j ava*/

    package i nt er f azUsuar i o;

    i mpor t cont r ol . Cont r ol ;

    i mpor t cont r ol . Tabl a;i mport j ava. awt . Di mensi on;i mpor t j ava. awt . Tool ki t ;

    / * ** Esta es cl ase es l a cl ase pr i nci pal de l a apl i caci ón Amant e musi ca.

     Tambi én* es l a vent ana pr i nci pal de l a apl i caci on** @aut hor Manuel Domi t su

  • 8/17/2019 Tema 8 - Desarrollo de Aplicaciones en Java

    4/18

    238 Desarrollo de Aplicaciones en Java

    ITSON Manuel Domitsu Kono

    */publ i c cl ass FrmAmant eMusi ca extends j avax. swi ng. J Fr ame {

    . . .

    / * ** Met odo oyent e que agr ega una canci on al cat al ogo de canci ones** @par am evt Event o al que escucha*/

    pr i vat e voi dopci onMenuAgr egarCanci onAct i onPer f ormed( j ava. awt . event . Act i onEvent evt ) {/ / Agr ega l a nueva canci óni f ( cont r ol . agr egaCanci on( t hi s) ) {

    / / Obt i ene l a l i st a de canci ones Tabl a t abl aCanci ones = cont r ol . getTabl aCanci ones( t hi s) ;

    / / Despl i ega l a l i st a de canci onesdespl i egaTabl a( t abl aCanci ones) ;

    }

    } . . .

    pr i vat e j avax. swi ng. J Tabl e j t abl a;

    Cont r ol cont r ol = new Cont r ol ( ) ;}

    El método oyente opci onMenuAgregarCanci onAct i onPer f ormed( )  primeroinvoca al método agr egaCanci ón( )  de la clase Control que captura la clave de lacanción a agregar, verifica que la canción no existe en el catálogo de canciones,captura el resto de los datos de la canción y guarda la canción en el catálogo decanciones. A continuación el método oyente invoca al método

    get Tabl aCanci ones( )  que obtiene la tabla de canciones y por último el métodooyente invoca al método despl i egaTabl a( )  para que despliegue la lista decanciones.

    La clase Control se muestra en el diagrama de clases de la figura 8.3.

    En el fragmento de código siguiente se muestra el método agr egaCanci ón( )  encargado de agregar la canción al catálogo de canciones y el métodoget Tabl aCanci ones( )  que obtiene la lista de canciones del catálogo de canciones.

  • 8/17/2019 Tema 8 - Desarrollo de Aplicaciones en Java

    5/18

    Tema 8 Desarrollo de Aplicaciones en Java 239

    ITSON Manuel Domitsu Kono

    Figura 8.3 Diagrama de clases del paquete contro l

    Contro l.java (Fragmento)

    / ** Cont r ol . j ava*/

    package cont r ol ;

    i mport i nt er f aces. I Per si stenci a;i mpor t i nt er f azUsuar i o. *;i mpor t j ava. ut i l . Li s t ;i mpor t j avax. swi ng. Def aul t ComboBoxModel ;i mpor t j avax. swi ng. J Frame;i mpor t j avax. swi ng. J Opt i onPane;i mport obj et osNegoci o. Canci on;i mport obj etosNegoci o. Genero;i mpor t obj et osNegoci o. Pel i cul a;i mpor t obj et osSer vi ci o. Per i odo;i mpor t per si st enci a. Per si st enci aBD;

    / * ** Est a cl ase i mpl ement a l os casos de uso de l a apl i caci on Amant e Musi ca.* @aut hor mdomi t su*/

    publ i c cl ass Cont r ol {/ / Acceso a l os obj et os del negoci o

  • 8/17/2019 Tema 8 - Desarrollo de Aplicaciones en Java

    6/18

    240 Desarrollo de Aplicaciones en Java

    ITSON Manuel Domitsu Kono

    I Persi stenci a persi stenci a;Conver si ones conver si ones;

    / * ** Const r uct or .*/

    publ i c Cont r ol ( ) {/ / Cr ea un obj et o del t i po per si st enci aper si st enci a = new Per si st enci aBD( ) ;

    conver si ones = new Conver si ones( ) ;}

    / * ** Agrega una canci on al catal ogo de canci ones* @par am f r ame Vent ana sobr e l a que se despl i ega el cuadro de di al ogo para* capt ur ar l os dat os de l a canci on* @r et ur n Regr esa t r ue si se pudo agr egar l a canci on, f al se en caso* cont r ar i o*/

    publ i c bool ean agr egaCanci on( J Frame f r ame) {Canci on canci on, bCanci on;St r i ngBuf f er r espuest a = new St r i ngBuf f er ( "" ) ;Dl gCanci on dl gCanci on;Li st l i st aGenerosCanci ones;Def aul t ComboBoxModel generosCanci onesComboBoxModel ;

    / / Capt ur a l a cl ave de l a canci onSt r i ng cl ave = J Opt i onPane. showI nput Di al og( f r ame, "Cl ave de l a canci on: " ,

    "Agr egar canci on" , J Opt i onPane. QUESTI ON_MESSAGE) ;

    / / Si el usuar i o pr esi ono el bot on Cancel ari f ( cl ave == nul l ) r et ur n f al se;

    / / Cr ea un obj et o Canci on con sol o l a cl avecanci on = new Canci on( cl ave) ;

    try {/ / Obt en l a canci on del catal ogo de canci onesbCanci on = per si st enci a. obt en( canci on) ;

    / / Obt i ene l a l i st ade gener os de canci onesl i st aGener osCanci ones = per si st enci a. consul t aGenerosCanci ones( ) ;

    }cat ch ( Except i on e) {

    / / Si ocur r i o un er r or al l eer del cat al ogo de canci ones,/ / despl i ega mensaj e de err or

     J Opt i onPane. showMessageDi al og( f r ame, e. getMessage( ) , "Er r or ! ! . " , J Opt i onPane. ERROR_MESSAGE) ;

    r et urn f al se;}

    generosCanci onesComboBoxModel = conver si ones.gener osComboBoxModel ( l i st aGenerosCanci ones) ;

  • 8/17/2019 Tema 8 - Desarrollo de Aplicaciones en Java

    7/18

    Tema 8 Desarrollo de Aplicaciones en Java 241

    ITSON Manuel Domitsu Kono

    / / Si l a canci on exi st e, despl i ega sus dat osi f ( bCanci on ! = nul l ) {

    dl gCanci on = new Dl gCanci on( f r ame,"La canci on ya est a en el cat al ogo",t r ue, bCanci on,gener osCanci onesComboBoxModel ,Const ant esGUI . DESPLEGAR, r espuest a) ;

    r et urn f al se;}

    / / Si l a canci on no exi st e capt ur a l os dat os de l a nueva canci ondl gCanci on = new Dl gCanci on( f r ame, "Capt ur a Dat os Canci on" , t r ue,

    canci on, gener osCanci onesComboBoxModel ,Const ant esGUI . AGREGAR, r espuest a) ;

    / / Si el usuar i o pr esi ono el bot on Cancel ari f ( r espuest a. subst r i ng( 0) . equal s( Const ant esGUI . CANCELAR) ) r et ur n f al se;

    / / Agr ega l a nueva canci on al catal ogo de canci ones

    try {per si st enci a. agr ega( canci on) ;}cat ch( Except i on e) {

    / / Si ocur r i o un er r or al escr i bi r al cat al ogo de canci ones,/ / despl i ega mensaj e de err or

     J Opt i onPane. showMessageDi al og( f r ame, e. getMessage( ) , "Er r or ! ! . " , J Opt i onPane. ERROR_MESSAGE) ;

    r et urn f al se;}r et ur n t r ue;

    }. . .

    / * ** Regr esa un obj eto Tabl a con t odas l as canci ones* @par am f r ame Vent ana sobr e l a que se despl i ega el mensaj e de er r or* @r et ur n Obj eto Tabl a con t odas l as canci ones, nul l si hay un er r or*/

    publ i c Tabl a getTabl aCanci ones( J Fr ame f r ame) {Li st l i st aCanci ones;

    try {/ / Obt i ene l a l i st a de canci onesl i st aCanci ones = per si st enci a. consul t aCanci ones( ) ;

    }cat ch ( Except i on e) {

    / / Si ocur r i o un er r or al obt ener l a l i st a de l a base de dat os,/ / despl i ega mensaj e de err or

     J Opt i onPane. showMessageDi al og( f r ame, e. getMessage( ) , "Er r or ! ! . " , J Opt i onPane. ERROR_MESSAGE) ;

    ret urn nul l ;}

    / / Regr esa el obj eto Tabl a con t odas l as canci onesr et ur n new Tabl a("Li st a de Canci ones" ,

    conver si ones. canci onesTabl eModel ( l i st aCanci ones) ) ;

  • 8/17/2019 Tema 8 - Desarrollo de Aplicaciones en Java

    8/18

    242 Desarrollo de Aplicaciones en Java

    ITSON Manuel Domitsu Kono

    }. . .

    }

    La clase Tabl a, cuyo código se muestra enseguida, encapsula los datos de una tabla:el título de la tabla, y un objeto de tipo Def aul t Tabl eModel  con los títulos de lascolumnas de la tabla y los valores de la tabla.

    Tabla.java/ ** Tabl a. j ava*/

    package cont r ol ;

    i mpor t j avax. swi ng. t abl e. Def aul t Tabl eModel ;

    / * ** Est a cl ase encapsul a el t i t ul o de una t abl a y un obj et o Tabl eModel con* l os datos de una t abl a que seran despl egados en una tabl a del t i po J Tabl e** @aut hor mdomi t su*/

    publ i c cl ass Tabl a {pr i vat e St r i ng t i t ul o;pr i vat e Def aul t Tabl eModel model oTabl a;

    / * ** Const r uct or si n paramet r os*/

    publ i c Tabl a( ) {}

    / *** Const r uctor que i ni ci al i za l os at r i but os de l a cl ase** @par am t i t ul o Ti t ul o de l a t abl a* @param model oTabl a Obj eto Tabl eModel con l os dat os de l a t abl a.*/

    publ i c Tabl a( St r i ng t i t ul o, Def aul t Tabl eModel model oTabl a) {thi s . t i tul o = t i tul o;t hi s. model oTabl a = model oTabl a;

    }

    / * ** Regr esa el t i t ul o de l a t abl a* @r et ur n El t i t ul o de l a t abl a*/

    publ i c St r i ng get Ti t ul o( ) {return t i tul o;

    }

    / * ** Est abl ece el t i t ul o de l a t abl a* @par am t i t ul o Ti t ul o de l a t abl a

  • 8/17/2019 Tema 8 - Desarrollo de Aplicaciones en Java

    9/18

    Tema 8 Desarrollo de Aplicaciones en Java 243

    ITSON Manuel Domitsu Kono

    */publ i c voi d set Ti t ul o( St r i ng t i t ul o) {

    thi s . t i tul o = t i tul o;}

    / * ** Regr esa l os datos de l a tabl a* @r eturn Obj eto Tabl eModel con l os datos de l a tabl a*/

    publ i c Def aul t Tabl eModel getModel oTabl a( ) {r eturn model oTabl a;

    }

    / * ** Est abl ece l os dat os de l a t abl a* @param model oTabl a Obj eto Tabl eModel con l os dat os de l a t abl a*/

    publ i c voi d set Model oTabl a( Def aul t Tabl eModel model oTabl a) {t hi s. model oTabl a = model oTabl a;

    }

    }

    La clase Conver si ones contiene métodos que encapsulan listas de canciones,películas o géneros en objetos del tipo Def aul t Tabl eModel  usadas por elcomponente J Tabl e para desplegar tablas. También contiene un método queencapsula una lista de géneros en un objeto del tipo Def aul t ComboBoxModel  empleado por el componente J ComboBox para desplegar la lista de opciones. Elcódigo de la clase Conver si ones es el siguiente.

    Conversiones.java/ *

    * Conver si ones. j ava**/

    package cont r ol ;

    i mpor t j ava. ut i l . Li s t ;i mpor t j avax. swi ng. Def aul t ComboBoxModel ;i mpor t j avax. swi ng. t abl e. Def aul t Tabl eModel ;i mport obj et osNegoci o. Canci on;i mport obj etosNegoci o. Genero;i mpor t obj et osNegoci o. Pel i cul a;

    / * *

    * Est a cl ase cont i ene métodos que generan obj etos del t i po Def aul t Tabl eModel* y Def aul t ComboBoxModel par a crear i nst anci as de J t abl e y J ComboBox.* @aut hor mdomi t su*/

    publ i c cl ass Conver si ones {/ / Ar r egl os con l os nombr es de l as col umnas de l as t abl as

    St r i ng nombr esCol umnasTabl asCanci ones[ ] = {"Cl ave", "Ti t ul o", " I nt er pr et e","Aut or ", "Gener o", "Al bum","Dur aci on" , "Fecha"};

  • 8/17/2019 Tema 8 - Desarrollo de Aplicaciones en Java

    10/18

    244 Desarrollo de Aplicaciones en Java

    ITSON Manuel Domitsu Kono

    St r i ng nombr esCol umnasTabl asPel i cul as[ ] = {"Cl ave", "Ti t ul o", "Act or 1","Act or 2", "Di r ect or ", "Gener o","Dur aci on" , "Fecha"};

    St r i ng nombr esCol umnasTabl asGeneros[ ] = {"Cl ave", "Nombr e", "Ti po"};

    / * ** Gener a un obj et o de t i po Def aul t Tabl eModel a part i r de una l i st a de* canci ones.** @param l i st aCanci ones Li st a de canci ones a conver t i r* @r et ur n Obj eto de t i po Def aul t Tabl eModel con l os at r i but os de l as* canci ones.*/

    publ i c Def aul t Tabl eModel canci onesTabl eModel ( Li st l i st aCanci ones) {Obj ect t abl a[ ] [ ] ;

    i f ( l i st aCanci ones != nul l ) {t abl a = new Obj ect [ l i st aCanci ones. si ze( ) ] [ 8] ;f or ( i nt i = 0; i < l i st aCanci ones. si ze( ) ; i ++) {

    / / Obt en una canci ón de l a l i st a de canci ones

    Canci on canci on = l i st aCanci ones. get ( i ) ;/ / Al macena sus at r i but os en l a f i l a del ar r egl ot abl a[ i ] [ 0] = canci on. get Cl ave( ) ;t abl a[ i ] [ 1] = canci on. get Ti t ul o( ) ;t abl a[ i ] [ 2] = canci on. get I nt er pr et e( ) ;t abl a[ i ] [ 3] = canci on. get Aut or ( ) ;t abl a[ i ] [ 4] = canci on. get Gener o( ) . get Nombr e( ) ;t abl a[ i ] [ 5] = canci on. get Al bum( ) ;t abl a[ i ] [ 6] = new I nt eger ( canci on. get Dur aci on( ) ) ;t abl a[ i ] [ 7] = canci on. get Fecha( ) ;

    }r etur n new Def aul t Tabl eModel ( t abl a, nombresCol umnasTabl asCanci ones) ;

    }

    ret urn nul l ;}

    / * ** Gener a un obj et o de t i po Def aul t Tabl eModel a part i r de una l i st a de* pel i cul as.** @par am l i st aPel i cul as Li st a de pel i cul as a conver t i r* @r et ur n Obj eto de t i po Def aul t Tabl eModel con l os at r i but os de l as* pel i cul as.*/

    publ i c Def aul t Tabl eModel pel i cul asTabl eModel ( Li st l i st aPel i cul as) {Obj ect t abl a[ ] [ ] ;

    i f ( l i s taPel i cul as != nul l ) {t abl a = new Obj ect[ l i staPel i cul as. si ze( ) ] [ 8] ;f or ( i nt i = 0; i < l i s taPel i cul as. s i ze( ) ; i ++) {

    / / Obt en una canci ón de l a l i st a de canci onesPel i cul a pel i cul a = l i s taPel i cul as. get ( i ) ;/ / Al macena sus at r i but os en l a f i l a del ar r egl ot abl a[ i ] [ 0] = pel i cul a. get Cl ave( ) ;t abl a[ i ] [ 1] = pel i cul a. get Ti t ul o( ) ;t abl a[ i ] [ 2] = pel i cul a. get Actor1( ) ;

  • 8/17/2019 Tema 8 - Desarrollo de Aplicaciones en Java

    11/18

    Tema 8 Desarrollo de Aplicaciones en Java 245

    ITSON Manuel Domitsu Kono

    t abl a[ i ] [ 3] = pel i cul a. get Actor2( ) ;t abl a[ i ] [ 4] = pel i cul a. get Di rect or( ) ;t abl a[ i ] [ 5] = pel i cul a. get Gener o( ) . get Nombr e( ) ;t abl a[ i ] [ 6] = new I nt eger ( pel i cul a. get Dur aci on( ) ) ;t abl a[ i ] [ 7] = pel i cul a. get Fecha( ) ;

    }r et ur n new Def aul t Tabl eModel ( t abl a, nombr esCol umnasTabl asPel i cul as) ;

    }

    ret urn nul l ;}

    / * ** Gener a un obj et o de t i po Def aul t Tabl eModel a part i r de una l i st a de* gener os.** @param l i st aGener os Li st a de gener os a conver t i r* @r et ur n Obj eto de t i po Def aul t Tabl eModel con l os at r i but os de l os* gener os.*/

    publ i c Def aul t Tabl eModel generosTabl eModel ( Li st l i st aGeneros) {Obj ect t abl a[ ] [ ] ;

    i f ( l i st aGener os != nul l ) {t abl a = new Obj ect [ l i st aGener os. si ze( ) ] [ 3] ;f or ( i nt i = 0; i < l i st aGener os. si ze( ) ; i ++) {

    / / Obt en un géner o de l a l i st a de génerosGenero gener o = ( Gener o) l i st aGener os. get ( i ) ;/ / Al macena sus at r i but os en l a f i l a del ar r egl ot abl a[ i ] [ 0] = gener o. get CveGener o() ;t abl a[ i ] [ 1] = gener o. get Nombr e( ) ;t abl a[ i ] [ 2] = gener o. get Ti poMedi o( ) ;

    }r etur n new Def aul t Tabl eModel ( t abl a, nombresCol umnasTabl asGeneros) ;

    }

    ret urn nul l ;}

    / * ** Genera un obj eto de t i po Def aul t ComboBoxModel a par t i r de una l i st a de* géner os.*/

    publ i c Def aul t ComboBoxModel generosComboBoxModel ( Li st l i st aGener os) {

    Def aul t ComboBoxModel def aul t ComboBoxModel = newDef aul t ComboBoxModel ( ) ;

    i f ( l i st aGener os != nul l ) {/ / Par a cada el ement o de l a Li st af or ( i nt i = 0; i < l i st aGener os. si ze( ) ; i ++){

    / / Agr egal o a l a i nst anci a de l a cl ase Def aul t ComboBoxModeldef aul t ComboBoxModel . addEl ement ( l i st aGener os. get ( i ) ) ;

    }

    r eturn def aul t ComboBoxModel ;

  • 8/17/2019 Tema 8 - Desarrollo de Aplicaciones en Java

    12/18

    246 Desarrollo de Aplicaciones en Java

    ITSON Manuel Domitsu Kono

    }ret urn nul l ;

    }}

    El caso de uso Actualizar Canción nos permite actualizar una canción del catálogo de

    canciones. El diagrama de secuencia de la figura 8.4 realiza dicho caso de uso.

    Figura 8.4 Diagrama de Secuencia – Actualizar Canción

    El caso de uso empieza cuando el usuario selecciona del menú de la ventana de laaplicación la opción Actualizar Canción, haciendo que la opción del menú invoque al

    método oyente opci onMenuAct ual i zarCanci onAct i onPer f ormed( ) , cuyocódigo se muestra en el siguiente fragmento de código:

    FrmAmanteMusica.java (Fragmento). . .

    / * ** Metodo oyent e que act ual i za una canci on del cat al ogo de canci ones** @par am evt Event o al que escucha*/

    pr i vat e voi d

  • 8/17/2019 Tema 8 - Desarrollo de Aplicaciones en Java

    13/18

    Tema 8 Desarrollo de Aplicaciones en Java 247

    ITSON Manuel Domitsu Kono

    opci onMenuAct ual i zarCanci onAct i onPer f ormed( j ava. awt . event . Act i onEvent evt ) {/ / Actual i za l a canci óni f ( cont rol . actual i zaCanci on( t hi s)) {

    / / Obt i ene l a l i st a de canci ones Tabl a t abl aCanci ones = cont r ol . getTabl aCanci ones( t hi s) ;

    / / Despl i ega l a l i st a de canci onesdespl i egaTabl a( t abl aCanci ones) ;

    }} . . .

    El método oyente opci onMenuAct ual i zarCanci onAct i onPer f ormed( )  primeroinvoca al método act ual i zaCanci ón( )  de la clase Control que captura la clave dela canción a actualizar, obtiene la canción del catálogo de canciones, edita los datos dela canción y guarda la canción en el catálogo de canciones. A continuación el métodooyente invoca al método getTabl aCanci ones( )  que obtiene la tabla de canciones ypor último el método oyente invoca al método despl i egaTabl a( )  para que

    despliegue la lista de canciones.

    En el fragmento de código siguiente se muestra el método act ual i zaCanci ón( )  encargado de actualizar la canción del catálogo de canciones.

    Contro l.java (Fragmento)/ * ** Act ual i za una canci on del cat al ogo de canci ones* @par am f r ame Vent ana sobr e l a que se despl i ega el cuadro de di al ogo para* edi t ar l os datos de l a canci on* @r et ur n Regr esa t r ue si se pudo act ual i zar l a canci on, f al se en caso* cont r ar i o

    */publ i c bool ean act ual i zaCanci on( J Frame f r ame) {Canci on canci on;St r i ngBuf f er r espuest a = new St r i ngBuf f er ( "" ) ;Dl gCanci on dl gCanci on;Li st l i st aGenerosCanci ones;Def aul t ComboBoxModel generosCanci onesComboBoxModel ;

    / / Capt ur a l a cl ave de l a canci onSt r i ng cl ave = J Opt i onPane. showI nput Di al og( f r ame, "Cl ave de l a canci on: " ,

    "Actual i zar canci on", J Opt i onPane. QUESTI ON_MESSAGE) ;

    / / Si el usuar i o pr esi ono el bot on Cancel ari f ( cl ave == nul l ) r et ur n f al se;

    / / Cr ea un obj et o Canci on con sol o l a cl avecanci on = new Canci on( cl ave) ;

    try {/ / Obt en l a canci on del catal ogo de canci onescanci on = per si st enci a. obt en( canci on) ;

    }

  • 8/17/2019 Tema 8 - Desarrollo de Aplicaciones en Java

    14/18

    248 Desarrollo de Aplicaciones en Java

    ITSON Manuel Domitsu Kono

    cat ch ( Except i on e) {/ / Si ocur r i o un er r or al l eer del cat al ogo de canci ones,/ / despl i ega mensaj e de err or

     J Opt i onPane. showMessageDi al og( f r ame, e. getMessage( ) , "Er r or ! ! . " , J Opt i onPane. ERROR_MESSAGE) ;

    r et urn f al se;}

    / / Si l a canci on no exi st e, despl i ega un mensaj e de er r ori f ( canci on == nul l ) {

     J Opt i onPane. showMessageDi al og( f r ame,"La canci on no exi st e", "Er r or ! ! . ",

     J Opt i onPane. ERROR_MESSAGE) ;r et urn f al se;

    }

    try {/ / Obt i ene l a l i st a de gener os de canci onesl i st aGener osCanci ones = per si st enci a. consul t aGenerosCanci ones( ) ;

    }

    cat ch ( Except i on e) {/ / Si ocur r i o un er r or al obt ener l a l i st a de l a base de dat os,/ / despl i ega mensaj e de err or

     J Opt i onPane. showMessageDi al og( f r ame, e. getMessage( ) , "Er r or ! ! . " , J Opt i onPane. ERROR_MESSAGE) ;

    r et urn f al se;}

    generosCanci onesComboBoxModel = conver si ones.gener osComboBoxModel ( l i st aGenerosCanci ones) ;

    / / Si l a canci on exi st e, edi t a l os dat os de l a canci ondl gCanci on = new Dl gCanci on( f r ame, "Edi t a Datos Canci on" , t r ue, canci on,

    gener osCanci onesComboBoxModel ,Const ant esGUI . ACTUALI ZAR, r espuest a) ;

    / / Si el usuar i o pr esi ono el bot on Cancel ari f ( r espuest a. subst r i ng( 0) . equal s( Const ant esGUI . CANCELAR) ) r et ur n f al se;

    / / Act ual i za l a canci on del cat al ogo de canci onestry {

    per si st enci a. actual i za( canci on) ;}cat ch( Except i on e) {

    / / Si ocur r i o un er r or al escr i bi r al cat al ogo de canci ones,/ / despl i ega mensaj e de err or

     J Opt i onPane. showMessageDi al og( f r ame, e. getMessage( ) , "Er r or ! ! . " ,

     J Opt i onPane. ERROR_MESSAGE) ;r et urn f al se;

    }r et ur n t r ue;

    }

    El caso de uso Eliminar Canción nos permite eliminar una canción del catálogo decanciones. El diagrama de secuencia de la figura 8.5 realiza dicho caso de uso.

  • 8/17/2019 Tema 8 - Desarrollo de Aplicaciones en Java

    15/18

    Tema 8 Desarrollo de Aplicaciones en Java 249

    ITSON Manuel Domitsu Kono

    Figura 8.5 Diagrama de Secuencia – Eliminar Canción

    El caso de uso empieza cuando el usuario selecciona del menú de la ventana de laaplicación la opción Eliminar Canción, haciendo que la opción del menú invoque almétodo oyente opci onMenuEl i mi narCanci onAct i onPer f ormed( ) , cuyo códigose muestra en el siguiente fragmento de código:

    FrmAmanteMusica.java (Fragmento). . .

    / * ** Met odo oyente que el i mi na una canci on del cat al ogo de canci ones** @par am evt Event o al que escucha*/

    pr i vat e voi dopci onMenuEl i mi narCanci onAct i onPer f ormed( j ava. awt . event . Act i onEvent evt ) {i f ( cont rol . el i mi naCanci on( t hi s)) {

    / / Obt i ene l a l i st a de canci ones Tabl a t abl aCanci ones = cont r ol . getTabl aCanci ones( t hi s) ;

    / / Despl i ega l a l i st a de canci onesdespl i egaTabl a( t abl aCanci ones) ;

  • 8/17/2019 Tema 8 - Desarrollo de Aplicaciones en Java

    16/18

    250 Desarrollo de Aplicaciones en Java

    ITSON Manuel Domitsu Kono

    }}

    . . .

    El método oyente opci onMenuEl i mi narCanci onAct i onPer f ormed( )  primeroinvoca al método el i mi naCanci ón( )  de la clase Control que captura la clave de lacanción a eliminar, obtiene la canción del catálogo de canciones, la muestra paraconfirmar la orden y elimina la canción en el catálogo de canciones. A continuación elmétodo oyente invoca al método get Tabl aCanci ones( )  que obtiene la tabla decanciones y por último el método oyente invoca al método despl i egaTabl a( )  paraque despliegue la lista de canciones.

    En el fragmento de código siguiente se muestra el método el i mi naCanci ón( )  encargado de eliminar la canción del catálogo de canciones.

    Contro l.java (Fragmento). . .

    / * ** El i mi na una canci on del cat al ogo de canci ones* @par am f r ame Vent ana sobr e l a que se despl i ega el cuadro de di al ogo para* despl egar l os datos de l a canci on* @r et ur n Regr esa t r ue si se pudo el i mi nar l a canci on, f al se en caso* cont r ar i o*/

    publ i c bool ean el i mi naCanci on( J Frame f r ame) {Canci on canci on;St r i ngBuf f er r espuest a = new St r i ngBuf f er ( ) ;Dl gCanci on dl gCanci on;Li st l i st aGenerosCanci ones;

    Def aul t ComboBoxModel generosCanci onesComboBoxModel ;

    / / Capt ur a l a cl ave de l a canci onSt r i ng cl ave = J Opt i onPane. showI nput Di al og( f r ame, "Cl ave de l a canci on: " ,

    "El i mi nar canci on", J Opt i onPane. QUESTI ON_MESSAGE) ;

    / / Si el usuar i o pr esi ono el bot on Cancel ari f ( cl ave == nul l ) r et ur n f al se;

    / / Cr ea un obj et o Canci on con sol o l a cl avecanci on = new Canci on( cl ave) ;

    try {/ / Obt en l a canci on del catal ogo de canci onescanci on = per si st enci a. obt en( canci on) ;

    }cat ch ( Except i on e) {

    / / Si ocur r i o un er r or al l eer del cat al ogo de canci ones/ / despl i ega mensaj e de err or

     J Opt i onPane. showMessageDi al og( f r ame, e. getMessage( ) , "Er r or ! ! . " , J Opt i onPane. ERROR_MESSAGE) ;

    r et urn f al se;

  • 8/17/2019 Tema 8 - Desarrollo de Aplicaciones en Java

    17/18

    Tema 8 Desarrollo de Aplicaciones en Java 251

    ITSON Manuel Domitsu Kono

    }

    / / Si l a canci on no exi st e en el cat al ogo de canci ones,i f ( canci on == nul l ) {

    / / despl i ega mensaj e de err or J Opt i onPane. showMessageDi al og( f r ame, "La canci on no exi st e",

    "Er r or ! ! . " , J Opt i onPane. ERROR_MESSAGE) ;r et urn f al se;

    }

    try {/ / Obt i ene l a l i st a de gener os de canci onesl i st aGener osCanci ones = per si st enci a. consul t aGenerosCanci ones( ) ;

    }cat ch ( Except i on e) {

    / / Si ocur r i o un er r or al obt ener l a l i st a de l a base de dat os,/ / despl i ega mensaj e de err or

     J Opt i onPane. showMessageDi al og( f r ame, e. getMessage( ) , "Er r or ! ! . " , J Opt i onPane. ERROR_MESSAGE) ;

    r et urn f al se;

    }

    generosCanci onesComboBoxModel = conver si ones.gener osComboBoxModel ( l i st aGenerosCanci ones) ;

    / / Si exi st e l a canci on, despl i ega l os dat os de l a canci ondl gCanci on = new Dl gCanci on( f r ame, "Canci on a borr ar" , t r ue, canci on,

    gener osCanci onesComboBoxModel ,Const ant esGUI . ELI MI NAR, r espuest a) ;

    / / Si el usuar i o pr esi ono el bot on Cancel ari f ( r espuest a. subst r i ng( 0) . equal s( Const ant esGUI . CANCELAR) ) r et ur n f al se;

    try {/ / El i mi na l a canci on del cat al ogo de canci onesper si st enci a. el i mi na( canci on) ;

    }cat ch( Except i on e) {

    / / Si ocur r i o un er r or al bor r ar del cat al ogo de canci ones,/ / despl i ega mensaj e de err or

     J Opt i onPane. showMessageDi al og( f r ame, e. getMessage( ) , "Er r or ! ! . " , J Opt i onPane. ERROR_MESSAGE) ;

    r et urn f al se;}r et ur n t r ue;

    }. . .

    El caso de uso Consulta Canciones nos permite listar las canciones del catálogo decanciones. El diagrama de secuencia de la figura 8.6 realiza dicho caso de uso.

  • 8/17/2019 Tema 8 - Desarrollo de Aplicaciones en Java

    18/18

    252 Desarrollo de Aplicaciones en Java

    ITSON Manuel Domitsu Kono

    Figura 8.6 Diagrama de Secuencia – Consul tar Canciones

    El caso de uso empieza cuando el usuario selecciona del menú de la ventana de laaplicación la opción Consulta Canciones Todas, haciendo que la opción del menúinvoque al método oyenteopci onMenuConsul t asCanci onesTodasAct i onPer f ormed( ) , cuyo código semuestra en el siguiente fragmento de código:

    FrmAmanteMusica.java (Fragmento). . .

    / * ** Metodo oyent e que obt i ene y despl i ega l a l i st a de canci ones

    ** @par am evt Event o al que escucha*/

    pr i vat e voi dopci onMenuConsul t asCanci onesTodasAct i onPer f ormed( j ava. awt . event . Act i onEventevt ) {

    / / Obt i ene l a l i st a de canci ones Tabl a t abl aCanci ones = cont r ol . getTabl aCanci ones( t hi s) ;

    / / Despl i ega l a l i st a de canci onesi f ( t abl aCanci ones ! = nul l ) {

    despl i egaTabl a( t abl aCanci ones) ;}

    } . . .