Diagram klas UML - poprawność

Diagram klas UML - poprawność
Mikołaj Kabała
  • Rejestracja:prawie 5 lat
  • Ostatnio:prawie 5 lat
  • Postów:12
0

Siemka.
Chciałbym Was poprosić o weryfikację poprawności tego diagramu UML. Mam pewne wątpliwości, zwłaszcza, przy Petencie zarejestrowanym i zleceniu. Ale... może uda Wam się wypatrzyć coś jeszcze (załącznik). Byłbym wdzięczny za pomoc. ;)

mariano901229
  • Rejestracja:ponad 10 lat
  • Ostatnio:6 miesięcy
  • Postów:597
1

Wg mnie to dużo do poprawy, ja nie rozumiem tego diagramu. Za dużo zbędnych generalizacji to się nie uda przy implementacji. Dziwne nazewnictwo klas. Źle użyta kompozycja, która przedstawia związek część-całość gdy cykl życia obu obiektów jest powiązany. Zatem w Twoim diagramie w systemie lokalizacja czy pojazd medyczny nie może istnieć jeżeli usunę świadczenie medyczne. Raczej odpowiedzialność za obsługę faktur powinien mieć obiekt ku temu przeznaczony, a nie pracownik. Pracownik może być co najwyżej zależnością.

katakrowa
  • Rejestracja:około 10 lat
  • Ostatnio:około 2 lata
  • Lokalizacja:Chorzów
  • Postów:1670
1

Do bani... Jeśli to na zaliczenie/studia/do szkoły to "pała" murowana.
Spojrzałem tylko na jedną klasę (pracownik) i są w niej różne metody jednak nie widzę klas za nie odpowiedzialnych t.j.: Faktury, raporty, zleceniodawcy, zlecenia.

W użytkowniki są metody zaloguj i wyloguj a nie ma nigdzie danych autoryzacyjnych. Może pokaż diagram ERD, który być może coś wyjaśni i jest jakimś uzupełnieniem powyższego. Jednak jeśli go nie ma to to co pokazałeś jest bez sensu i niekompletne. Nie wiadomo co te prostokąty rzeczywiście odzwierciedlają ..

Taki diagram w komplecie z bazą ( w tym przypadku wg mnie niezbędny ) ma pokazać jak działa system i co ma zaprogramować a z tego wynika jedynie jakiś chaos.

p.s. nie ma czegoś takiego jak "diagram UML" lub jest to bardzo nieprecyzyjne. W ramach UML mamy różne diagramy o różnych zastosowaniach i nazwach.
Twój diagram to diagram klas.


Projektowanie i programowanie. Hobbystycznie elektronika i audio oszołom.
edytowany 2x, ostatnio: katakrowa
MA
  • Rejestracja:prawie 5 lat
  • Ostatnio:ponad rok
  • Postów:134
1
Mikołaj Kabała napisał(a):

Siemka.
Chciałbym Was poprosić o weryfikację poprawności tego diagramu UML. Mam pewne wątpliwości, zwłaszcza, przy Petencie zarejestrowanym i zleceniu. Ale... może uda Wam się wypatrzyć coś jeszcze (załącznik). Byłbym wdzięczny za pomoc. ;)

To jest źle. Dużo by pisać co jest nie tak.Kilka przykładów.

  1. Pakiet świadczenie medyczne i jego agregacje.
  2. Jak na diagramie jest "koło" to prawie na pewno jest źle. (masz takie "koło")
  3. Paten zarejestrowany, Pracownik systemu.
  4. "Patent Oglądający oferty Systemu" :D
  5. ...

Najlepiej usuń to i narysuj od nowa, bo poprawa tego zajmie Ci więcej czasu.

katakrowa
  • Rejestracja:około 10 lat
  • Ostatnio:około 2 lata
  • Lokalizacja:Chorzów
  • Postów:1670
0

Jak napisał @malencki lepiej narysuj to od nowa.
Dla ułatwienia wypisz tutaj na forum jakie element,i zdarzenia mają być obsługiwane w systemie - językiem potocznym.


Projektowanie i programowanie. Hobbystycznie elektronika i audio oszołom.
Mikołaj Kabała
To znaczy, do zrobienia mam diagram klas o tematyce System Zarządzania Obiegiem Informacji (czyli Przychodnia). Nie ma w sumie żadnych wytycznych co do elementów i zdarzeń, mogą być naprawdę dowolne. Po prostu każda strona pokazywała inne wersje tworzenia takich diagramów, wykładowca jeszcze inny... a też przez obecną sytuację nie mamy skąd się dowiedzieć, jak takie diagramy tworzyć, stąd ta porażka i do niej się przyznaje :P Czyli krótko mówiąc, kwestia tylko żeby ten diagram zawierał kilku aktorów, a połączenia elementów i ich relacje mogą być zupełnie dowolne.
Mikołaj Kabała
Narysowane od nowa, czy mogę Cię poprosić żebyś zobaczył, jak obecnie to wygląda? Jest na drugiej stronie.
katakrowa
  • Rejestracja:około 10 lat
  • Ostatnio:około 2 lata
  • Lokalizacja:Chorzów
  • Postów:1670
1

a też przez obecną sytuację nie mamy skąd się dowiedzieć, jak takie diagramy tworzyć, stąd ta porażka i do niej się przyznaje :P

Błagam Cię...
Obejrzyj i wypisz jakie "elementy" masz w systemie.


Projektowanie i programowanie. Hobbystycznie elektronika i audio oszołom.
Mikołaj Kabała
  • Rejestracja:prawie 5 lat
  • Ostatnio:prawie 5 lat
  • Postów:12
0
katakrowa napisał(a):

a też przez obecną sytuację nie mamy skąd się dowiedzieć, jak takie diagramy tworzyć, stąd ta porażka i do niej się przyznaje :P

Błagam Cię...
Obejrzyj i wypisz jakie "elementy" masz w systemie.

Po obejrzeniu, zrozumiałem jedynie, że elementy są klasami. Więc odpowiedź pozostaje bez zmian. Nie ma tak naprawdę różnicy, jakie elementy, czy też relacje będą między nimi. Ogólnie chodziło mi o to, żeby w takim diagramie umieścić użytkownika, który będzie interfejsem/abstrakcją, posiadające wszelkie dane chronione (imię, nazwisko, adres zamieszkania szczegółowy, PESEL, telefon). Od klasy Użytkownika, chciałem żeby wychodził Pacjent, który jest zarejestrowany i on może korzystać i zlecać pewne rzeczy do wykonania w systemie. Fakultatywnie, pacjent niezarejestrowany, który może mieć możliwość rejestracji, po czym skorzystania z usług systemu, czyli również może wykonywać czynności dodawania/usuwania/modyfikowania zleceń. Jeśli chodzi o klasę Pracownik, zamysł jest taki, żeby od niego wychodziły 3 inne podklasy (jeśli to tak można nazwać). Pracownik Systemu/Księgowy, Informatyk/Administrator, Główny Zarządca. Informatyk może właściwie najwięcej z nich wszystkich, bo może dodawać/usuwać/modyfikować pracowników, w tym Głównego Zarządcę. Może korygować na przykład... płynność systemu. Sprawdzać, czy wszystko przebiega poprawnie. Nie może on jednak wykonywać czynności przeznaczonych jedynie dla głównego zarządcy. Dlatego też dyrektor czy też główny zarządca może przyjmować zlecenia od pacjentów, którzy są zapisani. Może mieć kilka możliwości (świadczonych usług medycznych). Pracownik właściwie może zapisywać wnioski osób ubiegających się o pacjenta, czyli po prostu przekazywać deklarację wyboru przychodni, może też je modyfikować, zmieniać. Wysyła je bezpośrednio do głównego zarządcy. Dodatkowo, miałby możliwość przekazywania chęci pacjenta skorzystania z jakichś usług, również do głównego zarządcy. Mam nadzieję, że wyczerpująco odpowiedziałem na Twoje pytanie :P Akcesoryjnie, spróbuję zrobić jeszcze drugi diagram i dosłać go jeszcze dzisiaj do weryfikacji.

MA
Tak na oko to potrzebujesz diagramu PRZYPADKÓW UŻYCIA czy jak to tam się nazywa, a nie diagramu klasowego. W przypadkach użycia masz aktorów, masz przypadki czyli jakieś tam działania, które wykonuje system i to wszystko łączysz na wielu diagramach (aktorów z tymi działaniami). Może wklej dokładną treść zadania.
Mikołaj Kabała
  • Rejestracja:prawie 5 lat
  • Ostatnio:prawie 5 lat
  • Postów:12
0

Diagram przypadków użycia jest taki :P (załącznik). Co prawda do tego jest osobny temat i nie wiem, czy dobrze rozumiem zaznaczone błędy. Spróbowałem zinterpretować błędy następująco:
Błąd nr 2 przedstawia generalizację, jednakże, strzałki powinny iść w drugą stronę (ponieważ przypadki pochodne muszą pochodzić od przypadków bazowych). Zaznaczony błąd nr 3 pokazuje relację rozszerzania pomiędzy przypadkami użyć. W tym wypadku, kolejki oczekujących mogą być rozszerzone (ale nie muszą) o trzy przypadki. Samo połączenie jest bezbłędne, natomiast problem polega na tym, że przypadek kolejek oczekujących nie ma połączenia z niczym innym w tym systemie.
Błąd nr 4 wskazuje na asocjację petenta zarejestrowanego z jego weryfikacją na liście. Wydaje nam się, że tutaj zachodzi potrzeba asocjacji skierowanej, ze względu na to, że aktor inicjuje przypadek użycia. Stąd jest zastosowana zwykła asocjacja (podobnie jak w przypadku aktora poniżej, gdzie jest petent niezarejestrowany, który bierze udział w rejestracji - powinna być asocjacja skierowana).
Błąd nr 5 pokazuje relację rozszerzania. Powinien on być zamieniony z extend na include, bo przypadek wymaga oceny jakości zdrowia Petenta.
Błąd nr 6 przedstawia relację zawierania. W tym wypadku, przypadek użycia "Wysłanie zgłoszenia" wymaga wypełnienia formularza zgłoszeniowego, więc w tym wypadku przedstawiona relacja powinna być poprawna.
Błąd nr 7 wskazuje na przypadek "Zapisanie zgłoszenia", przy którym obecnie znajduje się jedynie zwykła asocjacja, a powinna być skierowana, ponieważ jest ona inicjowana przez aktora.
Błąd nr 8 pokazuje relację rozszerzania. Prawidłowo została zastosowana relacja extend, ale nieprawidłowo kierunek grotu strzałki - powinno być odwrotnie. Przypadek "Rejestracji" może być rozszerzony o "Przeglądanie korzyści Systemu".
Błąd nr 9 wskazuje na błędną relację. Zamiast relacji include, powinna być extend, bo wszystkie przypadki wsparcia mogą, ale nie muszą być rozszerzane. Nie są one natomiast wymagane.
Finalnie, błąd nr 10 pokazuje, że przypadek "Administrator" wymaga kilku innych przypadków. Otóż, powinna być zastosowana inna relacja. Mianowicie, relacja rozszerzania. Kilka przypadków wychodzących od Administratora powinny mieć groty strzałek skierowane ku niemu i być zamienione z "include" na "extend".

Podsumowując, walka na dwa fronty. Z jednej strony poprawność zaznaczonych błędów, z drugiej strony diagram klas :P (oczywiście kombinuję dalej go rozwijać). Z tego, co zauważyłem, w tym konkretnym przypadku, zbytnia nadgorliwość nie popłacała, więc diagram klas nie musi być taki obszerny jak diagram przypadków użycia.

MA
:o robi wrażenie :D Nie przyszło Tobie do głowy, że to można podzielić? :D
Mikołaj Kabała
Cóż... :D Jestem tylko humanistą, tak naprawdę chciałem jeszcze to rozbudować kilkukrotnie, wenę do lania wody mam :D Ale... jak widać, ze zrozumieniem tego typu programowania - na bakier :P Tak naprawdę termin na wykonanie diagramu klas i na weryfikację tych błędów jest do soboty do końca dnia, ale... trzeba walczyć :D
MA
  • Rejestracja:prawie 5 lat
  • Ostatnio:ponad rok
  • Postów:134
0

Na Twoim miejscu najpierw wydzieliłbym co jest obiektem, a co działaniem.
Przykładowo obiekty z Twojego diagramu to:

Zabiegi

Świadczenia

Zgłoszenie

Upoważnienie, wniosek, alert

Użytkownik

Komunikat

Umowa

Patent

itd ...

Wiele różnych obiektów świadczeń/zabiegów(dziedziczenie), lub jeden obiekt świadczenie/zabiegi konfigurowany - tak możesz to ułożyć na diagramie klas.
Następnie operacje:

generuj zestawienie zbiorcze

podanie leku (jakiś log kto podał i ile)

wyloguj

itd ...

To są operacje w klasach czyli metody lub jeszcze inne obiekty, które wykonują operację na danych obiektach.

Na Twoim miejscu najpierw wydzieliłbym jedną część systemu, powiedzmy użytkowników i na niej się skupił. Tylko logowanie i jakieś role użytkownika (czyli kto kim jest i co może).
Następnie dodawał kolejno małe niezależne części systemu. Rozbudowując i poprawiając pozostałe.

// Brakuje mi tutaj jeszcze diagramów czynności. Gdyby były zrobione, to przejście do diagramów klas byłoby znacznie prostsze.
Diagramy czynności to taki diagram przepływu systemu, czyli co konkretnie się dzieje.

Staraj się dzielić diagramy:
Jedna część jeden diagram. Na mniejsze łatwiej się patrzy i ogarnia :)

Mikołaj Kabała
  • Rejestracja:prawie 5 lat
  • Ostatnio:prawie 5 lat
  • Postów:12
0
malencki napisał(a):

Staraj się dzielić diagramy:
Jedna część jeden diagram. Na mniejsze łatwiej się patrzy i ogarnia :)

To znaczy... spróbowałem zrobić coś takiego, nie mam pojęcia, czy to jest dobrze, ale... spróbuję się dostosować dalej do Twoich wskazówek :) (załącznik)

EDIT: Ten załącznik będzie nieco wyraźniejszy :P

EDIT #2: Spróbowałem dostosować się do Twoich wskazówek i udało mi się stworzyć taki diagram klas (załącznik). Czy relacje i sam diagram teraz jest nieco poprawniejszy? Byłbym wdzięczny za pomoc i ewentualne dalsze wskazówki :P

edytowany 2x, ostatnio: Mikołaj Kabała
MA
Ten diagram klas który podlinkowałeś dalej zawiera działania. Staraj się utworzyć same klasy zawierające dane i metody w tych klasach. Bez działań (np rezerwacja formularza). Dalej Użytkownik -> Historia (bez tego opisu), po prostu klasa użytkownik korzysta z klasy historia. Tak samo użytkownik -> Formularz bez "Rezerwacja formularza" ( to jako metoda w użytkowniku - przecież użytkownik rezerwuje formularz), itd ... . Omijaj powtórzenia Typu deklaracja, jeśli inny typ deklaracji to możesz dziedziczyć lub inaczej (utworzyć podtyp ).
Mikołaj Kabała
Dzięki za wyjaśnienie :P Trochę udało się zmodyfikować diagram. Jak, według Ciebie, wygląda teraz?
MA
Chciałoby się powiedzieć, że jest ok, ale jest bardzo daleko od ok :D Postaraj się ogarnąć SAMYCH użytkowników, rozpisz sobie co konkretny użytkownik może i jakie dane na temat użytkownika są potrzebne.
Charles_Ray
  • Rejestracja:prawie 17 lat
  • Ostatnio:około 12 godzin
  • Postów:1873
0

Tak na marginesie - trochę bez sensu rysować diagram bez wiedzy w jaki sposób będzie on wykorzystywany. Jaki jest cel tego ćwiczenia? Co potem się zadzieje z tym diagramem? Będzie jakaś implementacja czy zaliczenie i do kosza?


”Engineering is easy. People are hard.” Bill Coughran
Mikołaj Kabała
Te laborki dotyczą jedynie samego projektowania diagramów. A wykładowcy mają przeróżne wytłumaczenia, co do wiedzy na ten temat i nie wiadomo skąd tą poprawną wiedzę pozyskać. Fakultatywnie, gdyby miało to pójść do kosza, to pewnie już bym poprosił kogoś o wykonanie, jednak zależy mi na "wytknięciu" błędów, bo jestem raczej z osób, które wolą się nauczyć niż zapomnieć takie rzeczy :P Stąd... jeśli mogę Ciebie poprosić, czy wskażesz mi, co jest nie tak w załączniku "Diagram Klas 2" - w poście wyżej? Będę bardzo wdzięczny za pomoc i wskazówki.
Charles_Ray
Ja nigdy w pracy komercyjnej nie korzystałem z takich diagramów, wiec nie podejmuje się :) to dla mnie sztuka dla sztuki
Charles_Ray
Natomiast jeśli zarówno Pracownik jak i System Zewnętrzny IT jest encją na tym samym poziomie to coś jest nie tak. Klasy, procesy i aktorów wsadziłeś do jednego wora.
Mikołaj Kabała
  • Rejestracja:prawie 5 lat
  • Ostatnio:prawie 5 lat
  • Postów:12
0
malencki napisał(a):

Na Twoim miejscu najpierw wydzieliłbym jedną część systemu, powiedzmy użytkowników i na niej się skupił. Tylko logowanie i jakieś role użytkownika (czyli kto kim jest i co może).
Następnie dodawał kolejno małe niezależne części systemu. Rozbudowując i poprawiając pozostałe.

Nie wiem, czy dobrze zrozumiałem, masz na myśli, żeby wydzielić diagram na coś takiego mniej więcej? Jako... aplikację, składającą się z kilku diagramów (podsystemów), komunikujących się ze sobą? Bo właściwie jeśli chodzi o użytkowników, to... masz na myśli rozumiem większą ilość przypadków? Przykład w załączniku :P

MA
  • Rejestracja:prawie 5 lat
  • Ostatnio:ponad rok
  • Postów:134
0

Normalnie diagram klas tak jak robiłeś.
Miałem na myśli podział logiczny.

Na jednym diagramie umieszczasz samych użytkowników. W tym momencie bez żadnego łączenia z pozostałą częścią systemu.
Czyli klasę użytkownik oraz jego pola, jakieś metody typu zaloguj/wyloguj w tej klasie.
Do tego diagramu dodajesz kolejne klasy z użytkownikami typu Administrator, Patent i jeśli są w jakiś sposób połączone ze sobą to łączysz je. Jeśli nie są połączone to nie łączysz ich.

Potem kolejny niezależny diagram Zabiegi i tak samo postępujesz jak opisałem wyżej.
Następnie świadczenia, potem wnioski, itd ...
Wszystko co zawiera jakieś dane które musi przechowywać, aby spełniało swoje funkcje, porządkujesz w klasy.
Oczywiście dzielisz to tematycznie, aby nie robić burdelu, na całkowicie osobnych diagramach.

Potem jak ogarniesz jakie masz klasy z danymi możesz powoli łączyć wszystko do kupy, czyli jak ma działać.
Robisz wiele różnych diagramów, aby pokazać na nich jak współdziałają ze sobą klasy, aby wykonać konkretny przypadek użycia.
Możesz modyfikować istniejące diagramy, jak i zbudować od nowa.

Prawdopodobnie nie musisz wykonywać wszystkich przypadków użycia (przypadek użycia -> diagram klasowy), tylko skupiasz się na tych najważniejszych.
Na takich diagramach zawierasz tylko te klasy, które biorą udział w przypadku użycia.
Miej dużo naiwności w tym co robisz, nie wszystko musi być w 100% przemyślane, takie rzeczy zazwyczaj wychodzą przy implementacji.

Wiesz też nie jestem jakimś tam ekspertem w tej dziedzinie. Miałem zwyczajnie (nie)przyjemność pracować w takim systemie przez pewien czas.

To miałem na myśli :D

Mikołaj Kabała
Na pewno większym ekspertem ode mnie jesteś :D Hmm... chyba wiem, co masz na myśli, żeby po prostu to nie wyglądało jako jeden diagram, tylko kilka większych, a w nim zawierać się mają mniejsze, żeby poukładać to jakoś :P Ewentualnie... ponieważ czasu jest już niewiele... mogę spytać Cię, czy nie zechciałbyś tego zrobić za jakąś formę zapłaty? :P
MA
Tak i nie :D. Tak, podział zawsze jest dobry. Nie, nie zajmuję się pisaniem zadań zaliczeniowych za $ :)
Mikołaj Kabała
Spoczko, rozumiem :D Właśnie dodałem czwartą wersję diagramu, a jak teraz wygląda według Ciebie? :P Zastąpiona jest poprzednią
Mikołaj Kabała
  • Rejestracja:prawie 5 lat
  • Ostatnio:prawie 5 lat
  • Postów:12
0
malencki napisał(a):

Normalnie diagram klas tak jak robiłeś.
Miałem na myśli podział logiczny.

Zastosowałem się do Twoich wskazówek i wyszedł obecnie taki diagram. Jedynie czego tam brakuje to metod i atrybutów, a czy sam model jest w porządku? Podzieliłem go na aplikację serwera i aplikację klienta. Nie mam też pewności, czy wszystkie relacje są poprawne :P (załącznik)

MA
  • Rejestracja:prawie 5 lat
  • Ostatnio:ponad rok
  • Postów:134
0

Przykład diagramu biblioteki:
diagram biblioteka

Jak widać na tamtym diagramie masz 2 części (na nim już połączone).

  1. Author, Account, Librarian, Patron
  2. Book, Book Item, Library, Catalog

Chodziło mi o taki podział, że umieszczasz (1) oraz (2) na całkowicie osobnym diagramie, z wypełnionymi polami.
Nic na siłę nie łączysz.
Jak masz utworzone takie diagramy klas, czyli wiesz jakie obiekty (w tej chwili dane), będziesz przetwarzał to możesz powoli wykonywać przypadki użycia.
Kilka sztuk, łącząc je tak jak to robiłeś na diagramie z pierwszego postu.

Podstawową rzeczą jest to, aby określić z jakimi danymi oraz klasami będziesz miał do czynienia, wtedy będzie dużo prościej.
I to tyle.

Mikołaj Kabała
Hmm... przyznam szczerze, że teraz już kompletnie nie rozumiem :/ Zagiąłeś mnie totalnie :D Czyli... diagram klas musi mieć dwie części jako dwa różne diagramy? Bo w sumie nie wiem, czy w tym momencie należy przerabiać obecny diagram na coś zupełnie innego, czy po prostu pododawać niepołączone wyliczenia do obecnego diagramu, które korzystają z interfejsów. :P
MA
Aby przyspieszyć sprawę, zaproponowałem podejście, abyś najpierw zrobił diagramy z samymi danymi. Same klasy nic więcej, ewentualnie jakoś lekko powiązane. Wszystko podzielone tematycznie, aby się nie mieszało. Dopiero następnym krokiem jest popatrzenie na swoje przypadki użycia i składanie tych utworzonych klas na całkowicie nowym diagramie (dla konkretnego przypadku użycia lub kilku naraz). PS Na pierwszy rzut oka wydaje się, że to pewnie wyjdzie dłużej. Nic bardziej mylnego :D Postaraj się na początku skupić na samych danych które będziesz przetwarzał w systemie.
Mikołaj Kabała
  • Rejestracja:prawie 5 lat
  • Ostatnio:prawie 5 lat
  • Postów:12
0
malencki napisał(a):

Przykład diagramu biblioteki:
diagram biblioteka

Jak widać na tamtym diagramie masz 2 części (na nim już połączone).

  1. Author, Account, Librarian, Patron
  2. Book, Book Item, Library, Catalog

Chodziło mi o taki podział, że umieszczasz (1) oraz (2) na całkowicie osobnym diagramie, z wypełnionymi polami.
Nic na siłę nie łączysz.
Jak masz utworzone takie diagramy klas, czyli wiesz jakie obiekty (w tej chwili dane), będziesz przetwarzał to możesz powoli wykonywać przypadki użycia.
Kilka sztuk, łącząc je tak jak to robiłeś na diagramie z pierwszego postu.

Podstawową rzeczą jest to, aby określić z jakimi danymi oraz klasami będziesz miał do czynienia, wtedy będzie dużo prościej.
I to tyle.

Dzięki Mistrzu za pomoc i wskazówki, trochę przemodelowałem ten diagram, teraz wygląda tak jak w załączniku. Pozwól, że trochę odbiegnę od tematu. Otóż, mam jedno kluczowe pytanie do Ciebie, czy mogę Ciebie poprosić o ocenę, co w tym diagramie, w pakiecie "Baza danych" (prawy górny róg), jest modelowane: czy... struktura bazy, czy klasy używane w programie, które są mapowane na encje? :P

Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)