====== Examen Final - 75.07. Algoritmos y Programación III ====== **Cátedra:** Fontela **Fecha:** 4ta Oportunidad - (1er Cuatrimestre 2007\\ **Día:** 03/08/2007 Esta página está incompleta; podés ayudar completando el material. ===== Enunciado ===== {{:materias:75:07:final_fontela.jpeg|:materias:75:07:final_fontela.jpeg}} public void quitarPropiedad(Propiedad p){ if(propiedades == null) return; //búsqueda de p en propiedades for(pos = 0; pos < propiedades.lenght; pos++){ if(propiedades[pos] == p) break; if(pos == propiedades.lenght-1) pos = -1; } if(pos > -1) propiedades[pos] = null; } public void imprimirDatos(){ System.out.println("Inmobiliaria: " + this.getNombre()); if (propiedades != null) for( int i=0; i < cantidadPropiedades; i++) if(propiedades[i] != null) propiedades[i].imprimirDatos(); } public double beneficioEsperadoCartera(){ double beneficio = 0; double comisionesCobradas = (this.comisionClienteCompra + this.comisionClienteVenta) / 100.0; for( int i=0; i < cantidadPropiedades; i++) if(propiedades[i] != null){ int precio = propiedades[i].getPrecio(); if(!propiedades[i].getVendido()){ beneficio += precio * comisionesCobradas - propiedades[i].comisionVendedor(); } return beneficio; } A continuación: - Se le pide evitar los "if (propiedades[i] 1= null)", mediante la implementación del patrón Null Object. Este patrón consiste en crear una clase descendiente de la clase que corresponda para manejar el caso de las referencias nulas, de modo que el polimorfismo resuelva todo sin necesidad de sentencias "if". Tómese un tiempo para analizarlo. - Especifique los pasos que seguiría para realizar la refactorización solicitada, sin omitir ninguno por pequeño que sea. - Muestre la clase que agregó, completa, y cómo quedarían la últimas versiones de los métodos de más arriba. - La clase que agregó, ¿cuántas instancias necesita tener?