Java
Ar galite paaiškinti skirtumą tarp polimorfizmo ir abstrakcijos sąvokų objektinio programavimo srityje?
Skaitykite kodą ir pažymėkite klaidas /** * Klientas, įsigijęs bilietą, gali už papildomą mokestį pasirinkti konkretų vietą. * Pagrindinė vietų kaina nustatoma tarifais (išorinis paslaugų teikėjas). * Kai kuriems klientams su tam tikrais tarifais (PREMIUM, ULTRA) reikia taikyti nuolaidą apmokėjimo metu. * Rezervuojant klientui išrašomas sąskaita apmokėjimui. Mokėjimo valdymas vyksta išoriniuose servisuose. */ @Service public class SeatBookingService { @Autowired private SeatBookingRepository seatBookingRepository; @Autowired private TicketRepository ticketRepository; @Autowired private TariffClient tariffClient; @Autowired private CustomerClient customerClient; @Autowired private PaymentClient paymentClient; /** * Rezervacija. * @param seatCode vietos kodas (pvz., 19A) * @param ticketId bilieto ID */ @Transactional public void bookSeat(String seatCode, UUID ticketId) { var ticket = ticketRepository.findById(ticketId); // rezervuojame var seatBooking = new SeatBooking(seatCode, ticket.get().getFlightId(), ticketId, BookingStatus.BOOKED); seatBookingRepository.save(seatBooking); // ieškome bazinės kainos pasirinktam vietai lėktuve var basePrice = tariffClient.getBasePrice(ticket.get().getPlaneModel(), seatCode); // ieškome kliento duomenų Long userId = (Long) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); var userData = customerClient.getCustomer(userId); System.out.println("Rasta naudotojas " + userData.getFio() + " dokumento numeris " + userData.getDocument()); var price = basePrice; if (userData.getTariff() == "PREMIUM") { // 50% nuolaida price = basePrice * 0.5d; } if (userData.getTariff() == "ULTRA") { // 20% nuolaida price = basePrice * 0.8d; } var invoice = new Invoice(price, ticketId, userId); // išrašome sąskaitą paymentClient.sendInvoice(invoice); System.out.println("Sąskaita išrašyta"); } @Data @Table("seat_booking") public class SeatBooking { @Column private String seatCode; @Column private UUID flightId; @Column private UUID ticketId; @Column private BookingStatus status; } public enum BookingStatus { BOOKED, PAID; }
Ar galite papasakoti apie skirtingus propagation tipus, kuriuos galima nustatyti @Transactional anotacijoje?
Kokius šaltinius naudojate mokymosi medžiagų ir naujinimų paieškai technologijų srityje?
Ar įmanoma sukurti ryšius tarp skirtingų kolekcijų MongoDB duomenų bazėje?
Kaip pradėjote mokytis dirbti su Java ir savo pirmuosius projektus šiame kalboje?
Kaip formuojami užklausos į duomenų bazę?
Kuo grindžiamas Spring framework?
Kuo skiriasi SQL ir NoSQL duomenų bazės?
Kur naudojama @Bean anotacija?
Kur geriausia taikyti paveldėjimą ir asociaciją programavime?
Kas yra metodo idempotentiškumas?
Kokiu požiūriu į autentifikaciją ir autorizaciją yra įgyvendinta jūsų projekte naudojant Spring Security?
Kuo skiriasi HTTP užklausų metodai?
Kas yra AutoCloseable sąsaja ir kaip veikia try-with-resources konstrukcija Java?
Kodėl duomenų bazės yra geresnės nei tekstiniai failai?
Kas yra inkapsuliacija programavime?
Koks duomenų įkėlimo mechanizmas taikomas naudojant JOIN FETCH ORM?
Kokie požiūriai ir metodai leidžia išvengti problemų, kai keli srautai dirba vienu metu su vienu bendru ištekliumi?
Ant ko pagrindo veikia lambda išraiškos?