Nie chciałbym pokazywać widoczności składowych klasy. Czy jest domyśla widoczność w UML? Czy zależy ona od języka implementacji?
Nie chciałbym pokazywać widoczności składowych klasy. Czy jest domyśla widoczność w UML? Czy zależy ona od języka implementacji?
W UML nie ma domyślnej widoczności, co więcej wiele elementów nie musi mieć jej w ogóle określonej. Jeśli jednak mamy do czynienia z elementem, który można bezpośrednio umieścić w pakiecie np. klasą albo pakietem to w momencie umieszczenia go w jakieś przestrzeni nazw (czyli np. w innym pakiecie) musi mieć on określoną widoczność i przyjmuje się domyślnie, że jest ona publiczna. Tyle teoria. Co to oznacza w praktyce? Ani atrybuty ani operacje nie są elementami, które można wrzucić bezpośrednio do pakietu (są one definiowane w klasie, a dopiero klasa może być umieszczona w pakiecie), a więc nie muszą mieć zdefiniowanej widoczności. Jednakże narzędzia często z własnej inicjatywy dodają jakby domyślną widoczność składowym klasy (prywatną dla atrybutów i publiczną dla operacji). Najczęściej można to wyłączyć albo przynajmniej sprawić, aby się widoczność w ogóle nie była wyświetlana na diagramie.
Widoczność jest mechanizmem w UMLu, który ogranicza dostęp do danego elementu i nie koniecznie musi ona odpowiadać znaczeniowo widoczności występującej w językach programowania.