Skip to content

Instantly share code, notes, and snippets.

@rje1974
Last active September 24, 2021 12:09
Show Gist options
  • Save rje1974/c574c32bfa1106a41b54193dc01b0c92 to your computer and use it in GitHub Desktop.
Save rje1974/c574c32bfa1106a41b54193dc01b0c92 to your computer and use it in GitHub Desktop.
/*
2- Piso, que debe tener:
un constructor debe recibir el nombre de ese piso con formato de texto. Por ejemplo: "primer piso" y guardarlo
en una propiedad nombre para poder usarla posteriormente. LIQUIDADO.
un método pushDepartamento y getDepartamentos para agregar departamentos y obtener el listado completo
de los departamentos de ese piso (ambos usan una propiedad interna departamentos para guardar y leer). LIQUIDADO
*/
/*
3- Departamento: LIQUIDADO
el constructor debe recibir el nombre de ese departamento con formato de texto. Por ejemplo: "mi depto".
debe tener un método getName() que devuelva el nombre del departamento.
*/
// crear las clases Edificio, Piso y Departamento aquí
class Departamento {
nombre: string
constructor(nombreCtrl:string){
this.nombre = nombreCtrl
}
getName(){
return this.nombre
}
}
class Piso {
nombre:string;
departamentos:Departamento[] = [];
constructor(nombreCtrl:string){
this.nombre = nombreCtrl
}
pushDepartamento(cargaDepartamentoEnPiso:Departamento){
return this.departamentos.push(cargaDepartamentoEnPiso)
}
getDepartamentos(){
return this.departamentos
}
}
/*
1- Edificio, que debe tener:
un constructor que reciba un array de Piso y lo guarde en una propiedad. LIQUIDADO
un método addDepartamentoToPiso(nombreDePiso:string, departamento:Departamento) que reciba un Departamento y
lo ubique en el piso con el nombre indicado, si no existe un piso con ese nombre debe mostrar un error.
un método getDepartamentosByPiso(nombreDePiso:string) que devuelva todos los Departamento(s) de un piso.
*/
class Edificio {
arrayDePisos: Array<Piso> = [];
constructor(arrayDePisosCtrl:Array<Piso>){
this.arrayDePisos = arrayDePisosCtrl
}
addDepartamentoToPiso(nombreDePiso:string, departamento:Departamento){
// const nuevoPiso = new Piso(nombreDePiso)
// const nuevoDptoEnPiso = nuevoPiso.pushDepartamento(departamento)
// return nuevoDptoEnPiso
const resultado = this.arrayDePisos.find( x => x.nombre === nombreDePiso )
if (resultado === undefined) {
console.log("Esto no esta andando")
} else {
resultado.pushDepartamento(departamento)
}
}
getDepartamentosByPiso(nombreDePiso:string){
const resultado = this.arrayDePisos.find( x => x.nombre === nombreDePiso )
return resultado.getDepartamentos()
}
// function main(){
// const edificioLautario = new Edificio([])
// const pruebaDepartamentoA = new Departamento("A");
// const pruebaDepartamentoB = new Departamento("B");
// const pruebaDepartamentoC = new Departamento("C");
// const pruebaPisoSexto = new Piso("Sexto piso")
// const pruebaPisoOctavo = new Piso("Octavo piso")
// const pruebaPisoAgregaDptoA = pruebaPisoSexto.pushDepartamento(pruebaDepartamentoA)
// const pruebaPisoAgregaDptoB = pruebaPisoSexto.pushDepartamento(pruebaDepartamentoB)
// const pruebaPisoAgregaDptoC = pruebaPisoSexto.pushDepartamento(pruebaDepartamentoC)
// const agregadoPisoEdificio = edificioLautario.arrayDePisos.push(pruebaPisoSexto,pruebaPisoOctavo)
// // Prueba
// console.log(pruebaDepartamentoA)
// console.log(pruebaPisoSexto)
// console.log(edificioLautario.arrayDePisos[0].departamentos[2])
// }
// main()
// no modificar este test
}
function testClaseEdificio() {
const unPiso = new Piso("planta baja");
const otroPiso = new Piso("primer piso");
const unEdificio = new Edificio([unPiso, otroPiso]);
const deptoUno = new Departamento("depto uno");
const deptoDos = new Departamento("depto dos");
const deptoTres = new Departamento("depto tres");
unEdificio.addDepartamentoToPiso("planta baja", deptoUno);
unEdificio.addDepartamentoToPiso("planta baja", deptoDos);
unEdificio.addDepartamentoToPiso("planta baja", deptoTres);
const deptos = unEdificio.getDepartamentosByPiso("planta baja");
const deptosEmpty = unEdificio.getDepartamentosByPiso("primer piso");
const deptosBOBI = unEdificio.getDepartamentosByPiso("tercer piso");
const deptos2 = deptos
console.log("Un piso",unPiso)
console.log("")
console.log("Un piso",unPiso.getDepartamentos())
console.log("")
console.log("Un unEdificio",unEdificio)
console.log("")
console.log("Deptos",deptos)
console.log("")
console.log("Deptos",deptos)
console.log("")
console.log("DeptosEmpty",deptosEmpty)
// if (
// Array.isArray(deptosEmpty) &&
// deptosEmpty.length == 0 &&
// deptos.length == 3 &&
// deptos[2].getName() == "depto tres"
// ) {
// console.log("testClaseBandaApartment passed");
// } else {
// throw "testClaseBandaApartment not passed";
// }
}
function main() {
testClaseEdificio();
}
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment