Vous êtes sur la page 1sur 51
PanelSeleccionIdioma. java import java.awt.event.ItemEvent; import java.awt.event.ItemListene import javax.swing.BorderFactory; import Javax.swing.ButtonGroup; ‘import javax. swing. JPane ‘import javax.swing.JLabel; import javax.swing.JRadioButton; import javax.swing.3ComboBox; ‘import javax.swing.JOptionPane; public class Panelselecciontdioma extends JPanel implements ItemListener { public static final int IDIOMA_ORIGEN = 0 public static final int IDIOMA_DESTINO private Traductor traductor; private int tipoIdioma; private PanelTraductor panelTraductor; private JLabel etiqueta; public Panelseleccionidioma(int tipoIdioma, Traductor traductor, PanelTraductor paneltraductor) { this.paneltraductor = panelTraductor; this.tipoIdioma = tipoIdioma; this.traductor = traductor; this.setBorder(BorderFactory.createTitledBorder( new seringlii” Idioma Origen ", " Idioma Destino "}[tipoIdioma])); IRadioButton[] idiomaSeleccionado = new Radi oButton[Traductor .NUM_IDIOMAS, ButtonGroup grupo = new ButtonGroup(); for Cint i = 0; i < idiomaSeleccionado. length; iw { idiomaseleccionado[i] = new JRadioButton(Traductor.getCadenaldioma(i)); grupo. add(idiomaSeleccionadoli]); idiomaseleccionado[i].addItemListener(this); _ : this.addCidiomaSeleccionado[i]); i (tipoIdioma == IDIOMA_ORIGEN) { idi omaSeleccionado[traductor.getIdiomaorigen()] .setselected(true) : } else { idiomaseleccionado[traductor.getIdiomabesti no()].setSelected(true ‘ + Pagina 1 _-_ Tutosil de leva - Ficheros de Acceso Aleatorio Pagina | de 3 $ Chae Le tio A ne 0 se desea leer un fichero de principio a fin; en diferentes partes del fichero, Java proporciona una cl FICHEROS DE ACCESO ALEA TORIO Sino acceder al fichero como una base de datos, donde se salta de un registro a otro: cada uno se RandomAccessFile para este tipo de entrada/salida, Creactin de un Fichero de Acceso Aleatorio Hay dosposibilidades Para abrir un fichero de acceso aleatorio: Con el sombre del fichero: mIRATile ~ new RandonhecessFile| String nombre, String modo ); Con un objeto File: mIRPFLle = new RandomkccessFile( File fichero, String modo ); Fectura (=) 0 de lectura/escritura ([] palabras; public PanelListado(Gestorconfiguracion gestorconfiguracion) { this.gestorconfiguracion = jercoreent guracion; gestorconfiguracion.setPanelListado(this) ; ; this.actualizar(); public void actuatizar() { this.removeAl](); : traductor = gestorconfiguracion.getTraductor() ; alabras = new ArrayList[Traductor .NUM_IDIOMAS] ; or Cint i_= 0; i < palabras. length; i++) {_ } palabras[i] = traductor.getPalabras(i); JPanel_panelPalabras = new JPanel(); if (palabras[0].sizeQ) 0) { panelPalabras.add(new JLabel("Debe abrir un diccionario"); } else { Jpanel[] panelescolumna = new JPanel [Traductor .NUM_IDIOMAS] ; GroupLayout[] distribuidorescolumna = new GroupLayout [Traductor . NUM_IDIOMAS] ; GroupLayout.ParallelGroup[] gruposParalelocolumna = new GroupLayout .ParallelGroup[Traductor .NUM_IDIOMAS] ; GroupLayout . SequentialGroup[] gruposSecuencialcolumna = Pagina 1 PanelListado. java GroupLayout .SequentialGroup[Traducto: for Cint 7 Traductor.NUM_IDIOMAS; i++) { panelesColumna[i] = new Jpanel(); panelescolumna[i].setBorder(BorderFactory.createTit ledBorder( Traductor.getCadenaIdioma(i))); distribuidorescolumna[i] = new GroupLayout (panelescolumna[i]); panelesColumna[i].setLayout(distribuidorescolumnali]); gruposParalelocolumnati] = distribuidorescolumna[i].createParallelGroupQ ; distribuidorescolumnaLi]. setHorizontalGroup(gruposParaleloColumnali]); gruposSecuencialcolumna[i] = distribuidorescolumna[i].createSequentialGroup() ; distribuidorescolumna[i]. Setventi.calcrounCorupessecuencialcolumaltl): . for Cint j = 0; j < palabras[0].sizeQ; j++) { for Cinti=0; i< Traductor.NUM_IDIOMAS; i++) { JLabel palabra = new JLabel (palabras[i] .get()); gruposParaleloColumna[i] .addcomponent (palabra) ; gruposSecuencialcolumna[i] .addComponent (palabra) ; } GroupLayout distribuidorpalabras = new GroupLayout (panelPalabras) ; panelPalabras.setLayout (distribuidorPalabras) ; distribuidorPalabras.setAutoCreateGaps (true) ; distribuidorPalabras.setautoCreateContainerGaps (true) ; GroupLayout .SequentialGroup grupoSecuencialpalabras = distribuidorPalabras.createsequenti sipouet) i GroupLayout..ParallelGroup grupoParalelopalabras = distribuidorPalabras.createParallelGroup() ; Pagina 2 panelListado. java for Cint i = 0; i < Traductor.NUM_IDIOMAS; i++) { grupoSecuencialPalabras .addComponent (panelescolumna[i]) ; grupoParalelopalabras vaddcomponen pang! escolumna[i]); distribuidorPalabras.setHorizontalGroup(grupoSecuencial Palabras) ; “cso distribuidorralabras, setverticalcroupCaruporaraletoralabras) ot Jscrol pane panelpalabrasscrol] = new ESB 38cro11Ppane(panelpalabras) ; guardar = new 3Button("Guardar diccionario"); guardar.addActionListener(new ActionListener(){ public void actionPerformed(actionEvent e){ gestorconFiguracton-quardard): abrir = new jButton("Abrir diccionario"); abrir.addactionListener(new ActionListenerO{ public void actionPerformed(ActionEvent e){ estorconfiguracion.abrirQ; anyadir = new JButton("Anyadir palabra"); anyadir.addActionListener(new ActionListenerOf{ public void actionPerformed(actionEvent e){ Dialogoanyadir dialogoAnyadir = new DialogoanyadirQ; if (dialogoAnyadir.validoQ) { traductor.anyadir(dialogoAnyadir.nuevaPalabra()) ; . pel joes toncomhl guraslonragruatizanOk else JOptionPane.showMessageDialog(this, "No se puede anyadir una nueva palabra", "AVISO", JoptionPane. ERROR_MESSAGE) ; } } vi GroupLayout distribuidor = new GroupLayout (this); this.setLayout(distribuidor); distribuidor.setAutoCreateGaps (true) ; distribuidor.setautoCreateContainerGaps (true) ; distribuidor.setHorizontalGroup( distribuidor.createPparalle1Group(GroupLayout .Alignment. CENTER) .addcomponent (pane1PpalabrasScro11) .addGroup( Pagina 3 cos PanelListado. java distribuidor.createSequentialGroup() .addcomponent (guardar) -addcomponent (abrir)) 5 oo .addComponent (anyadir)); distribuidor.setverticalGroup( . distribuidor.createSequentialGroup() .addcomponent (pane1palabrasscro11) -addGroup( distribuidor.createparallelGroup() .addComponent (guardar) -addcomponent (abrir)) } . ,private class DialogoAnyadir extends JDialog implements ActionListener { .addcomponent (anyadir)) ; private Frexetielat entradas; private JLabel[] idiomas; private JButton anyadir; private JButton cancelar; private boolean valido; public DialogoAnyadirQ { super (AplicacionTraductor.getventanaTraductor(), 5 eed ‘ “anyadir palabras al diccionario"); . entradas = new ITextField[Traductor.NUM_IDIOMAS] ; idiomas ='new JLabel [Traductor .NUM_IDIOMAS] ; for Cint i =0; i < Traductor.NUM_IDIOMAS; i++) { idiomas[i] = new Label (Traductor.getCadenatdiomaCi)); entradas[i] = new JTextFieldQ; } anyadir = new JButton("Anyadir"); anyadir.addActionListener(this); cancelar = new JButton("Cancelar"); cancelar.addactionListener (this); 3panel panel = new 3panel(); GroupLayout distribuidor = new GroupLayout (panel) ; panel.setLayout(distribuidor); distribuidor.setAutoCreateGaps (true) ; Pagina 4 oo. PanelListado. java distribuidor.setAutoCreateContainerGaps(true) ; GroupLayout.ParallelGroup grupoParalelo = distribuidor.createparallelGroup(); GroupLayout. SequentialGroup grupoSecuencial = distribuidor.createSequentialGroup() ; or Cint i = 0; i < Traductor.NUM_IDIOMAS; i++) { . ae GroupLayout .SequentialGroup grupoSecuencialFila = distribuidor.createsequentialGroupQ) ; grupoSecuencialFila.addcomponent (idiomas [i]); grupoSecuencialFila.addcomponent(entradas[i]); grupoParalelo.addcroup(gruposecuencialFila) ; GroupLayout .ParallelGroup grupoParaleloFila = distribuidor.createParallelGroup(); grupoParaleloFila.addcomponent(idiomas[i]); grupoParaleloFila.addComponent (entradas [i]); grupoSecuencial.addGroup(grupoParaleloFi la) ; grupoParalelo.addGroup( distribuidor.createSequentialGroup() .addcomponent (anyadir) .addcomponent (cancelar)) ; gruposecuencial .addcroup( distribuidor.createParallelGroup() .addcomponent (anyadir) .addComponent (cancelar)) ; distribuidor.setHorizontalGroup(grupoParalelo) ; distribuidor. setverticalGroup(grupoSecuencial) ; this.setContentPane (panel); this. setModal (true); this:setLocation(300, 300); this.pack(); this. setVisible(true) ; Pagina 5 PanelListado. java public void actionPerformed(Actionevent e) { if (e.getsource() anyadir) { int valido for Cint i = 0; i < Traductor.NUM_IDIOMAS; i++) { Clentradas[i] .getText().equals("")) { . valido++; this.valido = valido Traductor.NUM_IDIOMAS; this.setvisible(false) ; public boolean valido() { } return valido; public stringl} nuevaPalabraQ) { tringl] nuevaPalabra = new string[Traductor. NUM_IDIOMAS | ; Git i= 0; i < Traductor .NUM_IDIOMAS ; in t . nuevaPalabra[i] = entradas[i].getTextO; } return nuevaPalabra; t public void actionPerformed(actionevent e) { if (e.getsource() guardar) { jestorconfiguracion.guardar() ; } else if (e.getsource() == abrir) { pel oestorconFiguracion. -abrirQ; else DialogoAnyadir dialogoAnyadir = new DialogoanyadirQ; : if (dialogoanyadir.valido()) { traductor.anyadir(dialogoAnyadir.nuevaPalabra()); GestorConfiguracion. actualizar(Q); } else { JOptionPane.showMessageDialog(this, "No se puede anyadir una nueva palabra", “AVISO", JOptionPane.ERROR_MESSAGE) ; + Pagina 6 + Kordones Cetin Shack —— de ghmis. de woree.i beat Intervalo. java) reso sueh&: A Voce package pooa.util; public class Intervalo { private double minim public static final int MAX_VECES = 100; O private double maxim protected double getMinimo() { } return minimo; protected double getMaximo() { ; return maximo; y** * * @throws IllegalArgumentException si minimo es mayor que maximo public Intervalo(double minimo, double maximo) { if (minimo > maximo) throw new T1legalArgumentException ("E1 minimo no puede ser mayor que e7 maximo."); this.minimo = minimo; this.maximo = maximo; 3 public Intervalo() { this(0, 0); public TntervaloCintervalo intervalo) f . thisCintervalo.minimo, intervalo.maximo) ; public double longitud() { } return maximo - minimo; public double puntomedio() { 7 return (maximo + minimo) / 2; public Intervalo copiaQ { . } return new Intervalo(this); public Intervalo simetrico() { . — } return new Intervalo(-maximo, -minimo); Pagina 1 Intervalo. java public void desplazar(double cantidad) { minimo += cantidad; maximo += cantidad; } public void escalar(double escala) { double nuevaLongitud = this. longitud() * escala; double puntoMedio = this.puntomedio(); minimo = puntoMedio - nuevaLongitud / 2; maximo = puntoMedio + nuevaLongitud / 2; 5, public boolean incluye(double punto) { ; return minimo <= punto && punto <= maximo; public boolean incluye(interyalo intervalo) { return this.incluyeCintervalo.minimo) && : this. incluyeCintervalo.maximo) ; public boolean iguales(intervalo intervalo) { return minimo == intervalo.minimo && maximo == intervalo.maximo; + public Intervalo interseccion(Intervalo intervalo) { if (this.incluyeCintervalo)) { return intervalo.copia(); } else if Cintervalo.incluye(this)) { return ‘this, coplaG: coe } else if (this.inciuyeCintervalo.minimo)) { return new IntervaloCintervalo.minimo, this.maximo); } else if (this.incluyeCintervalo.maximo)) { . . return new Intervalo(this.minimo, intervalo.maximo) ; } else { return null; } t public Intervalo desplazado(double cantidad) { Intervalo intervalo = this.copiaQ); intervalo.desplazar(cantidad) ; return intervalo; } public void recoger() { Peed gestorIO = GestorI0.getGestorI0(); io minimo = gestorI0.inDouble("Introduce el minimo: "); maximo = gestorIO.inDouble("Introduce e1 maximo: "); Pagina 2 Intervalo.java if (minimo > maximo) { gestorI0.out("El minimo no puede ser mayor que el maximo\n\n" } } while (minimo > maximo); pe * @throws I1legalargumentexception si los intervalos son disjuntos | public void ajustar(intervalo intervalo) { if ((this.minimo > intervalo.maximo) | | (this.maximo < intervalo.minimo)) throw new Illegalargumentexception ("Los intervalos son disjuntos."); if (this.minimo < intervalo.minimo) { this.minimo = intervalo.minimo; if (this.maximo > intervalo.maximo) { this.maximo = intervalo.maximo; } oe Ms * @throws I1legalargumentexception si el formato del argumento * no es [double, double] o si minimo es mayor que maximo public Intervalo(string cadena) { if Clpattern.matches(" [*(\\d+)*, *(\\d+)*] ", throw new TllegalArgumentexception ("Formato incorrecto de] argumento. cadena)) minimo = Double. parseDouble (cadena. substring( cadena. indexof("[") + 1, cadena, indexof(",")).trimQ); cadena = cadena. substring( cadena. indexof(",") + 1, cadena. lengthQ)).trimQ; maximo = Double.parseDouble( cadena.substring(0, cadena. indexof("]"))); if (minimo > maximo) throw new 21 lege Aroumentexcept ion C"E] minimo no puede ser mayor que e1 maximo." } Pagina 3 menor que 0 * Intervalo. java public string neastring’) { } return "[" + minimo + public boolean distintos(Intervalo intervalo) { } return !this.iguales(intervalo); ye * % oe Tllegalargumentexception si el argumento es + maximo + "J e public double[] valores(double distancia) { if (distancia < 0.1) throw new Z1legalargunentexception ("La distancia no puede ser menor que distanci menor o ) int cantidad = (int) (1 + this. longitud() / a; double[] valores = new double[cantidad] ; double valor = minimo; for (int i= 0; i < cantidad; i++){ valores[i] = valor; valor += distancia; 3 return valores; } pee * * @throws I1legalArgumentexception si el argumento es igual a cero public Intervalo[] troceado(int veces) { if (veces <= 0) throw new Illegalargumentexception("e1 nimero de trozos no puede ser menor o igual maximo) ; a cero."); in Intervalo[] intervalos = new Intervalo[veces]; double longitud = this, longitud() / veces; double minimo = this.minimo; double maximo = minimo + longitud; for Cint i = 0; i < veces; i++) { intervalos[i] = new Intervalo(minimo, minimo imo = maximo; maximo longi tud; # return intervalos; Pagina 4 Intervalo. java public static void main(String[] args) { **GestorI0 gestorI0 = GestorI0.getGestorI0(); Intervalo intervalo = new Intervalo(); intervalo.recoger(); gestorIo. out("\noriginal: " + intervalo.tostring()); gestorz0.out("\nLongitud: " + intervalo. longitudQ)); gestor10.out("\nPunto medio: " + intervalo.puntomedio()); gestori0.out("\nsimetrico: " + intervalo.tostring()); Intervalo copia = intervalo.copiaQ; ‘intervalo.desplazar(7.7)} gestori0. out(' "\nDesplazado 7.72 "4+ intervalo.tostringQ); gestori0.out("\nIncluye 3.37 " ‘intervalo. incluye(3.3)); . gestorI0.out("\nincluye al original? " + . intervalo.incluye(copia) + "\n"); 0, 51"); 2 intervalo = new Intervalo(” gestorI0.out("\noriginal: intervalo.tostringQ) gestorI0.out("\nTroceado por 4: "); interyalot intervalos = intervalo. efoceade Ce: for Cint i = 0; i < intervalos. length; i++) { if G !=0) gestor1o.out(", "); gestorIO.out(intervalos[i].tostringQ)); festorto. -out("\nvalores cada 0. jouble[] valores = intervalo. valores(0.4); for Cint i = 0; i < valores.jength; i++) { if G l= 0) { gestorI0.out(", "); gestorI0.out(valores[i] . gestorI0.out("\n") ;**/ GestorIO gestorIO = GestorI0.getGestor10(); Intervalo interval = new Intervalo (6,4); Intervalo intervalo = new Intervalo(4,6. intervalo. recogen Qs 7 noriginal: " + gestorIo.out(" intervalo.tostringO) ; gestorI0.out("\nLongitud: " + ‘intervalo. Tengtesade) | gestorro.out("\nPunto medi intervalo.puntomedio()); gestorI0.out("\nSimetrico: Pagina 5 intervalo. intervalo. ‘intervalo. ‘intervalo. intervalo. intervalo. Intervalo. java tostringQ); Intervalo copia antemvalo: copiaQ; intervalo.desplazar (7.7) gestori0.out( R\nbesplazado 7.72 "+ tostring()); gestorI0.out("\nAjustar (1,2)? " ajustarcl, 2)); gestorI0.out("\nAjustar (7,8)? "+ ajustar(7,8)); . Peo cue ncnehye 3.37 "+ incluye(3.3)); gestorI0.out("\nIncluye al original? " ‘intervalo. incluye(copia) + "\n")5 interval = new Intervalo (" 5. 0 3 interval = new Intervalo (" intervalo = new Teeeravot"tO, a9: gestorI0.out("\nOriginal: " + tostringO); gestor10.out("\nTroceado por 0: "); Intervalo[] intervalos = intervalo.troceado(0); gestorI0.out("\nTroceado por -1: Intervalo[] intervalos = intervalo. roceado(-1); gestorI0.out("\nTroceado por 4: " Intervalo[] intervalos = ‘intervalo.troceado(4); for Cint it ra as ‘intervalos. length; i++) { gestorI0.out(", "); gestor10. outCintervalos[i] .tostring()); } gestorio. -out("\nvalores cada 0:1"); jouble[] valores = intervalo.valores(0); gestorzo.our("\nvalores cada 0.4: louble[] valores = intervalo. valores(0.4); for Cint_i = 0; i < valores.length; i++) { if Gi I= 0) gestorI0.out(", "); gestorI0.out(valores[i]); A storZ0.out0""\) aD Pagina 6 ExDispensadorinvalido. java package pooa.dispensadores; ‘import pooa.uti].Gestor10; import pooa-util.Intervalo; public class ExDispensadorInvalido extends Exception { private Dispensadoracotado dispensador; private Intervalo intervalo; public etre Ty aeeroval ido (DispensadorAcotado dispensador, Intervalo intervalo) { super(" La capacidad del dispensador es menor o igual a 0. this.dispensador= dispensador; this.intervalo= intervalo; } public void reparar() { GestorLO.getGestorI0() .out("Reparando dispensador.length () = dispensador. length) + dispensador .duplicarQ; try { dispensador.meter(intervalo) ; . ; } catch (ExDispensadorInvalido ex) {} Pagina 1 ExDispensadorvacio. java package pooa.dispensadores; import pooa.util.Gestori0; import pooa.util.Intervalo; public class ExDispensadorvacio extends Exception { private Dispensadoracotado dispensador; private Intervalo intervalo; . public prot sven saucryat io (Dispensadoracotado dispensador, Intervalo intervalo) { super(" E1 dispensador estdé vacio. ", this.dispensador= dispensador; this. intervalo= intervalo; 3 public void reparar() { GestorI0.getGestor10() .out("Reparando......\n"); dispensador.meterCintervalo) try dispensador.sacar(intervalo) ; ; } catch (ExDispensadorvacio ex) {} Pagina 1 . Vector. java public class vector gtatic public int totalpares (int[] vector) ‘int numpares = 0; for (int i=0; i < vector. length; i++) if ((vector[i] % 2) 0) numPares++} t return numPares; static public int totalimpares (int[] vector) © ane numImpares = 0; for Cint i=0; i < vector.length; i++) if ((vector[i] % 2) I= 0) numiImpares++; } } return numImpares; pebnie static void main (string args[]) int[] vector = {0,1,2,3,4,5}; int numPares = 0, numimpares = 0; numPares = totalPares (vector); numImpares = totalImpares (vector); int [] vi int [] v2 = new int [numPares]; = new int [numzmpares]; intm=0, n=0; for Cint i=0; i < vector.length; i++) if C(vector[i] % 2) == 0) v1{m] = vector[i]; m+; else v2{n] nes; vectorLi]; Pagina 1 Vector.java } for (int i=0; i < vector.length; i++) System.out.print (vector[i] +" * System, out.printin(); for (int i=0; i < numpares; i++) System.out.print (v1[iJ +" "); System.out.printin(); for Cint i=0; i < numimpares j i++) System.out.print (v2[i] +" "); Pagina 2 Hstlee ; Gekina gdadn de SOsuie, KSacn 1 eRe, ~Tx > : Lista.java couguds Se ee. ae. class Lista { private Nodo inicio; private Nodo fin; public Lista) { inicio = null; } fin = null; protected Nodo getinicio() { return inicio; x protected Nodo g tFind { } return Tin; protected void setiInicio(Nodo inicio) { this.inicio = inicio; protected void setFin(Nodo fin) { this.fin = fin; public boolean vacia() { } return inicio == null; public void insertarInicio(intervalo intervalo) {. inicio = new Nodo(null, intervalo, inicio); if (fin == null) { } fin = inicio; } public void insertarFin(intervalo intervalo) { fin = new Nodo(fin, intervalo, null); if Gnicio = null) { i inicio = fin; } public Intervalo eliminartnicio() { Intervalo intervalo = ini ClosgetintervaloQ inicio = anietosgets) ouientes 5 if Cinicio null) { fin = null; } else { ‘inicio.setanterior(nul1); + return intervalo; Pagina 1 Lista. java public Intervalo eliminarFin() { Intervalo intervalo = fin.getintervalo(; Fin = fin.getanteriorQ; if (fin == null) { inicio = null; } else { fin.setsiguiente(null); f return intervalo; ca public boolean esta(intervalo intervalo) { if (this.vaciaQ) { return false; } else { Nodo recorrido = inicio ae while C(recorrido. getsiguiented != null !recorrido.getintervalo() .iguales(intervalo)) { recorrido = recorrido.getSigui eneaO . return . recorrido. getinterval 0().iguales(intervalo); : public Iterador iterador() i return new IteradorCinicio); } public Iterador iteradorHaciaAdelanteQ){ enave(\; } return new IteradorCinicio) ; serades Be } return new eeradorCHin) ; jocotatisontoos 0) private static void dump(Lista[] listas) { GestorIO gestorI0 = GestorI0.getGestorI0(); ee Iterador iteradorHaciaatrasO{t | for Cint i = 0; i < Tistas.length; i++) { gestorio.out("Lista "+ G+i1)+" prereererentrrenst) gestorI0.out("Hacia adelante --- Iterador iteradorHaciaAdelante listas[i] .iteradorHaciaAdelante() ; int posicion = 1; while CiteradorHaciaadelante. hasyextO) { gestori0. out(posicion + ": teradorHaciaAdelante.next() i --\n "\n"); rae posicion++; Pagina 2 deme (asta td gates); Lista. java gestori0.out("Hacia atras -- Iterador iteradorHaciaAtras = listas[i] .iteradorHaciaAtras(); posicion = listas. length; while Citeradoracianeras. hasnext()) i gestorI0.out(posicion + ": "a" iteradorHaciaAtras. previous() » + n")5 posicion--; public static void main(String[] args) { /*GestorIO gestorI0 = Gestor10.getGestor10() ; Lista lista = new hava gestorIO.out("-. Iterador atenadee = Tista, iterador(); int_posicion = while fi eePtaor. hasnextQ) { gestorI0.out(posicion + nm"); iterador.next() + " Fg posicion++; ut("Esta: "+ lista.esta(new jestori Intervalo(-7, ns + "\n for Cint E i < 10; i+) { if G%2 == 0) { lista.insertarInicio(new }else {| 2 P lista. insertarFin(new Intervalo(-i, 1)); Intervalo(-i, i)); } } gestorI0.out("-------' \n") 5 iterador = lista.iteradorQ; posicion = 1; while Citerador.hasNext()) { . gestorI0.out(posicion + ": "+ iterador.nextQ + "\n"); posicion++; Bastorrp,outc"estat “+ lista.esta(new Intervalo(-7, 7)) + "\n' for Cint_i = 0; i < 3; i++) { i ViminariInicioQ; } -eliminarFinQ ; gestorI0. out("-------\n"); Pagina 3 Lista, java iterador = lista.iterador(); posicion = 1; while Citerador.hasNext()) { . gestorI0.out(posicion + ": jterador.next() + "\n"); posicion++; jestorio.out("Esta: " + lista.esta(new Intervalo(-7, 7)) + "\n"); for Cint_i = 0; i < 2; i+4) lista. anininaeiniceue lista.eliminarFinQ; gestorr10.out("- Yterador = lista. iteradorQ; posicion = 1; while Citerador.hasNextQ)) { gestori0.out(posicion + " o iterador.nextQ + "\n"); } posicion++; wr estgrro, ous("Esta: "+ lista.esta(new oe Intervalo(-7, 7)) + "\n" yy GestorI0, gestorro = GestorI0.getGestorI0Q ; Lista[] listas = {new Lista(Q), new Conjunto()}; gestorio. out("\n###Htetete# Inicial dump (1istas); for Cint i = 0; 4, < 10; i++) { if G< elas [0].insertarinicio(new Intervalo(-(i % 4), Ci % 4))); Intervalo(-(i % 4), (i % 4: } els Intervalo(-Ci % 4), Ci % 4))); Intervalo(-(i % 4), Ci M005 listas[1] .insertarInicio(new t listas[0].insertarFin(new listas[1].insertarFin(new t gestorO. out ("\n#HHHeeeHite# Tras insertar TEBE | dump(listas); listas[0] .eliminarinicio(; listas[1] .eliminartnicio(); listas Ot -eliminarFin(); listas[1] .eliminarFin() gestorio. Out (""\ni HER EEE Tras eliminar JHE") 5 dump(1istas) ; Pagina 4 Lista.java Pagina 5 Conjunto. java class Conjunto extends Lista { public veid insertarinicio(intervalo intervalo) { Cithis.esta(intervalo)) super. insertariInicio(intervalo) ; public void insertarFin(Intervalo intervalo) { if Cithis.estaCintervalo)) { : super. insertarFin(intervalo) ; } public Conjunto union(conjunto conjunto) { Conjunto union = new Conjunto(); Iterador iterador = this.iterador(Q; while (iterador.hasNext()) { union. insertarInicio(iterador.next()); jterador = conjunto.iterador( while (iterador.hasnextQ)) { union. insertarInicio(iterador.next()); 3 return union; } public Conjunto interseccion(conjunto conjunto) { Conjunto interseccion = new Conjunto(); Iterador iterador = this.iterador(); while (iterador.hasNext(Q)) { Intervalo intervalo = iterador.next(); if (conjunto.esta(intervalo)) { interseccion.insertarini fie Cintervalo) ; } } return interseccion; private static void dump(Lista[] listas) { GestorI0 gestorI0 = Gestor10.getGestor10() ; for Cint i = 0; i < listas. length; i++) { , * gestorio.out("Lista "+ (i + 1) Seo eieeeeieR\ A gestorI0.out("Hacia adelante - Iterador iteradorHaciaAdelante = listas[i].iteradorhaciaadelante() ; int_posicion = 1; while Citeradordaciaadelante. beagens i) £ gestorI0.out(posicion + jteradorHaciaAdelante.next() + —-\n"); Pagina 1 deny (Ast CT Bakes). Conjunto. java gestorza.oucc"est : "+ conjunto.esta(new Intervalo(-7, 7)) + "\n");*/ GestorI0 gestorIO = Gestor10.getGestor10() ; Lista[] listas = {new Lista(), new Conjunto()}; gestorI0. out ("\niiHtHititit? Inicial HHA") | dump(listas); for Cint i = 0; i< 10; i+) { if G <5) Vistas [0] . insertarInicio(new Intervalo(-(i % 4), Ci % 4))); listas[1].insertarInicio(new Intervalo(-(i % 4), Ci % QD: } else { listas[0].insertarFin(new Intervalo(-(i % 4), (i % 4))); listas[1].insertarFin(new Intervalo(-(i % 4), Gi 802 i } gestorlO.out("\n#HHitiHitit Tras insertar SHEEHAN") 5 dump(listas) ; listas[0] .eliminarInicio(); Jistas[1] .eliminarInicio(); Jistas[0] .eliminarFinQ ; listas[1].eliminarFinQ); gestorIO. out ("\n##ittttttte# Tras eliminar SHEER AAHA\N") | gumpClistas); a Feeioon de Gon odsta yy Grigte Pagina 3 Iterador.java class Iterador { protected Nodo actual; public Iterador(Nodo actual) { this.actual = actual; public boolean hasNext() { } return actual != null; public Intervalo next() { Intervalo intervalo = actual.getIntervalo(); actual = actual getsiguienteds; } return intervalo; public Intervalo previous() { Intervalo intervalo = actual.getIntervalo(); actual = actual.getanterior(); return intervalo; } RESO; Pagina 1 PROGRAMACION ORIENTADA A OBJETOS AVANZADA GRADUADO EN INGENIERIA DEL SOFTWARE p@a Ejercicios 3. PROGRAMACION BASADA EN OBJETOS A partir del proyecto “POOA Ejemplo ContratoLimpieza Enunciado 3, Programacion Basada en Objetos” de la plataforma, realice las siguientes modificaciones: 1. Incorpore a la clase Intervalo la definicién de los siguientes métodos y el correspondiente cédigo de pruebas: public Intervalo (string cadena) // con formato “[xxx, xxx]" de entrada public String toString () // con formato “[xxx, xxx] de salida public boolean distintos(Intervalo intervalo) // devolvera si los intervalos son distintos public double[] valores (double distancia) // ej: [0,5].valores(0.4) => 0.0, 0.4, 0.8, 1.2, 1.6, 2.0, 2.4 u 2.8, 3.2, 3.6, 4.0, 4.4, 4.8 public Intervalo[] troceado(int veces) 7/ e§: [0,5].troceado(4) => [0.0, 1.25], [1.25, 2.5], a (2.5, 3.75], (3.75, 5.0] 2. La clase ContratoLimpieza gestiona el intervalo de horas de limpieza durante los dias del afio de un cliente. Iniciaimente, establece un intervalo de 8:00 2 12:00 todos los dias del ao. Posteriormente, permite anular Ia limpieza de un dia particular y ampliar 0 desplazar el horario de un dia particular. Ademds, calcula el precio del contrato considerando 70 euros la hora en el intervalo inicialmente prefijado, y 90 euros cada hora fuera del intervalo prefijado. Incorpore a la clase ContratoLimpieza la definicién de métodos para anular, desplazar y ampliar todos los intervalos de los dias de un mes dado y el correspondiente cédigo de pruebas. 3. Convierta la implementacién de Mes a una clase que ofrezca exactamente los mismos servicios que su actual implementacién con enumerados. a UNIVERSIDAD POLITECNICA DE MADRID 6 ESCUELA UNIVERSITARIA DE INFORMATICA & LENGUAJES, PROYECTOS Y SISTEMAS INFORMATICOS eae Intervalo. java class Intervalo { coma-1) ; private double minimo; private double maximo; public Intervalo(double minimo, double maximo) { this.minimo = minimo; this.maximo = maximo; 3 public IntervaloQ { this(O i public Intervalo(intervalo intervalo) { . this(intervalo.minimo, intervalo.maximo) ; public Intervalo (string cadena) { int corcheteIni = cadena.indexof('['); int coma = cadena. indexof(','); | String substrmin=cadena.substring(corcheteIni+1, double minimo=Integer.parseInt(subStrmin.trim()); int corcheteFin = cadena.indexof(']'); String 9 subStrMax=cadena. substring(coma+1, corcheteFin-1); "Ts double maximo=Integer.parseInt (subStrMax.trim()); this.minimo = minimo; this.maximo = maximo; public String tostringO{ | . return "[" + this.minimo + "," + this.maximo + t public double longitud() { } return maximo - minimo; public double puntomedio() { } return (maximo + minimo) / 2; public Intervalo copia() { ; return new Intervalo(this); public Intervalo simetrico) { . return new Intervalo(-maximo, -minimo); Pagina 1 Intervalo.java } public void desplazar(double cantidad) { minimo += cantidad; : maximo cantidad; public void escalar(double escala) { 7 double nuevaLongitud = this.longitud() * escala; double puntomedio = this.puntomedio(); minimo = puntoMedio - nuevaLongitud /’2; maximo = puntoMedio + nuevatongitud / 2; } public boolean incluye(double punto) { : return minimo <= punto && punto <= maximo; public boolean incluye(interyalo intervalo) { return this.incluyeCintervalo.minimo) && this. incluyeCintervalo.maximo) ; public boolean iguales(intervalo intervalo) { return intervalo.minimo && ‘intervalo.maximo; } public Intervalo interseccion(intervalo intervalo) { if (this.incluyeCintervalo)) { return intervalo.copia(); } else if Cintervalo.incluye(this)) { return this-coplaQs . } else if (this.incluyeCintervalo.minimo)) { return new Intervalo(intervalo.minimo, this.maximo) ; } else if (this. incluyeCintervalo.maximo)) { . return new Intervalo(this.minimo, Antervalo.maximo) ; else { 5 return null; } public Intervalo desplazado(double cantidad) { Intervalo intervalo = this.copia(); intervalo.desplazar(cantidad) ; return intervalo; + public boolean distintos (Intervalo intervalo) { _ return minimo != intervalo.minimo || maximo != Antervale.maxino; public double[] valores (double distancia) { Pagina 2 Intervalo.java double [] intervalo = new double [2]; intervalo[0] = this.minimo; intervalo[1] = this.maximo; dou! ued vectorValores = new double [(int) Math.round((intervalo[1] - intervalo[0])/distancia)]; int posiciones = 0; for (double i= intervalo[0]; i maximo) { gestorI0.out("El minimo no puede ser mayor que el maximo\n\n"); } } while (minimo > maximo); public void recogercadena() { Gestor1O gestor1O = Gestor10.getGestor10() ; gestorIo.instring("Introduce el intervalo CLxxx, xxx] + public static void main(String[] args) { GestorIO gestorI0 = GestorI0.getGestorI0(); Intervalo intervalo = new Intervalo( ; intervalo.recoger (); //Intervalo intervaloDos = new Intervalo (9,20); 7//intervalo.recogerCadena() ; //system.out.printin ("El intervalo es intervalo.toStrin O); . //System.out.printin ("El intervalo es el [9, 20]?: " + intervalo.iguales(intervaloDos)); A //system.out.printin ("El intervalo es distinto al [9, 20]?: " + intervalo.distintos(intervaloDos)) ; //intervalo.valores (0.4); ‘intervalo. troceado(4) ; * gestorI0.out("\nLongitud: " + ‘intervalo. longi tud()); gestori0.out("\nPunto medio: intervalo.puntomedio()) ; . jestorI0.out("\nSimetrico: " + ‘intervalo.simetricoQ .tostring(, Intervalo copia ntervalo.copiaQ; intervalo.desplazar (7.7); gestorI0.out("\nDesplazado 7. intervalo.tostring()); ; . gestorI0.out("\nIncluye 3.3? "+ ‘intervalo.incluye(3.3)); gestorI0.out("\nIncluye al original? " + intervalo.incluye(copia)) ; gestorI0.out("\n"); + + Pagina 4 Intervalo. java Pagina 5 ContratoLimpieza.java class ContratoLimpieza { private final int anio; private Intervalo[] horarios; private static final Intervalo PREFIJADO = new Intervalo(8.0, 12.0); private static final double PRECIO_PREFIJADO = 70. Private static final double PRECIO_EXTRAORDINARIO = 90.0; public ContratoLimpiezaCint anio) { this.anio = anio; eorcantiicPocd horarios = new Intervalo[Fecha.diasanio(anio)]; for Cint i = 0; i < horarios. len ie) } horarios[i] = PREFIJADO.copiaQ); + public void anular(Fecha fecha) { if (fecha.getanio() == anio) { horarios[fecha.diasTranscurridosanio()] = nul; } } public void ampliar(Fecha fecha, double factor) { if Cfecha.getanioQ) == anio && horarios[fecha.diasTranscurridosanio()] != null) { horarios[fecha.diasTranscurridosanio()].escalar (factor); } public void desplazar(Fecha fecha, double desplazamiento) if (fecha.getanio() == anio && horarios[fecha.diasTranscurridosAnio()] != null) { horarios[fecha.diasTranscurridosanio()] .desplazar(desplazamiento) = null; } 3 public void anularMes(Fecha fecha) { Mes mes = fecha.getMes(); if (fecha.getanioQ) == anio) for Cint i=0; ic mes.getbias(); i++) . horarios[fecha.diasTranscurridosanio()+i] 3 } public void ampliarmes(Fecha fecha, double factor) { Pagina 1 ContratoLimpieza.java Mes mes = fecha.getmes(); if (fecha.getanio() == anio && horarios[fecha.diasTranscurridosanio()] != null) { for Cint i=0; i< mes.getDias(Q); i++) horarios[fecha.diasTranscurridosanio()+i].escalar(factor); } public void desplazarMes(Fecha fecha, double desplazamiento) { Mes mes = fecha.getmes(); if Cfecha.getanio() == anio && horarios[fecha.diasTranscurridosanio()] != null) { . for Cint i=0;" i0) && (aux < array[j-1])){ array[j] = array[j - 1]; j-=j- } aerey ta = aux; panel .escribir(array); this.esperar(); 1} i < array.length; i++) arraylil; Pagina 1

Vous aimerez peut-être aussi