• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

MVC - wypożyczalnia samochodów - czy dobrze rozumiem ten wzorzec?

Object Storage Arubacloud
0 głosów
612 wizyt
pytanie zadane 6 lipca 2018 w Java przez must Bywalec (2,980 p.)
Cześć.

Przyszedł czas, żebym zrobił coś "poważniejszego" aniżeli kółko i krzyżyk czy ToDoApp.

Postanowiłem zrobić wypożyczalnię samochodów z bazą danych.

Poczytałem trochę o wzorcu projektowym jakim jest MVC (model-view-controller). I tutaj powstaje pytanie, czy dobrze to rozumiem.

W jednym folderze będe miał modele czyli np: auto, klient, pracownik.... i chyba nie ma więcej modeli tutaj? Czy coś jeszcze można wymyślić. I tutaj metody takie jak getName czy setName.

W drugim folderze będzie widok: nie uczyłem się gui, więc będzie to na zasadzie system.out.print, tutaj chyba idea jest najprostsza wyświetla daną rzecz. I tutaj metoda np taka jak displayAvaibleCars

W trzecim folderze będzie kontroler i tutaj nie do końca rozumiem, co on ma przykładowo robić?

Strasznie mi ciężko to zrozumieć

 

//edit zapomniałem o bazie danych.

Osobno folder na bazę danych, tam klasa z metodami takimi jak insertNewCar czy coś takiego. I tutaj rozmumiem, że model za pomocą metody get pobiera właśnie te dane z bazy?

2 odpowiedzi

+1 głos
odpowiedź 7 lipca 2018 przez Andrus19 Bywalec (2,260 p.)
wybrane 7 lipca 2018 przez must
 
Najlepsza

Hej, fajnie że próbujesz wykorzystać wzorzec tylko pamietaj że nie ma jednego idealnego wykorzystania wzorca.

MVC daje wskazówki z jakich warstw może składać się nasza aplikacja i za co konkretna warstwa odpowiada.

M - tutaj powinna znajdować się logika aplikacji - główna cześć twojego programu, bez którego pozostałe cześci nie mają sensu. W twoim przypadku: wypożyczanie aut, naliczanie opłat, rabatów itp.

V - warstwa związana z interfejsem użytkownika - jak chcesz zaprezentować mu dostępne w systemie funkcje

C - warstwa pośrednicząca między powyższymi, może zarządzać twoim modelem oraz odświeżaniem widoku użytkownikowi

Staraj się unikać metod get i set w miejsach gdzie opisujesz logikę aplikacji np.:

customer.rent(car)

zamiast

customer.getRentedCars().add(car)

- dzięki temu nie wyciągamy wnętrzności na zewnątrz :)

Podział na 3 foldery niekoniecznie musi być najlepszym wyborem ale to już sobie obejrzyj niżej.

link do jednego z lepszych polskich wykładów odnośnie architektury aplikacji.

komentarz 7 lipca 2018 przez must Bywalec (2,980 p.)
Dzięki za odpowiedź! Mógłbyś podać przykłady klas kontrolera?

Jeżeli chodzi o model, piszesz o naliczaniu opłat, dajmy na to, że za każdy dzień będzie naliczane tam 10$. Mam więc napisać klasę (po polsku) naliczaczOpłat i w niej jakie metody?

Chyba mylę definicję modelu z obiektem, nie wiem dlaczego... :D

Jeżeli chodzi o te metody get/set, to w takim razie jak mam klienta, a on ma dane imie/nazwisko/.... to jak nie użyć tutaj getterów i setterów?

Dla mnie customer(model).rent(car)[kontroler]? to tak działa?
komentarz 7 lipca 2018 przez Andrus19 Bywalec (2,260 p.)
edycja 7 lipca 2018 przez Andrus19

Przykłądy będą się różnić w zależności od szkieletu aplikacji (nie napisałeś z jakich technologii korzystasz)

1) w przypadku aplikacji opartych o spring framework może to być:

@RestController
class CarConroller {

    //controller odbiera żądanie klienta
    @GetMapping("cars")                                                 
    Collection<Car> getAvailableCars() {
        //przekazuje wykonanie zadania do odpowiedniego serwisu
        //i zwraca rezultat
        return carRentalSerive.findAllNotRentedCars();
    }
}

2) z użyciem swinga może to wyglądać tak 

//pseudokod - nie znam swinga ;]
showCarsButton.addAcctionListener(carController);

class CarController {

    private CarListVIew carListView;

    //listener nasłuchujacy na kliknięcia przycisku czyli działania 
    ///użytkownika
    void actionPerformed(ActionEvent e) { 
        //zlecenia zadania wyszukania samochodów odpowiedniemu serwisowi
        List<Cars> cars = carRentalService.findAllNotRentedCars();
        //odświeżenie widoku z nowymi samochodami
        carListView.refreshCarList(cars);
}

zauważ ze w obu przypadkach kontroler wykonuje takie same zadania

komentarz 7 lipca 2018 przez must Bywalec (2,980 p.)
Szczerze powiedziawszy, to z żadnej technologii nie korzystam :D Żadnej się na ten moment nie uczyłem. Jak się uczyłem o bazie danych mysql, to obejrzałem podstawy jak zupdate'owac dane, dodac, usunac. Dalej widziałem filmiku o Swingu, ale uznałem to za niepotrzebne na ten moment.
komentarz 7 lipca 2018 przez must Bywalec (2,980 p.)
Postanowiłem napisać to po swojemu. Później wrzuce na jaąs strone z codereview i zobaczymy co to będzie.

Ale i tak dzięki za odpowiedzi!
0 głosów
odpowiedź 6 lipca 2018 przez Wiciorny Ekspert (269,670 p.)
Cześć zajrzyj tutaj;

http://www.jsystems.pl/blog/artykul.html?id=301

Katalogizacja plików wyjaśniona i wszystko w miare rozsądku
komentarz 6 lipca 2018 przez must Bywalec (2,980 p.)
Czy to się na pewno odnosi do tego co ja bym chciał wiedzieć? Bo tam widzę Springa i nie jestem pewien. Poza tym masa innych rzeczy, które nie tyczą się tego wątku :D
Nic o modelach, kontrolerach etc.
 

jezeli jest tam coś takiego, to Sorki ale patrzę na szybko z telefonu i nie widzę

Podobne pytania

0 głosów
0 odpowiedzi 315 wizyt
pytanie zadane 8 lipca 2018 w Java przez must Bywalec (2,980 p.)
0 głosów
2 odpowiedzi 340 wizyt
0 głosów
1 odpowiedź 269 wizyt
pytanie zadane 14 września 2018 w Java przez must Bywalec (2,980 p.)

92,550 zapytań

141,392 odpowiedzi

319,519 komentarzy

61,935 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...