Buenas tardes,
Tengo una duda respecto a como poner los atributos, si como privados o protegidos. Tengo entendido que todos los atributos en Smalltalk son protegidos por defecto. Sin embargo, protegidos es para que puedan acceder las hijas de la madre y no se si tiene sentido poner todo protegido cuando no tienen hijas. Tendria que poner privados los que no tienen y protegidos los que si?
Gracias
Carolina
Hola Carolina,
Como bien decís todos lo atributos (en SmallTalk) son protegidos por defecto, pero nunca indicamos que sean así. Si te fijas nunca ponemos la visibilidad ya sea de los atributos o mensajes ni de que tipos son y devuelven respectivamente en SmallTalk, cosa que si es importante en los diagramas de clase y cuando veamos en Java. Esto en parte debido a que es un lenguaje de tipado dinámico y es uno de los principios de SmallTalk que las cosas sean así, me parece que se menciona algo en la lectura: Principios de Diseño de SmallTalk.
Si por alguna razón queres tener mensajes privados, existe una categoria private para clasificarlos, pero esto no cambia el hecho de que alguien pueda usar ese mensaje desde fuera de la clase solo indica que "ojo esto es privado, no me hago responsable de fallos si lo usás".
Saludos,
Edson
Buenas noches, en conclucion a la pregunta de Carolina, en el diagrama de clases entonces no entendi si tenemos que ponerle a los atributos como si fueran privados o publicos. Si bien en smalltalk todos son privados nosotros no decidimos eso entonces en el uml como lo escribimos? Gracias.
Hola Mauricio,
Si bien se entiendo que muy probablemente si colocas atributos en los diagramas de clase estos van a ser privados. Respentando el standar UML si deberían tener la visibilidad tanto como los mensajes, los diagramas de clase deben reflejar las decisiones que hayas tomado para tu modelo. Para hacer esto simplemente tenés que poner la propiedad de visibilidad ( -, + , #) al atributo o mensaje, esto puede variar depende que programa uses para hacer los diagramas, pero todos deben permitirte hacerlo.
Quedarian algo asi:
privados: - atributoPrivado - mensajePrivado() públicos: + atributoPublico + mensajePublico() protegidos: # atributoProtegido # mensajeProtegido()
Saludos,
Edson