INF.04 · C# · lekcja 28

Projektowanie aplikacji — UML, diagram klas, architektura klient-serwer

Narysuj odpowiedzialności przed pisaniem klas

  • Zrozum
  • Sprawdź
  • Napisz sam

Po tej lekcji: narysuj odpowiedzialności przed pisaniem klas

Dzisiaj zrobisz konkretną rzecz

Zanim napiszesz pierwszą linijkę kodu większej aplikacji, warto zaprojektować jej strukturę na papierze. Podstawa programowa (INF.04.3.6) wymaga umiejętności projektowania aplikacji — analizy wymagań, projektowania interfejsu, doboru architektury. Diagram klas UML to uniwersalny język do rysowania struktury programu obiektowego, zanim napiszesz choć jedną klasę w C#.

Zanim zespół programistów zacznie pisać aplikację bankową, architekt oprogramowania rysuje diagramy UML pokazujące, jakie klasy będą potrzebne (Konto, Klient, Przelew, Historia) i jak się ze sobą łączą — to pozwala wychwycić błędy projektowe (np. brakującą relację) na etapie rysunku, zanim koszt poprawki wzrośnie po napisaniu tysięcy linii kodu.

Sprawdź w działaniu

Narysuj odpowiedzialności przed pisaniem klas

Najpierw przewidź wynik. Zmień dane w modelu i porównaj efekt. Spróbuj także przypadku granicznego, a nie tylko pierwszego poprawnego przykładu.

Ta interakcja wymaga włączonego JavaScriptu.

Model pokazuje wybraną zasadę. Nie uruchamia ani nie ocenia wklejonego kodu C#.

Prześledź decyzję krok po kroku

Wykonaj tę próbę przed dłuższym rozwiązaniem. Diagram ma pokazywać strukturę i odpowiedzialności. + oznacza public, - private. Klient nie powinien samodzielnie zmieniać pliku bazy serwera. Dziedziczenie i zależność to różne relacje.

Plan pracytext
Klient → żądanie → Serwer
Klient ← odpowiedź ← Serwer

Produkt
- tytul: string
+ OplataZaDzien(): decimal
Wynik
Wskaż, kto sprawdza dostępność produktu i kto tylko wyświetla odpowiedź.
  1. Co sprawdzić? Zmień jedną wartość i przed uruchomieniem zapisz przewidywany rezultat. Porównaj go z opisem wyniku; przy błędzie wróć do konkretnej instrukcji.

Jak to działa — 1

UML (Unified Modeling Language) to zestaw znormalizowanych diagramów do wizualnego opisu struktury i działania oprogramowania. Najważniejsze dla programisty na tym poziomie są dwa typy:

• diagram klas — pokazuje klasy (jako prostokąty podzielone na trzy części: nazwa, pola, metody) oraz relacje między nimi. Znak - przed polem/metodą oznacza prywatność (private), + oznacza publiczność (public). Trójkąt ze strzałką oznacza dziedziczenie ("jest rodzajem" — Samochod JEST RODZAJEM Pojazdu);

• diagram przypadków użycia (use case) — pokazuje, co różni użytkownicy (aktorzy) mogą robić w systemie, np. "Klient: składa zamówienie, przegląda historię" / "Administrator: zarządza produktami".

Proces projektowania aplikacji typowo obejmuje kilka etapów: analizę wymagań klienta (co dokładnie aplikacja ma robić?), specyfikację techniczną (jakich technologii użyjemy?), projekt interfejsu użytkownika (jak to będzie wyglądać?), a dopiero potem implementację.

Jak to działa — 2

Architektura klient-serwer to jeden z najpopularniejszych sposobów organizacji aplikacji: klient (np. przeglądarka, aplikacja mobilna) wysyła żądania, a serwer je przetwarza — najczęściej korzystając z bazy danych — i odsyła odpowiedź. To dokładnie ten model, w którym działają wszystkie aplikacje webowe z działu "Aplikacje internetowe" w tym serwisie.

Podstawa programowa wspomina też o paradygmatach programowania: strukturalnym (program jako sekwencja instrukcji i funkcji operujących na danych z zewnątrz) i obiektowym (dane i operujące na nich metody są połączone w jeden obiekt — dokładnie to, czego uczysz się w lekcjach 9-18 tego działu).

Sprawdź, zanim przepiszesz cały program

Pomijanie projektowania i przechodzenie od razu do kodu — dla małych programów to nie problem, ale przy większych aplikacjach (wiele współpracujących klas) prowadzi do chaotycznej struktury, którą trudno później rozbudowywać.

Mylenie dziedziczenia z kompozycją na diagramie — trójkąt (dziedziczenie, "jest rodzajem") i romb (kompozycja, "ma w sobie") to dwie różne relacje UML i mają różne znaczenie — Samochod JEST RODZAJEM Pojazdu (dziedziczenie), ale Samochod MA Silnik (kompozycja).

Projektowanie zbyt szczegółowe od razu na starcie — pierwsza wersja diagramu klas nie musi być idealna; to narzędzie do myślenia i komunikacji z zespołem, nie sztywna specyfikacja wyryta w kamieniu.

Ćwiczenie z pomocą · samodzielna praca

4. Teraz Twoja zmiana

Narysuj (na kartce albo w dowolnym edytorze) prosty diagram klas dla systemu bibliotecznego: klasy Ksiazka, Czytelnik, Wypozyczenie. Zaznacz pola każdej klasy oraz relacje między nimi.

Oczekiwany rezultat
Spełnij warunki polecenia. Zapisz wejście, otrzymany wynik i wyjaśnij, która część kodu za niego odpowiada.
Potrzebujesz pomocy? Rozwiązuj krok po kroku.
Krok 1 — pokaż podpowiedź

Wróć do podstawowej formy oraz objaśnienia: Diagram ma pokazywać strukturę i odpowiedzialności. + oznacza public, - private. Klient nie powinien samodzielnie zmieniać pliku bazy serwera. Dziedziczenie i zależność to różne relacje.

Krok 2 — pokaż podpowiedź

Zmień tylko część potrzebną do polecenia. Zachowaj działającą wersję przed zmianą i uruchamiaj po każdym małym etapie.

Krok 3 — pokaż podpowiedź

Sprawdź przypadek zwykły i graniczny; porównaj z regułą: Wskaż, kto sprawdza dostępność produktu i kto tylko wyświetla odpowiedź.

Otwórz tylko tyle podpowiedzi, ile potrzebujesz. Po każdym kroku wróć do zadania i sprawdź wynik.

5. Sprawdź rozumienie, nie tylko uruchomienie

Dalej na swoim koncie

Rozgrzewki, quiz i zadania są w biurku ucznia.

Teoria jest otwarta dla wszystkich. Żeby rozwiązywać zadania, zapisywać szkice i widzieć swój postęp, zaloguj się.

Zaloguj się →
Źródła i dalsza nauka