Projekt w ramach programowanie obiektowego

Projekt w ramach programowanie obiektowego
3P
  • Rejestracja:około 5 lat
  • Ostatnio:6 miesięcy
  • Postów:72
0

Siemano, mam do naskrobania projekt. na podstawie takiego podziału muszę utworzyć klasy i interfejsy:

  • wagon pasażerski, wymagający podłączenia do sieci elektrycznej lokomotywy
  • wagon pocztowy, wymagający podłączenia do sieci elektrycznej lokomotywy
  • wagon bagażowo-pocztowy
  • wagon restauracyjny, wymagający podłączenia do sieci elektrycznej lokomotywy
  • wagon towarowy podstawowy
  • wagon towarowy ciężki
  • wagon chłodniczy, będący rodzajem wagonu towarowego podstawowego, wymagający podłączenia do sieci elektrycznej lokomotywy
  • wagon na materiały ciekłe, będący rodzajem wagonu towarowego podstawowego
  • wagon na materiały gazowe, będący rodzajem wagonu towarowego podstawowego
  • wagon na materiały wybuchowe, będący rodzajem wagonu towarowego ciężkiego
  • wagon na materiały toksyczne, będący rodzajem wagonu towarowego ciężkiego
  • wagon na ciekłe materiały toksyczne, który jest rodzajem wagonu towarowego ciężkiego, oraz posiada cechy wagonu na materiały ciekłe

jak polecacie to podzielić? ktoś chce w ramach treningu ze mną pokminić?

edytowany 2x, ostatnio: Riddle
RequiredNickname
Raczej mało komu się będzie chciało rozkminiac(przez pryzmat paradygmatu obiektowego) tak abstrakcyjne problemy natury akademickiej. Po prostu poczytaj co to OOP i jak się tego używa i do dzieła.
3P
pisz za siebie. wiem co to oop, nie są obce mi interfejsy, klasy abstrakcyjne. problem ten nie jest wbrew pozorom taki trywialny, szczególnie ostatni wagon. stąd chciałem się poradzić kogoś kto ma większe doświadczenie
RequiredNickname
no ja jednak stawiam orzechy przeciw dolarom, że nie wiesz co to prawdziwe OOP (tl:dr to nie klasy i interfejsy) ;-)
ZD
  • Rejestracja:około 3 lata
  • Ostatnio:ponad rok
  • Postów:2310
0

@3l3ctric_philip:

o sssso chodzi o ssssso chodzi

Daj prawdziwą treść zadania, a nie interpretację


If you put a million monkeys at a million keyboards, one of them will eventually write a Java program - the rest of them will write Perl
3P
projekt jest na 3 strony A4. muszę podzielić wagony na interfejsy, klasy abstrakcyjne i zwykłe. czego nie rozumiesz?
ZD
Ja rozumiem mowa o Modelu - a to nie ma wiele wspólnego z GUI
3P
w sumie masz rację. no ale najpierw muszę zaimplementować logikę, aby wziąć się na gui
LukeJL
  • Rejestracja:około 11 lat
  • Ostatnio:minuta
  • Postów:8411
1

Widzę tu potencjał na 3 klasy/interfejsy:

  • wagon
  • Lokomotywa
  • Towar

Reszta to parametryzacja (np. Parametry oznaczające rodzaj przewożonego towaru - nazwę, stan skupienia itp. )

W sumie… bez kontekstu to nawet ciężko z tego zrobić jakieś OOP, bo co tu jest obiektowego? Po prostu dane. Mamy tutaj 3 rodzaje „Bytów” (przynajmniej ja dostrzegłem te 3) i to jeszcze można odróżnić. Ale to czy coś jest na materiały gazowe czy ciekłe nie wymaga kolejnej klasy (No chyba, że faktycznie zachowanie będzie inne - ale wtedy byśmy musieli rozważać konkretną grę i jej konkretne zasady)

No i jak chcesz takiej elastyczności, to tez można się zainteresować wzorcem Entity Component System. A jeśli nie, to po prostu warto skupiać się na kompozycji wszystkiego i unikać dziedziczenia.

Możesz też zajrzeć do źródeł istniejących gier (np. OpenTTD) i zobaczyć, jak tam to rozwiązali.
Np. tutaj masz klasę Train, która jak rozumiem reprezentuje wagon albo lokomotywę i zawiera połączenia do kolejnych wagonów w pociągu https://github.com/OpenTTD/OpenTTD/blob/master/src/train.h
I ma różne ciekawe właściwości


edytowany 4x, ostatnio: LukeJL
AK
  • Rejestracja:ponad 6 lat
  • Ostatnio:11 dni
  • Postów:3561
0
LukeJL napisał(a):

Widzę tu potencjał na 3 klasy/interfejsy:

  • wagon
  • Lokomotywa
  • Towar

Więcej.

I to się ujawnia w realu. Co więcej, to jest w jak najlpeszym sensie nasz interface
Można puścić zestaw pasażerski w oparciu o lokomotywę X, ale nie w zimie, bo lokomotywa nie może dać znacznej mocy elektrycznej (na ogrzewanie), tylko na oświetlenie.
Historycznie zmieniało się całe konfiguracje na liniach w Polsce prowincjonalnej, żeby w zimie jeździły parowozy itd

https://pl.wikipedia.org/wiki/Sprz%C4%99g

Sądzę, ze wymyślający zadanie chciał uzyskać niemożliwość połączenia np pasażerskiego za towarowym

3l3ctric_philip napisał(a):

siemano, mam do naskrobania projekt. na podstawie takiego podziału muszę utworzyć klasy i interfejsy:
• wagon pasażerski, wymagający podłączenia do sieci elektrycznej lokomotywy
• wagon pocztowy, wymagający podłączenia do sieci elektrycznej lokomotywy
• wagon bagażowo-pocztowy

Jakiej mocy ten prąd ?

jak polecacie to podzielić? ktoś chce w ramach treningu ze mną pokminić?

Ja widzę INTERFEJSY "Prąd małej mocy" "prąd dużej mocy"
Wydzielić Scharfenberga
(skądinąd, zadanie o tym milczy)

Zadanie ma moim zdaniem wiele słabości, całe dywagacje o ładunku, jaki wagony niosą, nie mam najmniejszego pojęcia jak to wyrazić w OOP (choć mogę sobie wyobrażać, że dawca zadania "chciał dobrze")


Bo C to najlepszy język, każdy uczeń ci to powie
edytowany 2x, ostatnio: AnyKtokolwiek
AK
Taka scenka z realu: żeby przestawić tzw "jednostkę" czyli EZT na interfejscach Scharfenberga na bocznicę, gdzie nie ma prądu, podjeżdża SM42, która ma home-made adapter bez prądu ani pneumatyki (SM42 natywnie nie ma nic wspólnego z Scharfenbergiem)
AK
  • Rejestracja:ponad 6 lat
  • Ostatnio:11 dni
  • Postów:3561
0

@AnyKtokolwiek:

W finale, cały pociąg by był jakąs listą Linked List, wyobrażmy sobie eszelon na poligon, idąc od lokomotywy najpierw "wyższe" interfejsy (wagony z żołnierzami, ogrzewane), potem zwykłe towarowe, (na końcu czerwone lampy - na akumulatory czy dysponujemy prądem, nie wiem). Sprzęg pneumatyczny hamulca koniecznie.

Tak sie wczuwam, "co poeta miał na myśli".
Dywagacje o rodzaju ładunku w wagonie towarowym), to w innej przestzreni, raczej dziedziczenie klas, niż impelmentacja interfejsów - tyle że to robota bez sensu, bo nic z tego nie wynika


Bo C to najlepszy język, każdy uczeń ci to powie
W0
  • Rejestracja:ponad 12 lat
  • Ostatnio:4 minuty
  • Postów:3558
0

Z tego opisu trochę niewiele wynika. Np. czy "wagon towarowy ciężki" jest zwykłą klasą, czy abstrakcyjną?
Druga sprawa jest taka, że jak ci coś podpowiem to nie wiem, czy będzie dobrze ;)
Chodzi o to, że np. dla mnie to, czy wagon trzeba podłączyć do prądu czy nie to własność każdego możliwego wagonu (tj. interfejs/klasa Wagon, która byłaby na dole drzewa hierarchii posiada metodę electricSupplyConnectionRequired()). Strzelam, że zaraz wyjdzie, że należało mieć interfejs typu RequiresElectricSupplyConnection skoro to ćwiczenie na interfejsy i klasy.

Tak czy inaczej - wrzuć tutaj jak to według ciebie powinno wyglądać - wtedy postaram się odnieść i skomentuję jak to według mnie powinno wyglądać.

edytowany 2x, ostatnio: wartek01
piotrpo
  • Rejestracja:ponad 7 lat
  • Ostatnio:3 dni
  • Postów:3277
2

Imo to występują tutaj następujące sposoby połączeń:
elektryczne połączenie z lokomotywą
fizyczne połączenie z innym wagonem (nie ujęte w warunkach zadania, nie omawiam).

Wagony są łączone w łańcuch, więc nie zadziała połączenie gdzie tuż za lokomotywą będzie wagon bez instalacji elektrycznej.
Lokomotywa ma jedynie gniazdko do prądu, wagon ma zarówno gniazdko, jak i wtyczkę, więc pojawiają się następujące interface'y:
interface DostawcaPrądu, interface OdbiorcaPrądu

Teraz dziedziczenie, na samej górze jest klasa abstrakcyjna PojazdSzynowy, dziedzicza po niej zarówno Lokomotywa, jak i również abstrakcyjny wagon. Po abstrakcyjnym wagonie, dziedziczą wagony Pasażerski i PodstawowyTowarowy reszta hierarchii dziedziczy po tych wagonach.

Na koniec, wagony, które wymagają podłączenia do sieci elektrycznej dostają final class i 2 interface'y, lokomotywa dostaje jedynie interface DostawcaPrądu

Pozostają pytania co zrobić z wagonem restauracyjnym (może być albo pasażerskim, albo towarowym, ja bym go dał bezpośrednio pod PojazdSzynowy, ewentualnie wprowadził abstrakcyjny WagonSpecjalny. Druga pułapka, to:

wagon na ciekłe materiały toksyczne, który jest rodzajem wagonu towarowego ciężkiego,
oraz posiada cechy wagonu na materiały ciekłe

Co sugeruje wykorzystanie wielodziedziczenia (w Java niemożliwe), albo wprowadzenie interface'u TowaryCiekłe co jest możliwe, ale bez sensu.

Ogólnie, to zadanie czysto akademickie i pokazuje raczej jak szybko kończą się możliwości OOD/OOP.

3P
  • Rejestracja:około 5 lat
  • Ostatnio:6 miesięcy
  • Postów:72
0
wartek01 napisał(a):

Z tego opisu trochę niewiele wynika. Np. czy "wagon towarowy ciężki" jest zwykłą klasą, czy abstrakcyjną?
Druga sprawa jest taka, że jak ci coś podpowiem to nie wiem, czy będzie dobrze ;)
Chodzi o to, że np. dla mnie to, czy wagon trzeba podłączyć do prądu czy nie to własność każdego możliwego wagonu (tj. interfejs/klasa Wagon, która byłaby na dole drzewa hierarchii posiada metodę electricSupplyConnectionRequired()). Strzelam, że zaraz wyjdzie, że należało mieć interfejs typu RequiresElectricSupplyConnection skoro to ćwiczenie na interfejsy i klasy.

Tak czy inaczej - wrzuć tutaj jak to według ciebie powinno wyglądać - wtedy postaram się odnieść i skomentuję jak to według mnie powinno wyglądać.

Hej, no ja pojechałem tak: klasy abstrakcyjne: Wagon, Towarowy, Interfejs Wagon Elektryczny a reszta to klasy z poszczególnymi wagonami. Trochę strasznie to wygląda, bo wyszło 12 klas. a ciekłe materiały toksyczne rozegrałem tak, że dałem pola z dwóch klas (//pola wagonu ciężkiego z materiałami toksycznymi oraz wagonu podstawowego z materiałami ciekłymi), bo nie mogę dziedziczyć z dwóch klas, z interfejsami jakoś mi to nie wychodziło (potrzeba pól).

W0
  • Rejestracja:ponad 12 lat
  • Ostatnio:4 minuty
  • Postów:3558
1
3l3ctric_philip napisał(a):

Hej, no ja pojechałem tak: klasy abstrakcyjne: Wagon, Towarowy, Interfejs Wagon Elektryczny a reszta to klasy z poszczególnymi wagonami. Trochę strasznie to wygląda, bo wyszło 12 klas. a ciekłe materiały toksyczne rozegrałem tak, że dałem pola z dwóch klas (//pola wagonu ciężkiego z materiałami toksycznymi oraz wagonu podstawowego z materiałami ciekłymi), bo nie mogę dziedziczyć z dwóch klas, z interfejsami jakoś mi to nie wychodziło (potrzeba pól).

No ja bym to zrobił trochę inaczej. Klas oczywiście będzie dużo, więc zrobiłbym to tak:

Kopiuj
Interfejsy:
- ElectricConnectable
- LiquidMaterialContainer
- GasMaterialContainer
- ExplosiveMaterialContainer
- ToxicMaterialContainer

I teraz klasy:
x Wagon
  + PassengerWagon implements ElectricConnectable
  + PostalWagon implements ElectricConnectable
  + PostalLuggageWagon
  + RestaurantWagon implements ElectricConnectable
  x FreightWagon
    + BasicFreightWagon
      + CoolerWagon implements ElectricConnectable
      + LiquidMaterialWagon implements LiquidMaterialContainer
      + GasMaterialWagon implements GasMaterialContainer
    + HeavyFreightWagon
      + ExplosiveMaterialWagon implements ExplosiveMaterialContainer
      + ToxicMaterialWagon implements ToxicMaterialContainer
      + LiquidToxiMaterialWagon implements ToxicMaterialContainer, LiquidMaterialContaier

x - klasa abstrakcyjna
+ - klasa zwykła

Bierze się to z tego, że np. materiał przewożony może być jednocześnie toksyczny, wybuchowy, a także i gazowo-ciekły (tj. są mieszanki, które w zbiorniku są zarówno gazowe, jak i ciekłe).

AK
a co myślisz o kompozycji ?
W0
Rozumiem, że tu nie chodzi o to, w jaki sposób stworzysz konkretne klasy, ale o to, jak zaprojektować drzewko zależności.
AK
  • Rejestracja:ponad 6 lat
  • Ostatnio:11 dni
  • Postów:3561
0
3l3ctric_philip napisał(a):

Hej, no ja pojechałem tak: klasy abstrakcyjne: Wagon, Towarowy, Interfejs Wagon Elektryczny a reszta to klasy z poszczególnymi wagonami. Trochę strasznie to wygląda, bo wyszło 12 klas. a ciekłe materiały toksyczne rozegrałem tak, że dałem pola z dwóch klas (//pola wagonu ciężkiego z materiałami toksycznymi oraz wagonu podstawowego z materiałami ciekłymi), bo nie mogę dziedziczyć z dwóch klas, z interfejsami jakoś mi to nie wychodziło (potrzeba pól).

Ej, kolejarze, kolejarze (również ja)
O ile złącza (sprzęgi) pojazdu kolejowego, to jest interfejs, to zawartość (potencjalna) wagonu to kompozycja, wagon MA ZBIORNIK określonego typu, względnie MA ZDOLNOŚĆ określoność typu

piotrpo napisał(a):

.

Ogólnie, to zadanie czysto akademickie i pokazuje raczej jak szybko kończą się możliwości OOD/OOP.

Po pierwsze, znamy je w mglistym i korygowanym przekazie OP (pierwsza wersja była chyba o GUI)
a wiec i modelujemy, nie mając pełnego wyobrażanie o celach modelowania

O ile zamodelowanie wg sprzęgów jest dość jasne (pociąg zdolny/niezdolny do jazdy na szlaku), to wg zawartości wagonów najwyżej domniemane.


Bo C to najlepszy język, każdy uczeń ci to powie
3P
no chyba nie mogę wrzucić całej treści, bo jak wycieknie to będę posądzony o plagiat. praca jest "indywidualna" (cokolwiek mieści się w ramach tego terminu)
LukeJL
  • Rejestracja:około 11 lat
  • Ostatnio:minuta
  • Postów:8411
0
AnyKtokolwiek napisał(a):
LukeJL napisał(a):

Widzę tu potencjał na 3 klasy/interfejsy:

  • wagon
  • Lokomotywa
  • Towar

Więcej.

I to się ujawnia w realu.

Zależy w jakiej szczegółowości to symulować. Ponieważ nie było kontekstu, to wyobraziłem sobie, że to ma być na potrzeby gry. A tu są przydatne uproszczenia.
Plus nierobienie zbyt wielu klas, tylko stawianie na kilka klas + rozmaite parametry do tweakowania, miałoby tę zaletę, że można by rozszerzyć taką grę bez potrzeby ruszania samego kodu źródłowego (jako ciekawostkę mogę podać GTA2, który przechowywał wszystkie rodzaje samochodów w pliku tekstowym i można było sobie tweakować np. robić samochód z większym przyśpieszeniem albo bardziej masywny. I wtedy ze zwykłego samochodu zrobić coś w rodzaju czołgu albo wyścigówki. Niemając nawet dostępu do kodu źródłowego)

Można puścić zestaw pasażerski w oparciu o lokomotywę X, ale nie w zimie, bo lokomotywa nie może dać znacznej mocy elektrycznej (na ogrzewanie), tylko na oświetlenie.

Oo, to ma sens, czemu przy niektórych jest wymóg elektrycznej lokomotywy.


edytowany 4x, ostatnio: LukeJL
AK
  • Rejestracja:ponad 6 lat
  • Ostatnio:11 dni
  • Postów:3561
0
LukeJL napisał(a):
AnyKtokolwiek napisał(a):

Można puścić zestaw pasażerski w oparciu o lokomotywę X, ale nie w zimie, bo lokomotywa nie może dać znacznej mocy elektrycznej (na ogrzewanie), tylko na oświetlenie.

Oo, to ma sens, czemu przy niektórych jest wymóg, że wymaga elektrycznej lokomotywy.

Nie wiem, jestem kibicem. Ale niektóre diesle, które moga ciągnąc wagony pasażerskie, maja zbyt małej mocy generator 400V / przetwornicę.
Mniemam, nie mam wiedzy, że generator główny jest zaprojektowany na wyższe napiecie (podobne do sieciowego 3000V)

Na pewno polskie lokomotywy projektowane w zamiarze towarowych, nie mają nadmiaru prądu na złączu. Czy mogą nie mieć wcale, nie wiem, CHYBA ostatnie czerwone lampy maja niezależność, akumulatory czy co.

Dawne wagony pasażerskie, na przykład, miały autonomiczne prądnice (i lokalne akumulatory), dośc to było charakterystyczne, zaczynało się kręcić jak wagon ruszał. Bo np parowozy nie dawały prądu wcale, albo co kot napłakał, a mocą mechaniczną zabieraną przez prądnice nikt się zbytnio nie martwił

czemu przy niektórych jest wymóg, że wymaga elektrycznej lokomotywy.

Przywołasz konkretny przykład? Jako kolejo-kibica mnie interesuje


Bo C to najlepszy język, każdy uczeń ci to powie
edytowany 3x, ostatnio: AnyKtokolwiek
LukeJL
  • Rejestracja:około 11 lat
  • Ostatnio:minuta
  • Postów:8411
0

no miałem na myśli np. to:

wagon restauracyjny, wymagający podłączenia do sieci elektrycznej lokomotywy
wagon pocztowy, wymagający podłączenia do sieci elektrycznej lokomotywy
wagon pasażerski, wymagający podłączenia do sieci elektrycznej lokomotywy

ale nie wiedziałem, o co chodzi. Myślałem, że ty wiesz, skoro napisałeś, że nie w zimie, bo ogrzewanie.
Ale w sumie to ma jakiś sens. Jeśli chcemy ogrzewać potrawy / mieć światło, to potrzebujemy prąd


AK
Światło mniejszy problem, ogrzewanie wiekszy
LukeJL
ale po co do wagonu pocztowego elektryczność? Może mają jakąś chłodnię i przewożą paczki z jedzeniem kurczę.
AK
Wagon pocztowy miał obsługę, i to zbiorową, zachodziło tam sortowanie, wiec dobre oświetlenie to podstawa. Cholernie zimno tez nie powinno być
LukeJL
czyli wychodzi na to, że te wymagania z pierwszego posta nie są tylko wymysłem zlecającego zadanie, ale mają sens!
YA
  • Rejestracja:prawie 10 lat
  • Ostatnio:3 minuty
  • Postów:2368
0

A co jest celem projektu? Bez tego można mnożyć modele, które będą mniej lub bardziej przydatne do realizacji celu.

3P
Napisz aplikację, która będzie służyła do symulacji i obsługi logistycznej linii kolejowych z uwzględnieniem stacji kolejowych, połączeń, skrzyżowań linii oraz różnych składów pociągów.
LukeJL
będziesz do tego robić animacje jakieś tych pociągów? bo jak nie, to trochę bez sensu
Riddle
Administrator
  • Rejestracja:prawie 15 lat
  • Ostatnio:minuta
  • Lokalizacja:Laska, z Polski
  • Postów:10059
0

Relacje pomiędzy danymi które aplikacja ma ogarniać, to prawie nigdy nie jest relacja między elementami w języku programowania.

Jeśli chcesz zrobić zadanie faktycznie z programowania obiektowego, to polecam:

  • interface List i implementacje ArrayList, VectorList, LinkedList, DoubleLinkedList
  • interface Cache i implementacje MemoryCache, FileCache, RedisCache, DatabaseCache()
  • interface Client i implementacje HttpClient, WebSocketClient, KafkaClient

To co Ty opisałeś - czyli jakieś wagony, i relacje między nimi - to z punktu widzenia kodu źródłowego nie ma znaczenia. Jeśli ja słyszę, że jakiś klient powiedziałby mi "Wagon towarowy jest też wagonem podstawowym", to niczego nie mogę być pewien tak bardzo jak tego że na pewno nie zrobiłbym WagonTowarowy implements WagonPodstawowy. Najpewniej te dane wylądowałyby w mapie lub drzewie, lub czymś takim.

Najpisz najpierw co ta aplikacja ma robić z tymi wagonami - przetwarzać je? symulować, wyświetlać, co ma z nimi zrobić? Potem należałoby zaimplementować taką aplikacje, i potem ewentualnie doszukiwać się relacji pomiędzy elementami w kodzie. Zacząłeś od złej strony.

edytowany 1x, ostatnio: Riddle
piotrpo
  • Rejestracja:ponad 7 lat
  • Ostatnio:3 dni
  • Postów:3277
0

@Riddle: Mądre słowa, ale podkopujesz autorytet wykładowcy, który to zadanie napisał :)

W1
  • Rejestracja:ponad 3 lata
  • Ostatnio:8 miesięcy
  • Postów:29
1

Myślę, że autor po prostu dostał do zrobienia projekt na zaliczenie jakiegoś kursu ze studiów, w ramach którego ma przećwiczyć używanie różnych elementów programowania obiektowego. Nie doszukiwałbym się tutaj nie wiadomo czego.

JB
  • Rejestracja:około 2 lata
  • Ostatnio:3 dni
  • Lokalizacja:Holandia
  • Postów:843
0

Wziąłem dzienniczek studentów konsolowy i zamieniłem w bazę danych w konsoli (jak midnight commander) a na przycisk generowała stronę www. Trochę wyobraźni. Zaczynam brać się za jave, czy pomogę - oczywiście, że tak.


AK
  • Rejestracja:ponad 6 lat
  • Ostatnio:11 dni
  • Postów:3561
0
johnny_Be_good napisał(a):

Wziąłem dzienniczek studentów konsolowy i zamieniłem w bazę danych w konsoli (jak midnight commander) a na przycisk generowała stronę www. Trochę wyobraźni. Zaczynam brać się za jave, czy pomogę - oczywiście, że tak.

Ale tylko C się liczy


Bo C to najlepszy język, każdy uczeń ci to powie
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)