Java
Nesne yönelimli programlamada polimorfizm ve soyutlama kavramları arasındaki farkı açıklayabilir misiniz?
Kodu okuyun ve hataları vurgulayın /** * Satın alınmış bir bileti olan müşteri, ek ücret karşılığında belirli bir koltuk seçebilir. * Koltukların temel fiyatı, tarifeler (harici servis) tarafından belirlenir. * Belirli tarifelere (PREMIUM, ULTRA) sahip müşteriler için ödeme sırasında indirim yapılması gerekir. * Rezervasyon sırasında, ödeme için bir fatura düzenlenir. Ödeme yönetimi üçüncü taraf bir serviste gerçekleştirilir. */ @Service public class SeatBookingService { @Autowired private SeatBookingRepository seatBookingRepository; @Autowired private TicketRepository ticketRepository; @Autowired private TariffClient tariffClient; @Autowired private CustomerClient customerClient; @Autowired private PaymentClient paymentClient; /** * Rezervasyon. * @param seatCode koltuk kodu (örneğin 19A) * @param ticketId bilet kimliği */ @Transactional public void bookSeat(String seatCode, UUID ticketId) { var ticket = ticketRepository.findById(ticketId); //rezervasyon yapıyoruz var seatBooking = new SeatBooking(seatCode, ticket.get().getFlightId(), ticketId, BookingStatus.BOOKED); seatBookingRepository.save(seatBooking); //uçaktaki seçilen koltuk için temel tarifeyi buluyoruz var basePrice = tariffClient.getBasePrice(ticket.get().getPlaneModel(), seatCode); //müşteri verilerini buluyoruz Long userId = (Long) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); var userData = customerClient.getCustomer(userId); System.out.println("Bulunan kullanıcı " + userData.getFio() + " belge numarası " + userData.getDocument()); var price = basePrice; if (userData.getTariff() == "PREMIUM") { //%50 indirim price = basePrice * 0.5d; } if (userData.getTariff() == "ULTRA") { //%20 indirim price = basePrice * 0.8d; } var invoice = new Invoice(price, ticketId, userId); //faturayı gönder paymentClient.sendInvoice(invoice); System.out.println("Fatura gönderildi"); } @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; }
@Transactional anotasyonunda ayarlanabilecek farklı Propagation türleri hakkında konuşabilir misin?
Teknoloji alanında eğitim materyalleri ve güncellemeleri ararken hangi kaynakları kullanıyorsunuz?
MongoDB veritabanındaki farklı koleksiyonlar arasında bağlantılar kurmak mümkün mü?
Java ile çalışma ve bu dildeki ilk projelerinizi nasıl öğrenmeye başladınız?
Veritabanı sorguları nasıl oluşturulur?
Spring çerçevesi neye dayanır?
SQL ve NoSQL veritabanları arasındaki fark nedir?
@Bean anotasyonu nerede kullanılır?
Programlamada kalıtım ve ilişkilendirmeyi nerede kullanmak en iyisidir?
Bir metodun idempotansı nedir?
Projenizde Spring Security'de hangi kimlik doğrulama ve yetkilendirme yaklaşımı uygulanıyor?
HTTP istek yöntemleri arasındaki fark nedir?
Java'da AutoCloseable arayüzü nedir ve try-with-resources yapısı nasıl çalışır?
Veritabanları neden metin dosyalarından daha iyidir?
Programlamada kapsülleme nedir?
ORM'de JOIN FETCH kullanılırken hangi veri yükleme mekanizması kullanılır?
Birden fazla iş parçacığının aynı ortak kaynakla eşzamanlı çalışması sırasında sorunların ortaya çıkmasını önleyen yaklaşımlar ve yöntemler nelerdir?
Lambda ifadeleri neye dayanır?