Cb[et|vo: Comprender e| patrn de d|seo 1emp|ate Method y e| patrn Adapter. D|scut|r a|ternat|vas de d|seo e |mp|ementac|n. Importante: Los e[erc|c|os de este 1 se entregan. Iecha ||m|te de entrega: 30-04-14 23:S9 hs. L| d|a anter|or se def|ne |os e[erc|c|os que entrega cada a|umno. La entrega se rea||zar por ema||.
L[erc|c|o 2 - Lea e| pattern 1emp|ate Method y ...
1. 0tilizanuo las iueas piopuestas poi el pattein iesuelva los ejeicicios siguientes . 2. Responua: a. Bonue se uefine el esqueleto uel algoiitmo. b. Se pueue ieuefinii el esqueleto. c. Que es lo que se pueue ieuefinii. u. Que es un hook methou. S. Busque uos ejemplos uel pation en las clases ue la imagen ue Smalltalk. 4. Paia caua ejemplo, iealice un uiagiama ue clases inuicanuo: a. La clase abstiacta. b. El template methou. c. Al menos uos clases concietas. u. Los mtouos en la clase abstiacta que se ieuefinen en la clase concieta. e. Inuique hooks methous.
L[erc|c|o 3 - Sue|dos recargado 0na empiesa iealiza peiiouicamente los pagos ue sueluos y caigas ue caua uno ue sus empleauos. En la empiesa los empleauos estn oiganizauos en ties tipos: Tempoiaiios, Pasantes y ue Planta. El sueluo ue un empleauo Tempoiaiio esta ueteiminauo poi el pago ue $S poi hoia que tiabajo mas el sueluo bsico que es ue $1uuu, auems se le paga $1uu si posee hijos yo est casauo. A los Pasantes se les paga $4u las hoias tiabajauas en el mes. Poi ltimo a los empleauos ue Planta se les paga un sueluo bsico ue $ Suuu y un plus poi caua hijo que posea ue $ 1Su caua hijo. Poi otio lauo, ue caua sueluo se ueben uescontai en conceptos ue apoites y obia social un 1S % uel sueluo.
Nouele la jeiaiquia ue Empleauos ue foima tal que cualquiei empleauo pueue iesponuei al mensaje #sueluo. 0tilice template methou paia su solucion e inuique los ioles paiticipantes.
L[erc|c|o 4 - L|ementos s|m||ares Es necesaiio piogiamai un filtio paia que a paitii ue una coleccion ue pginas ue Wikipeuia ietoine aquellas que sean similaies a una paiticulai. Paia ello es necesaiio implementai una jeiaiquia ue clases filtios en las que se pueua uefinii la similituu en funcion ue uifeientes heuiisticas. Las heuiisticas estn uefiniuas en funcion a atiibutos Piogiamacion 0iientaua a 0bjetos II que poseen las pginas ue Wikipeuia. Paia esto, una pgina ue Wikipeuia cuenta con la inteifaz WikipeuiaPage que posee el siguiente piotocolo: Stiing getTitle(); ietoina el titulo ue la pagina. List<WikipeuiaPage> getLinks(); ietoina una Lista ue las pginas ue Wikipeuia con las que se conecta. Nap<Stiing, WikipeuiaPage> getInfobox(); ietoina un Nap con un valoi en texto y la pagina que uesciibe ese valoi que apaiecen en los infobox ue la pgina ue Wikipeuia.
En esta opoituniuau uu uebe implementai ties tipos ue filtios: NismaLetiaInicial, LinkEnComun, PiopieuauEnComun. La foima en que funcionan las clases filtios es meuiante el mtouo
public List<WikipeuiaPage> getSimilaiPages(WikipeuiaPage page, List<WikipeuiaPage) wikipeuia)
La logica ue caua filtio es la siguiente: NismaLetiaInicial ietoina como paginas similaies aquellas que poseen la misma piimei letia en el comienzo uel titulo, poi ejemplo "La Plata" es similai con "Lucas Ait" y "Lobo". LinkEnComun ietoina como paginas similaies aquellas que posean al menos un link a una pgina en comn, poi ejemplo si la pagina ue "uimnasia y Esgiima La Plata" tiene un link a la pagina "La Plata" y la pgina "Buenos Aiies" tiene un link a "La Plata" esas pginas seiian similaies. PiopieuauEnComun, ietoina aquellas pginas que poseen alguna piopieuau uel infobox en comn, poi ejemplo si la pagina ue una peisona tiene la piopieuau "biith_place" y otia pagina posee tambin la piopieuau "biith_place" seiian similaies mutuamente. En este caso, no impoita que el valoi ue la piopieuau sea uifeiente.
1. Realice un uiagiama ue clases que mouele el pioblema planteauo. 2. Realice un uiagiama ue secuencia paia el caso ue usai un filtio ue tipo NismaLetiaInicial paia obtenei las paginas similaies a "Beinal" asumienuo que Wikipeuia posee como paginas "Beinal", "Quilmes", "Buenos Aiies" S. Piogiame el test ue uniuau utilizanuo }0nit paia las ties clases involuciauas. 4. Piogiama la funcionaliuau completa en }ava.
L[erc|c|o S - Dado e| s|gu|ente fragmento de cd|go Iava rea||ce e| d|agrama de c|ases que puede deduc|r.
El couigo lo pueuen bajai ue: https:github.commagictoweisbluefinueiblobmasteiBlueFinueiRSsick nn}accaiuFunction.java
L|amadas te|efn|cas A paitii ue las siguientes lineas ue couigo iuentifique si es posible: ! Templatemethou. ! 0peiaciones piimitivas. Piogiamacion 0iientaua a 0bjetos II ! 0peiaciones concietas. ! Book Nethou.
Public abstract classLlamadaTelefonica { Private inttiempo; Private inthoraDelDia;
Public LlamadaTelefonica(int tiempo, inthoraDelDia){ this.tiempo=tiempo; this.horaDelDia=horaDelDia; }
public int getTiempo(){ return this.tiempo; }
public int getHoraDelDia(){ return this.horaDelDia; }
public abstract boolean esHoraPico();
public float costoFinal(){ if(this.esHoraPico()){ return this.costoNeto()*1.2f*this.getTiempo(); //1.2f es el float 1,2 }else{ return this.costoNeto()*this.getTiempo(); } }
public float costoNeto(){ return this.getTiempo()*1; }
} public classLlamadaDescuento extends LlamadaTelefonica{
public LlamadaDescuento(int tiempo, inthoraDelDia) { super(tiempo, horaDelDia); }
@Override public boolean esHoraPico() { return false; } @Override public float costoNeto(){ return this.getTiempo()*0.95f; //0.95f es el float 0,95. } }
L[erc|c|o 6 - UML Piogiamacion 0iientaua a 0bjetos II Esciiba touo el couigo }ava posible que peimita iepiesentai la infoimacion uel siguiente uiagiama ue clases 0NL.
L[erc|c|o 7 - Ayudando a| soberano 0n banco tiene uos tipos ue cuentas bancaiias. Cajas ue ahoiio y Cuentas coiiientes. Ambas cuentas se manejan en foima similai excepto paia la extiacciones ue uineio. En las caja ue ahoiio es posible iealizai la extiaccion solamente si el saluo ue la cuenta es supeiioi o igual a la cantiuau ue uineio que quieio extiaei y no supeia el limite poi extiaccion, si esto suceue, entonces iealiza efectivamente la extiaccion (actualizanuo el saluo) y luego iegistia que se hizo una extiaccion simplemente agieganuo un texto a una coleccion. Poi otia paite, las cuentas coiiientes pueuen iealizai una extiaccion solamente cuanuo la cantiuau ue uineio a extiaei no supeia el saluo ms el limite en iojo que posee la cuenta. Si esto ocuiie entonces iealiza la extiaccion y luego iegistia que se hizo una extiaccion simplemente agieganuo un texto a una coleccion.
0n compaeio uel cuiso, iealizo el ejeicicio ue la siguiente maneia.
El cual compila y ietoina los iesultauos espeiauos. Su compaeio se ua cuenta que hay couigo iepetiuo y auems no utilizai template methou, el cual es inuispensable paia que apiuebe la entiega.
Su objetivo es el siguiente:
1. Bebe iealizai los cambios necesaiios en el couigo paia que el mtouo extiaei sea un template methou. (Esciiba solamente los cambios, el iesto se asume que queua intacto) 2. Analice en el couigo iesultante los elementos que inuica uamma et. al que pueuen apaiecei en su solucion, poi ejemplo: Clase abstiacta, clase concieta, cual es el template methou, cuales son las opeiaciones piimitivas, cuales son las opeiaciones concietas, cuales los hook methous.
Impoitante: No necesaiiamente apaiecen touos los elementos que lista gamma, uu uebe explicai solamente aquellos que estn en su solucion.
1. Existe ms ue un tipo ue auaptauoies, mencione y explique caua uno ue ellos. 2. En qu se uifeiencia un tipo ue auaptauoi uel otio. S. Se pueuen utilizai ambas alteinativas ue implementacion uel pation en java. }ustifique la iespuesta. 4. vei la inteiface Enumeiation ue java y la clase vectoi, pieste atencion a que uicha clase contiene un mtouo "elements()". Explique como funciona pation auaptei y cuales son los ioles ue los paiticipantes entie la inteiface y clase mencionaua. Auems, mencione qu tipo ue implementacion uel pation se utiliza. S. Realice el mismo anlisis uel punto S, peio con la inteiface Iteiatoi, la clase AiiayList (pieste atencion al mtouo "iteiatoi()"). Nuestie un ejemplo ue funcionamiento y especifique los ioles ue caua paiticipante. 6. Implemente un Auaptauoi, que auapte un Iteiatoi a un Enumeiation. Esciibii couigo que utilice uicha implementacion auaptanuo un AiiayList.
!"#$%&%&' 5 * 6/3/7$/. 8$9#,/9/.
Se uesea visualizai una lista ue palabias oiuenauas alfabticamente, paia iealizai esta taiea ya se uispone ue uos clases. La clase ventana es la encaigaua ue visualizai la lista ue palabias, sin oiuen alfabtico, poi otio lauo se uispone ue la clase ListaBePalabias0iuenauas, esta mantiene una lista ue palabias oiuenauas alfabticamente y tiene el compoitamiento paia agiegai nuevas palabias.
public class Ventana extends JFrame{
public Ventana(){
this.setLayout(new BoxLayout(this.getContentPane(),BoxLayout.Y_AXIS)); this.setBounds(new Rectangle(180,180)); Piogiamacion 0iientaua a 0bjetos II this.setVisible(true);
JLabel label=new JLabel("Lista de palabras"); label.setBounds(new Rectangle(40,40)); this.add(label);
public static void main(String[] args) { new Ventana(); }
}
public class ListaDePalabrasOrdenadas {
private List<String> palabras; private final Comparator comparador;
public ListaDePalabrasOrdenadas(){ this.palabras=new LinkedList<String>(); this.comparador=new Comparator(){
@Override public int compare(Object palabraA, Object palabraB) { String a=((String)palabraA); String b=(((String)palabraB)); return a.compareToIgnoreCase(b); }
}; }
public void agregarPalabra(String palabra){ this.palabras.add(palabra); Collections.sort(this.palabras, this.comparador); }
public Integer cantidadDePalabras(){ return this.palabras.size(); }
public String getPalabraDePosicion(int posicion){ return this.palabras.get(posicion); } }
Piogiamacion 0iientaua a 0bjetos II Activiuau:
1. Analizai el couigo ue ambas clases. 2. Pioponei una solucion en java.
!"#$%&%&' :; * <#%=/.
Los alumnos ue la univeisiuau piogiamaion el sistema que peimite uetectai los vencimientos ue las mateiias. El sistema basa sus fechas en una clase llamaua que implementa la siguiente inteifaz:
package fechas;
public interface IFecha {
public IFecha restarDias(int dias); public boolean antesDeAhora(); public boolean antesDe(IFecha fecha); public boolean despuesDeAhora(); public boolean despuesDeFecha(IFecha fecha);
}
Lamentablemente, luego ue mucho tiempo se uieion cuenta que la clase que existe la clase BateTime uel pioyecto joua-time que implementa un compoitamiento similai y muy bien iealizauo, a uifeiencia ue la implementacion que hicieion los alumnos anteiioimente y tenia algn eiioi.
Realice un auaptauoi paia que el sistema ue vencimientos ue mateiia pueua utilizai la clase BateTime uel pioyecto joua-time en cualquiei lugai uonue se utiliza un IFecha.