Seguimos buscando a Arshak. Ayudanos compartiendo!
Encuesta no oficial de docentes
Resultados de la encuesta no oficial de docentes
Probaste el SIGA Helper?

Donar $100 Donar $200 Donar $500 Donar mensualmente


Enviar respuesta 
 
Calificación:
  • 0 votos - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Buscar en el tema
[APORTE] [Diseño de Sistemas] FINAL 21/02/2015
Autor Mensaje
reLlene Sin conexión
Profesor del Modulo A
...
*****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 307
Agradecimientos dados: 371
Agradecimientos: 63 en 35 posts
Registro en: Aug 2012
Mensaje: #1
[APORTE] [Diseño de Sistemas] FINAL 21/02/2015 Finales Diseño de Sistemas
Comparto el último final que se tomó el sab pasado y ya me pongo a resolverlo a ver qué sale !!

Espero que le sirva a más de uno,
Saludos!!

Spoiler: Mostrar
   
Spoiler: Mostrar
   
Spoiler: Mostrar
   
Otros adjuntos en este tema
.jpg  DSC_0085.JPG ( 1,15 MB / 2180) por reLlene
.jpg  DSC_0082.JPG ( 492,86 KB / 1994) por reLlene
(Este mensaje fue modificado por última vez en: 13-05-2015 09:54 por CarooLina.)
24-02-2015 18:47
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] reLlene recibio 9 Gracias por este post
OrnellaSnm (24-02-2015), Nacho85 (24-02-2015), agusbrand (25-02-2015), rod77 (25-02-2015), Baron Bomadil (25-02-2015), juanm_ (27-02-2015), CarooLina (12-05-2015), repuken2 (17-02-2016), Luciacg (14-12-2016)
Baron Bomadil Sin conexión
Militante
We are out of coffee
***

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 94
Agradecimientos dados: 16
Agradecimientos: 9 en 9 posts
Registro en: Jul 2013
Mensaje: #2
RE: [APORTE] [Diseño de Sistemas] FINAL 21/02/2015
Gracias por el aporte! Alguno sabe si se pueden llevar apuntes al final? En la cursada con Dodino se podía hacer para los parciales.
Saludos
25-02-2015 23:02
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
rod77 Sin conexión
Presidente del CEIT
:o
********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 1.164
Agradecimientos dados: 154
Agradecimientos: 498 en 217 posts
Registro en: Mar 2011
Mensaje: #3
RE: [APORTE] [Diseño de Sistemas] FINAL 21/02/2015
No, no se puede tener nada.
25-02-2015 23:53
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
reLlene Sin conexión
Profesor del Modulo A
...
*****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 307
Agradecimientos dados: 371
Agradecimientos: 63 en 35 posts
Registro en: Aug 2012
Mensaje: #4
RE: [APORTE] [Diseño de Sistemas] FINAL 21/02/2015
Spoiler: Mostrar
   
Spoiler: Mostrar
   
(25-02-2015 23:02)Baron Bomadil escribió:  Gracias por el aporte! Alguno sabe si se pueden llevar apuntes al final? En la cursada con Dodino se podía hacer para los parciales.
Saludos

Baron Bomadil también me surgio esa duda a mi pero, como dice rod77, no se puede en el final

Tengo mis dudas con la parte de Diseño de Objetos, la base de la que partir para después pasar al modelo de datos, dejo mi resolución pero DESDE YA me truena por todos lados que no estoy haciendo lo correcto Confused

Paso a explicarme, planteo un composite entre los almacenes (reales y ficticios/fantasmas) ya que según el enunciado dice que los fantasmas agrupan a los primeros pero NO contienen stock. Esto me da a entender que no se pueda consultar por el stock de los reales que agrupa algún fantasma especifico, es decir que no cuente con dicho metodo pero no me la juego, sólo me da a entender eso...
Respecto del punto 3 strategize los diferentes tipos de tranferencias porque, como dice el enunciado, estos pueden cambiar y el comportamiento de c/u se implementará en c/u de las subclases. Encuentro la necesidad de pasarle los 3 parametros que puse en el diagrama (Almacen, cant de produtos y el Producto en cuestion).

Por cierto, nótese mi while asqueroso en cantStockTotalDe(), esta claro que estoy bardeando pero a mi cabeza le cuesta plantear soluciones no procedurales muchas veces wall

Objeciones SUPER bienvenidas!!!yuk
(Este mensaje fue modificado por última vez en: 13-05-2015 09:48 por CarooLina.)
26-02-2015 01:10
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
reLlene Sin conexión
Profesor del Modulo A
...
*****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 307
Agradecimientos dados: 371
Agradecimientos: 63 en 35 posts
Registro en: Aug 2012
Mensaje: #5
RE: [APORTE] [Diseño de Sistemas] FINAL 21/02/2015
(26-02-2015 01:10)reLlene escribió:  
(25-02-2015 23:02)Baron Bomadil escribió:  Gracias por el aporte! Alguno sabe si se pueden llevar apuntes al final? En la cursada con Dodino se podía hacer para los parciales.
Saludos

Baron Bomadil también me surgio esa duda a mi pero, como dice rod77, no se puede en el final

Tengo mis dudas con la parte de Diseño de Objetos, la base de la que partir para después pasar al modelo de datos, dejo mi resolución pero DESDE YA me truena por todos lados que no estoy haciendo lo correcto Confused

Paso a explicarme, planteo un composite entre los almacenes (reales y ficticios/fantasmas) ya que según el enunciado dice que los fantasmas agrupan a los primeros pero NO contienen stock. Esto me da a entender que no se pueda consultar por el stock de los reales que agrupa algún fantasma especifico, es decir que no cuente con dicho metodo pero no me la juego, sólo me da a entender eso...
Respecto del punto 3 strategize los diferentes tipos de tranferencias porque, como dice el enunciado, estos pueden cambiar y el comportamiento de c/u se implementará en c/u de las subclases. Encuentro la necesidad de pasarle los 3 parametros que puse en el diagrama (Almacen, cant de produtos y el Producto en cuestion).

Por cierto, nótese mi while asqueroso en cantStockTotalDe(), esta claro que estoy bardeando pero a mi cabeza le cuesta plantear soluciones no procedurales muchas veces wall

Objeciones SUPER bienvenidas!!!yuk
(Este mensaje fue modificado por última vez en: 26-02-2015 17:36 por reLlene.)
26-02-2015 17:35
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Ivanorr1s Sin conexión
Militante
AutoMagically
***

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 93
Agradecimientos dados: 21
Agradecimientos: 65 en 31 posts
Registro en: Jan 2012
Mensaje: #6
RE: [APORTE] [Diseño de Sistemas] FINAL 21/02/2015
Hola! Una opción para deshacerte del 'while feo' sería:



#AlmacenReal extends Almacen
>> stockDe(Producto unProducto) {
// retorna la cantidad del producto pasado por parámetro
}
>> esCasaCentral() {
return this.almacenSuperior <> null;
}

>> stockTotalDe(Producto unProducto) {
var stock = this.stockDe(unProducto);
if(this.esCasaCentral()) {
return stock;
} else {
return stock + this.almacenSuperior.stockTotalDe(unProducto);
}

#AlmacenFantasma extends Almacen
>> stockDe(Producto unProducto) {
return this.almacenes.stream().map((almacen) -> almacen.stockDe(unProducto)).sum();

>> stockTotalDe(Producto unProducto) {
// si quisiéramos saber el stockTotal de las jerarquías de cada almacén que comprenda a un almacen ficticio: (no se pide)
return this.almacenes.stream().map((almacen) -> almacen.stockTotalDe(unProducto)).sum();
}
// o bien, que no haga nada, dado que no tiene stock.. de todos modos, el enunciado dice que "consolida el stock de sus almacenes", asi que no creo que esté mal implementar esto.




Respecto de las maneras de reaccionar frente a las transferencias, al ver que siempre actúan de la misma manera si hay stock, podemos delegar eso en el almacén, y delegar la responsabilidad de actuar frente al faltante del almacén superior a la regla de transferencia seteada. El problema de este approach es que estamos dividiendo una misma responsabilidad en 2 actores distintos, ergo, si cambiase alguna de las reglas respecto de cómo actuar si el almacen superior tiene stock, habría que modificar la clase Almacen y eso no está bueno.



#abstract TipoTransferencia
>> solicitarTransferencia(Producto unProducto, int cantidad, Almacen almacen, Almacen solicitante) {
if(almacen.stockDe(unProducto) >= cantidad) {
almacen.transferir(unProducto, cantidad, solicitante);
} else {
throw new NoTieneStockException();

#SolicitaASuperior extends TipoTransferencia
>> solicitarTransferencia(Producto unProducto, int cantidad, Almacen almacen, Almacen solicitante) {
try {
super().solicitarTransferencia(unProducto, cantidad, almacen, solicitante);
} catch e {
almacen.getSuperior().solicitarProducto(unProducto, cantidad, almacen, solicitante);
}

#InformaFaltanteStock extends TipoTransferencia
>> solicitarTransferencia(Producto unProducto, int cantidad, Almacen almacen, Almacen solicitante) {
try {
super().solicitarTransferencia(unProducto, cantidad, almacen, solicitante);
} catch e {
System.out.println("Falta " + unProducto.descripcion() + ", papá\n");
}

#SolicitaAAlmacenDepteDeMayorStock extends TipoTransferencia
>> solicitarTransferencia(Producto unProducto, int cantidad, Almacen almacen, Almacen solicitante) {
try {
super().solicitarTransferencia(unProducto, cantidad, almacen, solicitante);
} catch e {
// acá tengo dudas, es decir, el enunciado dice "solicita al almacen dependiente que tenga mayor stock para dicho producto",
// entonces... qué vendría a ser "dependiente" ? El superior? los almacenes que agrupa? mMmmMmmMmmMMM :'/

}
(Este mensaje fue modificado por última vez en: 27-02-2015 02:15 por Ivanorr1s.)
27-02-2015 01:47
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] Ivanorr1s recibio 1 Gracias por este post
reLlene (27-02-2015)
reLlene Sin conexión
Profesor del Modulo A
...
*****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 307
Agradecimientos dados: 371
Agradecimientos: 63 en 35 posts
Registro en: Aug 2012
Mensaje: #7
RE: [APORTE] [Diseño de Sistemas] FINAL 21/02/2015
(27-02-2015 01:47)Ivanorr1s escribió:  Hola! Una opción para deshacerte del 'while feo' sería:



#AlmacenReal extends Almacen
>> stockDe(Producto unProducto) {
// retorna la cantidad del producto pasado por parámetro
}
>> esCasaCentral() {
return this.almacenSuperior <> null;
}

>> stockTotalDe(Producto unProducto) {
var stock = this.stockDe(unProducto);
if(this.esCasaCentral()) {
return stock;
} else {
return stock + this.almacenSuperior.stockTotalDe(unProducto);
}

#AlmacenFantasma extends Almacen
>> stockDe(Producto unProducto) {
return this.almacenes.stream().map((almacen) -> almacen.stockDe(unProducto)).sum();

>> stockTotalDe(Producto unProducto) {
// si quisiéramos saber el stockTotal de las jerarquías de cada almacén que comprenda a un almacen ficticio: (no se pide)
return this.almacenes.stream().map((almacen) -> almacen.stockTotalDe(unProducto)).sum();
}
// o bien, que no haga nada, dado que no tiene stock.. de todos modos, el enunciado dice que "consolida el stock de sus almacenes", asi que no creo que esté mal implementar esto.




Ivanorr1s gracias por tu aporte. No puedo creer cómo obvie esa solución recursiva TAN simple en lugar del while !!

Te corrijo acá, donde ponias distinto que debe ir igual, a ver si alguien se confunde



#Almacen
>> esCasaCentral() {
return this.almacenSuperior == null;
}



y aprovecho para preguntarte por el método steam() cuando haces:
"return this.almacenes.stream().map((almacen) -> almacen.stockDe(unProducto)).sum();", entiendo que hay que iterar la coleccion de almacenes y hacer la sumatoria pero map no aplicaba una funcion sobre una coleccion? Como seria el trabajo aca?

(27-02-2015 01:47)Ivanorr1s escribió:  Respecto de las maneras de reaccionar frente a las transferencias, al ver que siempre actúan de la misma manera si hay stock, podemos delegar eso en el almacén, y delegar la responsabilidad de actuar frente al faltante del almacén superior a la regla de transferencia seteada. El problema de este approach es que estamos dividiendo una misma responsabilidad en 2 actores distintos, ergo, si cambiase alguna de las reglas respecto de cómo actuar si el almacen superior tiene stock, habría que modificar la clase Almacen y eso no está bueno.



#abstract TipoTransferencia
>> solicitarTransferencia(Producto unProducto, int cantidad, Almacen almacen, Almacen solicitante) {
if(almacen.stockDe(unProducto) >= cantidad) {
almacen.transferir(unProducto, cantidad, solicitante);
} else {
throw new NoTieneStockException();

#SolicitaASuperior extends TipoTransferencia
>> solicitarTransferencia(Producto unProducto, int cantidad, Almacen almacen, Almacen solicitante) {
try {
super().solicitarTransferencia(unProducto, cantidad, almacen, solicitante);
} catch e {
almacen.getSuperior().solicitarProducto(unProducto, cantidad, almacen, solicitante);
}

#InformaFaltanteStock extends TipoTransferencia
>> solicitarTransferencia(Producto unProducto, int cantidad, Almacen almacen, Almacen solicitante) {
try {
super().solicitarTransferencia(unProducto, cantidad, almacen, solicitante);
} catch e {
System.out.println("Falta " + unProducto.descripcion() + ", papá\n");
}

#SolicitaAAlmacenDepteDeMayorStock extends TipoTransferencia
>> solicitarTransferencia(Producto unProducto, int cantidad, Almacen almacen, Almacen solicitante) {
try {
super().solicitarTransferencia(unProducto, cantidad, almacen, solicitante);
} catch e {
// acá tengo dudas, es decir, el enunciado dice "solicita al almacen dependiente que tenga mayor stock para dicho producto",
// entonces... qué vendría a ser "dependiente" ? El superior? los almacenes que agrupa? mMmmMmmMmmMMM :'/

}

El enunciado esta bastante mal redactado, o al menos da a entender lo que seguramente NO se pide pero bleh...wall
(Este mensaje fue modificado por última vez en: 27-02-2015 03:29 por reLlene.)
27-02-2015 03:28
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Ivanorr1s Sin conexión
Militante
AutoMagically
***

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 93
Agradecimientos dados: 21
Agradecimientos: 65 en 31 posts
Registro en: Jan 2012
Mensaje: #8
RE: [APORTE] [Diseño de Sistemas] FINAL 21/02/2015
(27-02-2015 03:28)reLlene escribió:  y aprovecho para preguntarte por el método steam() cuando haces:
"return this.almacenes.stream().map((almacen) -> almacen.stockDe(unProducto)).sum();", entiendo que hay que iterar la coleccion de almacenes y hacer la sumatoria pero map no aplicaba una funcion sobre una coleccion? Como seria el trabajo aca?

Si tenés razon, flasheé con el stream(). En efecto, el map es un mensaje que sólo entienden las colecciones!
27-02-2015 12:17
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
juandesi Sin conexión
Empleado del buffet
Rompiendo todo
*

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 9
Agradecimientos dados: 2
Agradecimientos: 3 en 1 posts
Registro en: Jun 2011
Mensaje: #9
RE: [APORTE] [Diseño de Sistemas] FINAL 21/02/2015
Diagrama de clases:


[Imagen: Screen%20Shot%202015-02-27%20at%201.23.30%20PM.png]

1.

# AlmacenReal
stockLocal(Int idProducto){
int count = 0;
productos.foreach(p => if(p.id == idProducto){count ++})
return count;
}

#AlmacenFantasma
stockLocal(idProducto){
int count = 0
grupoDeAlmacenes.foreach(a => count += a.stockLocal(idProducto))
return count;
}



2.



#AlmacenReal
stockTotal(idProd){
return stockLocal(idProd) + stockTotalPadre(id) + stockTotalHijos(id);
}

stockTotalPadre(idProd){
padre.stockLocal(idProd) + padre.stockTotalPadre(idProd);
}

stockTotalHijos(idProd){
int c;
if(dependientes != null){
c =dependientes.foreach(a => count += a.stockLocal(id) + a.stockTotalHijos(id))
} else {
return 0
}

return c
}

# AlmacenCentral
stockTotalPadre(idProd){
return 0
}

#AlmacenFantasma
stockTotal(idProducto){
int count = 0
grupoDeAlmacenes.foreach(a => count += a.stockTotall(idProducto))
return count;
}


3.


# AlmacenReal
transferirProd(id, cant){
algoritmoDeTransferencia.transferir(id,cant,this);
}

#AlgoritmoDeTransferencia
transferir(id,cant,almacen){
if(almacent.stockLocal(id) >= cant){
return (almacen.productos.filter(id).cantidad(cant));
}else{
manejarTransferenciaNoPosible(id,cant,almancen);
}
}

#AlgoritmoSinNombre1
Override
manejarTransferenciaNoPosible(idP,cant,a){
almacen.getPadre.transferirProd(idP,cant,a)
}

#AlgoritmoSinNombre2
Override
manejarTransferenciaNoPosible(idP,cant,a){
throw new Exception(“no hay stock viejaa”)
}

#AlgoritmoSinNombre3
Override
manejarTransferenciaNoPosible(idP,cant,a){
almacen.getDependientes().getDependienteMayorStock(idP).transferirProd(idP,cant,a)
}

getDependienteConMayorStock(idP).{
// devuelve el almacen dependiente con mayor stock,si ninguno tiene throw exception
}


Patrones Usados:

Strategy para los algoritmos de transferencia, Nos deja implementar distintos algoritmos que comparten una misma interfaz, por lo cual para un almacén es transparente como hace el algoritmo, solo se encarga de llamar a su Algoritmo de transferencia y el se encarga de hacer las operaciones necesarias.
Tener en cuenta si no hubiéramos utilizado un strategy seguramente habríamos tenido muchos condicionales que validan algún tipo que nos indica como quiere procesar la transferencia.
if(){
}
if(){
}.... and so on.

También nos permite agregar fácilmente muchos algoritmos diferentes y el código en nuestro almacén no cambia nunca.

Composite: Utilize un composite para representar los almacenes fantasmas nos permite tratar tanto a los almacenes Reales como a los Fantasmas de la misma manera, siendo agnóstico para el cliente si es de un tipo o del otro.
(Este mensaje fue modificado por última vez en: 27-02-2015 13:27 por juandesi.)
27-02-2015 13:25
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] juandesi recibio 3 Gracias por este post
juanm_ (27-02-2015), CarooLina (13-05-2015), repuken2 (18-02-2016)
Ivanorr1s Sin conexión
Militante
AutoMagically
***

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 93
Agradecimientos dados: 21
Agradecimientos: 65 en 31 posts
Registro en: Jan 2012
Mensaje: #10
RE: [APORTE] [Diseño de Sistemas] FINAL 21/02/2015
(27-02-2015 13:25)juandesi escribió:  Diagrama de clases:


[Imagen: Screen%20Shot%202015-02-27%20at%201.23.30%20PM.png]

1.

# AlmacenReal
stockLocal(Int idProducto){
int count = 0;
productos.foreach(p => if(p.id == idProducto){count ++})
return count;
}

#AlmacenFantasma
stockLocal(idProducto){
int count = 0
grupoDeAlmacenes.foreach(a => count += a.stockLocal(idProducto))
return count;
}



2.



#AlmacenReal
stockTotal(idProd){
return stockLocal(idProd) + stockTotalPadre(id) + stockTotalHijos(id);
}

stockTotalPadre(idProd){
padre.stockLocal(idProd) + padre.stockTotalPadre(idProd);
}

stockTotalHijos(idProd){
int c;
if(dependientes != null){
c =dependientes.foreach(a => count += a.stockLocal(id) + a.stockTotalHijos(id))
} else {
return 0
}

return c
}

# AlmacenCentral
stockTotalPadre(idProd){
return 0
}

#AlmacenFantasma
stockTotal(idProducto){
int count = 0
grupoDeAlmacenes.foreach(a => count += a.stockTotall(idProducto))
return count;
}


3.


# AlmacenReal
transferirProd(id, cant){
algoritmoDeTransferencia.transferir(id,cant,this);
}

#AlgoritmoDeTransferencia
transferir(id,cant,almacen){
if(almacent.stockLocal(id) >= cant){
return (almacen.productos.filter(id).cantidad(cant));
}else{
manejarTransferenciaNoPosible(id,cant,almancen);
}
}

#AlgoritmoSinNombre1
Override
manejarTransferenciaNoPosible(idP,cant,a){
almacen.getPadre.transferirProd(idP,cant,a)
}

#AlgoritmoSinNombre2
Override
manejarTransferenciaNoPosible(idP,cant,a){
throw new Exception(“no hay stock viejaa”)
}

#AlgoritmoSinNombre3
Override
manejarTransferenciaNoPosible(idP,cant,a){
almacen.getDependientes().getDependienteMayorStock(idP).transferirProd(idP,cant,a)
}

getDependienteConMayorStock(idP).{
// devuelve el almacen dependiente con mayor stock,si ninguno tiene throw exception
}


Patrones Usados:

Strategy para los algoritmos de transferencia, Nos deja implementar distintos algoritmos que comparten una misma interfaz, por lo cual para un almacén es transparente como hace el algoritmo, solo se encarga de llamar a su Algoritmo de transferencia y el se encarga de hacer las operaciones necesarias.
Tener en cuenta si no hubiéramos utilizado un strategy seguramente habríamos tenido muchos condicionales que validan algún tipo que nos indica como quiere procesar la transferencia.
if(){
}
if(){
}.... and so on.

También nos permite agregar fácilmente muchos algoritmos diferentes y el código en nuestro almacén no cambia nunca.

Composite: Utilize un composite para representar los almacenes fantasmas nos permite tratar tanto a los almacenes Reales como a los Fantasmas de la misma manera, siendo agnóstico para el cliente si es de un tipo o del otro.

¿Qué son los almacenes dependientes? ¿Cómo llegaste a la conclusión de que hay almacenes que dependen de otro a partir del enunciado, además de los almacenes ficticios?

No me gustó la excepción que tirás. Prefiero que diga "no hay mas stock, papá".

Saludos!
27-02-2015 14:42
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] Ivanorr1s recibio 1 Gracias por este post
juandesi (27-02-2015)
reLlene Sin conexión
Profesor del Modulo A
...
*****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 307
Agradecimientos dados: 371
Agradecimientos: 63 en 35 posts
Registro en: Aug 2012
Mensaje: #11
RE: [APORTE] [Diseño de Sistemas] FINAL 21/02/2015
Ivanorr1s me parece que lo que intentó hacer juandesi con los dependientes es tratarlos como aquellos almacenes "que cuelgan" (o dependen) del almacen en cuestión, como si los dependientes se encontraran un nivel más abajo, se me viene a la cabeza un arbol con sus hojas y el ápice del arbol la casa central. Si es así, al Diagrama de Clases que hizo juandesi le esta faltando otro bucle en la clase Almacen que referencie a Padre, es decir un bucle por Padre y el otro por la colección de almacenes dependientes (tal como la puso).

Por eso digo que es medio puto el enunciado, yo de primeras a últimas lo entendi como la jerarquia superior pero a fin de cuentas creo que es como lo trato juandesi.

Aprovecho de paso para preguntar de vuelta por la linea de código que vendría a sumarizar la cantidad de stock de un producto para una coleccion de almacenes en el metodo de la clase Almacen Fantasma, recuerdo que habia una chula en smalltalk que lo hacia con un acumulador pero tengo perdida mi carpeta de PdP como para sacarle polvo y no se como resolverlo en java JAJA

EDITO: Agrego lo que creo es una CORRECCION, la clase Almacenes NO es una interface sino una clase abstacta, interface es la clase AlgoritmoDeTransferencia ( en el DC de juandesi)
(Este mensaje fue modificado por última vez en: 27-02-2015 16:51 por reLlene.)
27-02-2015 16:45
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] reLlene recibio 1 Gracias por este post
juandesi (27-02-2015)
juandesi Sin conexión
Empleado del buffet
Rompiendo todo
*

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 9
Agradecimientos dados: 2
Agradecimientos: 3 en 1 posts
Registro en: Jun 2011
Mensaje: #12
RE: [APORTE] [Diseño de Sistemas] FINAL 21/02/2015
(27-02-2015 16:45)reLlene escribió:  Ivanorr1s me parece que lo que intentó hacer juandesi con los dependientes es tratarlos como aquellos almacenes "que cuelgan" (o dependen) del almacen en cuestión, como si los dependientes se encontraran un nivel más abajo, se me viene a la cabeza un arbol con sus hojas y el ápice del arbol la casa central. Si es así, al Diagrama de Clases que hizo juandesi le esta faltando otro bucle en la clase Almacen que referencie a Padre, es decir un bucle por Padre y el otro por la colección de almacenes dependientes (tal como la puso).

Exacto, es como un Arbol. Yo tambien antes lo habia pensado solo para los niveles superiores, pero tambien habia que tener en cuenta la jerarquia inferior.

(27-02-2015 16:45)reLlene escribió:  Aprovecho de paso para preguntar de vuelta por la linea de código que vendría a sumarizar la cantidad de stock de un producto para una coleccion de almacenes en el metodo de la clase Almacen Fantasma, recuerdo que habia una chula en smalltalk que lo hacia con un acumulador pero tengo perdida mi carpeta de PdP como para sacarle polvo y no se como resolverlo en java JAJA
creo que te referis al Fold, pero ni te hagas problema por eso, todo lo que yo escribi es pseudocodigo pensando en scala. =D


(27-02-2015 16:45)reLlene escribió:  EDITO: Agrego lo que creo es una CORRECCION, la clase Almacenes NO es una interface sino una clase abstacta, interface es la clase AlgoritmoDeTransferencia ( en el DC de juandesi)
si, el diagrama quedo con el modelo principal me falto agregar el bucle y sacar el <<interface>>. Por otro lado la clase AlgoritmoDeTransferencia no es una interfaz, es strategy stateless pero use una abstracta para declarar una logica que tienen todos los algoritmos en comun.

(27-02-2015 14:42)Ivanorr1s escribió:  No me gustó la excepción que tirás. Prefiero que diga "no hay mas stock, papá".

con respecto a esto, me gusta me gusta, ajjajaaja. la proxima exception le pongo ese mensaje.

por ultimo les dejo como resolvi el modelo de datos

Modelado de datos:

[Imagen: Screen%20Shot%202015-02-27%20at%206.31.15%20PM.png]


Saludos!
(Este mensaje fue modificado por última vez en: 27-02-2015 18:37 por juandesi.)
27-02-2015 18:32
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
reLlene Sin conexión
Profesor del Modulo A
...
*****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 307
Agradecimientos dados: 371
Agradecimientos: 63 en 35 posts
Registro en: Aug 2012
Mensaje: #13
RE: [APORTE] [Diseño de Sistemas] FINAL 21/02/2015
juandesi Concuerdo con tu DER siguiendo tu modelo de objeto.

Me quedo con la duda, en el diagrama de clases, de si la referencia a la clase Producto sale de Almacen o debería salir de AlmacenReal (como en el diagrama que yo comparti). Según me da a entender el enunciado un objeto de la clase AlmacenFantasma no deberia conocer a un objeto producto. jumpon
27-02-2015 21:50
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] reLlene recibio 1 Gracias por este post
Mica Fontan (28-07-2017)
juanm_ Sin conexión
Militante
Sin estado :(
***

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 58
Agradecimientos dados: 80
Agradecimientos: 17 en 7 posts
Registro en: Jul 2011
Mensaje: #14
RE: [APORTE] [Diseño de Sistemas] FINAL 21/02/2015
Coincido, para mi debería salir de AlmacenReal pq Fantasma no puede tener productos...
27-02-2015 22:11
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
CarooLina Sin conexión
Colaborador

********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 3.743
Agradecimientos dados: 1.496
Agradecimientos: 1.683 en 547 posts
Registro en: Sep 2010
Mensaje: #15
RE: [APORTE] [Diseño de Sistemas] FINAL 21/02/2015
No coincido en lo de Casa central, no me di cuenta que iba.. lo pase totalmente por alto.

Lo de #juandesi
Almacen yo lo puse como abstract debido a las cosas en comun que tienen. A la que si puse interfaz es a las estrategias pq eso comun de ver si
tienen stock lo deje en almacen (por motivos que cuento abajo)
Como es el padre (que yo tmb lo puse)

Y producto le agregue un atributo "cantidad". Asi que cuando encuentra ese producto se fija la cantidad que tiene.

En cuanto a los algoritmos de transferencia:

Me parece buena idea que le pasen un id y una cantidad, yo puse "algo" pq no defini bien que queria recibir. Me parecia mas importante primero ver que hace y dps ir a los detalles, pero que a grandes rasgos si este todo hecho.
Pero la idea de transferir, yo la puse en #Almacen y no en Real, pq no lei en ningun lado (por ahi me equivoco) que no se le pueda pedir a un almacen ficticio (ya que es superior) y este de alguna forma (que no se) se lo entregue o no. (se lo saque a sus dependientes o le saque un poquito a todos.)
Pero la parte comun "si tiene stock lo entrega" eso lo deje directamente en almacen. Y que el strategy directamente maneje el que hacer cuando no tiene
Ya que eso me parece realmente la idea del strategy. Ante no tener stock que le piden o vuelve a pedir a su superior, a sus dependientes o dice que no tiene.

No me quedo muy claro como hicieron lo de pedir a superior.

Yo lo que hice es que: cada almacen conoce a su superior, esto lo puse en #Almacen. Ya que considere que tanto a fantasma como real, le pueden pedir

entonces cuando hacen:
Almacen.transferime(Algo) (Algo sea= id, cant o producto)

#Almacen
>>Transferime(Algo)
superior.Transferir(Algo,this)

love
(Este mensaje fue modificado por última vez en: 13-05-2015 11:04 por CarooLina.)
13-05-2015 11:03
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Buscar en el tema
Enviar respuesta 




Usuario(s) navegando en este tema: 1 invitado(s)