Menadżer rowerów

Menadżer rowerów
KR
  • Rejestracja:około 5 lat
  • Ostatnio:ponad 4 lata
  • Postów:20
0

Hej, od niedawna przerzuciłem się z Cpp na Jave i próbuję robić różne projekciki w oparciu o zadanka ze SPOJa i własne. Aktualnie bawię się w stworzenie prostego managera dodawania i wyświetlania na ekranie informacji o rowerach. Pomysł brzmi prosto, ale zawiesiłem się kompletnie. :/ Chciałbym sprowokować burzę mózgów.

Na czym polega mój problem? (Na moim braku doświadczenia w gruncie rzeczy.)
Założyłem sobie, że program ma tworzyć 'bazę danych', która będzie zawierać informację o:

  1. nazwie modelu rowera
  2. rozmiarze rowera
  3. kolorze
  4. montażu stopki
  5. dodatkowych akcesoriach

Program ma pozwolić wprowadzać i usuwać kolejne rekordy do tej 'bazy danych'. Projekt założyłem sobie o tyle ambitny, że chciałem poduczyć się na jego podstawie Springa i podpinania czegoś takiego pod localhosta np. przy użyciu xamppa. (Póki co Springiem i xamppem zajmę się na końcu) Do tej pory nie robiłem jeszcze większych projektów niż zadanka na studiach i ze wspomnianego spoja, stąd wpadłem na taki pomysł (tłumaczę zanim ktoś wyśmieje, że porywam się z motyką na słońce).

Założyłem sobie, że wszystkie informacje o rowerze będą w postaci obiektu. Klasa postawiona i stanąłem w miejscu. Jak powinienem w oparciu o w/w pomysł stworzyć tablicę obiektów (i czy to musi być tablica), która będzie się powiększała o kolejne dodane rowery? Ktoś bardziej doświadczony w Javie podzieliłby się ze mną pomysłem i doświadczeniem? :) Lub może macie jakieś fajne źródła z materiałami, które mogłyby popchnąć mnie z dalszą realizacją takiego projektu? Dziękuję za każdą pomoc i uwagę. :)

Kopiuj
package pl.BikesManagment;

public class Data {

    private String bikeName;
    private String sizeOfBike;
    private String colorOfBike;
    private String bicycleFoot;
    private String accessories;

    Data(String newBikeName, String newSizeOfBike, String newColorOfBike, String newBicycleFoot, String newAccessories)
    {
        this.bikeName = newBikeName;
        this.sizeOfBike = newSizeOfBike;
        this.colorOfBike = newColorOfBike;
        this.bicycleFoot = newBicycleFoot;
        this.accessories = newAccessories;

        String bikesToPrepare[] = { bikeName, sizeOfBike, colorOfBike, bicycleFoot, accessories };
        System.out.print(bikesToPrepare);
    }

    public String getBikeName() {
        return bikeName;
    }

    public void setBikeName(String bikeName) {
        this.bikeName = bikeName;
    }

    public String getSizeOfBike() {
        return sizeOfBike;
    }

    public void setSizeOfBike(String sizeOfBike) {
        this.sizeOfBike = sizeOfBike;
    }

    public String getColorOfBike() {
        return colorOfBike;
    }

    public void setColorOfBike(String colorOfBike) {
        this.colorOfBike = colorOfBike;
    }

    public String getBicycleFoot() {
        return bicycleFoot;
    }

    public void setBicycleFoot(String bicycleFoot) {
        this.bicycleFoot = bicycleFoot;
    }

    public String getAccessories() {
        return accessories;
    }

    public void setAccessories(String accessories) {
        this.accessories = accessories;
    }
}
edytowany 1x, ostatnio: Kratos
Charles_Ray
  • Rejestracja:około 17 lat
  • Ostatnio:dzień
  • Postów:1873
2

Jestem na tyle doświadczony, aby doradzić Ci zapoznanie się z Java Collection Framework: https://docs.oracle.com/javase/8/docs/technotes/guides/collections/overview.html Zacznij od ArrayList, jeśli chcesz mieć tablicę obiektów z dostępem po indeksie.


”Engineering is easy. People are hard.” Bill Coughran
AK
  • Rejestracja:ponad 6 lat
  • Ostatnio:dzień
  • Postów:3561
3
Kratos napisał(a):

Hej, od niedawna przerzuciłem się z Cpp na Jave i próbuję robić różne projekciki w oparciu o zadanka ze SPOJa i własne. Aktualnie bawię się w stworzenie prostego managera dodawania i wyświetlania na ekranie informacji o rowerach. Pomysł brzmi prosto, ale zawiesiłem się kompletnie. :/ Chciałbym sprowokować burzę mózgów.

Jak powinienem w oparciu o w/w pomysł stworzyć tablicę obiektów (i czy to musi być tablica), która będzie się powiększała o kolejne dodane rowery?

Nie tablica, np ArrayList<Rower>

Co do kodu:
nazwa klasy Data mówi ... właściwie nic.

dlaczego same stringi? Użyj typów. Np liczbowych na rozmiar, enum na kolor, chyba bool na stopkę (nie wiem co myślałeś o stopce)

przemyśl settery, masz ich za dużo. Rozmiar roweru aż do złomowania się nie zmienia na pewno.

konstruktor bez słowa zakresu dostępu, tj. package, jest ciekawy, użyłeś go świadomie? To może mieć sens, zależnie od zamysłu programu. Poczytaj Dostęp pakietowy i w googlu. To moze być początek czegoś fajnego.


Bo C to najlepszy język, każdy uczeń ci to powie
edytowany 1x, ostatnio: AnyKtokolwiek
KR
  • Rejestracja:około 5 lat
  • Ostatnio:ponad 4 lata
  • Postów:20
1
AnyKtokolwiek napisał(a):
Kratos napisał(a):

Hej, od niedawna przerzuciłem się z Cpp na Jave i próbuję robić różne projekciki w oparciu o zadanka ze SPOJa i własne. Aktualnie bawię się w stworzenie prostego managera dodawania i wyświetlania na ekranie informacji o rowerach. Pomysł brzmi prosto, ale zawiesiłem się kompletnie. :/ Chciałbym sprowokować burzę mózgów.

Jak powinienem w oparciu o w/w pomysł stworzyć tablicę obiektów (i czy to musi być tablica), która będzie się powiększała o kolejne dodane rowery?

Nie tablica, np ArrayList<Rower>

Co do kodu:
nazwa klasy Data mówi ... właściwie nic.

dlaczego same stringi? Użyj typów. Np liczbowych na rozmiar, enum na kolor, chyba bool na stopkę (nie wiem co myślałeś o stopce)

przemyśl settery, masz ich za dużo. Rozmiar roweru aż do złomowania się nie zmienia na pewno.

konstruktor bez słowa zakresu dostępu, tj. package, jest ciekawy, użyłeś go świadomie? To może mieć sens, zależnie od zamysłu programu. Poczytaj Dostęp pakietowy i w googlu. To moze być początek czegoś fajnego.

O kurcze, sporo przydatnych uwag. Bardzo dziękuję :) Z nazwą Data masz w zupełności rację. Jak zaczynałem pisać projekt, to na etapie projektowania w schemacie blokowym wymyśliłem sobie, że będę miał klasę wyłącznie od informacji rowerowych i tak to sobie zapisałem z automatu. Poprawię żeby było bardziej zrozumiale. Początkowo założyłem sobie że program ma być maksymalnie prosty a potem będę go aktualizował (stąd te Stringi), ale jak tak teraz myślę to faktycznie dużo lepiej jest zmienić typy z Stringa na inne. Aż się zastanawiam dlaczego tak to postanowiłem zrobić. Kwestia ramy to akurat rzecz, która występuje u niektórych producentów dlatego ją sobie dodałem. Natomiast w temacie konstruktora to było częściowo świadomie, częściowo nie. W Cpp nigdy nie dawałem zakresu dostępu, więc z przyzwyczajenia zrobiłem tak samo. Natomiast super, że zwróciłeś na to uwagę, bo chętnie poczytam w tym temacie więcej. Dziękuję pięknie!

Settery i gettery - nie mam wyrobionego obycia z nimi. Wiem, że to nie dobrze, nie zawsze wiem kiedy powinienem je stworzyć. Zwykle robię je pod dyktando konstruktora.

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)