Diagramy klas- prośba o wytłumaczenie

Odpowiedz Nowy wątek
2018-04-16 12:47
0

Witam zgłębiam temat diagramów klas w uml. Mam trochę problem z zależnością i asocjacją, ale zacznijmy od końca :)
Kompozycja (agregacja całkowita)
Jeden obiekt ma na własność drugi obiekt i gdy usuwamy obiekt parent to usuwamy również child-a, a jeśli usuniemy child-a to parent zostacje
Np.

public class Car{
           public void init(){
                      Kierownica kierownica = new Kierownica();
           }
}

Agregacja częściowa
Jeden obiekt ma w sobie referencję do drugiego obiektu, nie tworzy go i nie usuwa (czasy istnienia są od siebie niezależne)
Np.

public class Car{
Kierowca kierowca;
           public void setKierowca(Kierowca kierowca){
                      this.kierowca=kierowca;
           }
}

Zależność
Jedna klasa może wykonywać operacje na innej klasie, tworzyć ją, mieć w sobie jej instację
Np

public class Car{
           public void addCar(Kierowca kierowca){
                      kierowca.add(this);
           }
}

A jak to będzie z asocjacją? Wiem że ona jest silniejsza od zależności (czyli będzie pozwalała na mniej operacji niż zależność), prosiłbym o jakiś prosty przykład. Przykładowy kod pisałem w javie :P
Z góry dziękuję za odpowiedzi :)

Pozostało 580 znaków

2018-04-16 13:14
0

Nie rozumiem tego fragmentu kodu:

public class Car{
           public void addCar(Kierowca kierowca){
                      kierowca.add(this);
           }
}

Samochód ma możliwość dodania samochodu poprzez pobranie pojedynczego, istniejącego już Kierowcy i dodaniu do tego kierowcy aktualnego samochodu... o.O

Po drugie nie oddaje to w ogóle tego co napisałeś tutaj:

może wykonywać operacje na innej klasie, tworzyć ją, mieć w sobie jej instację

Pozostało 580 znaków

2018-04-16 13:16
0

Samochód ma możliwość dodania samochodu poprzez pobranie pojedynczego, istniejącego już Kierowcy i dodaniu do tego kierowcy aktualnego samochodu... o.O

O to mi chodziło xD
Ogólnie chciałem pokazać w tym kodzie to że jedna klasa może w metodzie przyjąć jako argument obiekt innej klasy i ją zmodyfikować

Stworzyłem taki diagram klas (sklep komputerowy), czy jest on poprawny ?
computer_shop

edytowany 4x, ostatnio: Masterpc96, 2018-04-16 14:09

Pozostało 580 znaków

2018-04-18 08:01
1

Nie wkręcałem się zanadto w diagram ale moją uwagę przykuła jedna rzecz: rozumiem, że chcesz handlować tylko dyskami, zasilaczami i pamięciami RAM, a jak będziesz chciał poszerzyć asortyment o myszki i klawiatury to będziesz musiał dopisać do programu nową funkcjonalność i go przekompilować, tak? :-)

Pozostało 580 znaków

2018-04-18 10:02
0

czyli muszę dodać klasę dodaj asortyment który mi utworzy nowy obiekt?

Pozostało 580 znaków

2018-04-18 10:14
1

Nie. Produkt posiada przypisaną kategorię, a nie jest kategorią. Kompozycja, a nie dziedziczenie, przy czym kategoria to także jedna klasa, a nie tysiące specjalizacji, bo wrócimy do punktu wyjścia. Taka klasa Kategoria posiada np. pole Nazwa gdzie określasz czy to dysk, czy pamięci oraz pole Id, które jednoznacznie identyfikuje kategorię np. w bazie danych, bo tworzenie tożsamości za pomocą stringów to zło . Tworzy się wtedy taki słownik, gdzie user wybiera kategorię mając do dyspozycji listę obiektów klasy Kategoria, wyświetlaną np. w combo boksie.

Zależność mniej więcej taka:

// pseudokod:
class Produkt
{
    public int Id;
    public string Nazwa;
    public string Opis;
    public decimal Cena;
    public int IloscSztuk;
    public Kategoria Kategoria;
}
 
class Kategoria
{
    public int Id;
    public string Nazwa;
    public List<Produkt> Produkty; // w zasadzie niewymagane jeżeli nie chcesz mieć zależnosci obustronnej.
}
edytowany 5x, ostatnio: grzesiek51114, 2018-04-18 10:22

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0