Menadżer rowerów

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ę. :)

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;
    }
}
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.

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.

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.

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