ClassClasses with their fields and methods, and how they inherit from and use each other.Copy MarkdownView MarkdownThemeKohuKohu DarkDefaultAn online store's ordersCopy sourceOpen in Playgroundplacescontainsrefers topaid by1*11..**110..1Customer+UUID id+String email+placeOrder(Cart cart) : OrderOrder+UUID id+OrderStatus status+Money total()+cancel()OrderLine+int quantity+Money unitPriceProduct+String sku+String name+Money priceOrderStatus«enumeration»PENDINGPAIDSHIPPEDCANCELEDPayment+String providerRef+Money amount+refund()Payment gatewaysCopy sourceOpen in Playgroundcharges throughPaymentGateway«interface»+authorize(Charge charge) : Auth+capture(Auth auth)+refund(Auth auth, Money amount)StripeGateway-String apiKey+authorize(Charge charge) : Auth+capture(Auth auth)+refund(Auth auth, Money amount)AdyenGateway-String merchantAccount+authorize(Charge charge) : Auth+capture(Auth auth)+refund(Auth auth, Money amount)CheckoutService-PaymentGateway gateway+checkout(Cart cart) : ReceiptA generic repositoryCopy sourceOpen in PlaygroundreturnsstoresRepository<T>«interface»+findById(UUID id) : T+findAll(PageRequest request) : Page<T>+save(T entity) : T+delete(UUID id)Page<T>+List<T> items+int number+int totalPages+hasNext() : boolInvoiceRepository+findOverdue(Date asOf) : List<Invoice>Invoice+UUID id+Money amountDue+Date dueDateAbstract classes and static membersCopy sourceOpen in PlaygroundcreatesShape«abstract»+String id+area() : double+perimeter() : double+describe() : StringCircle+double radius+area() : double+perimeter() : doubleRectangle+double width+double height+area() : double+perimeter() : doubleShapeFactory-int created+fromSvg(String path) : ShapePackages in namespacesCopy sourceOpen in PlaygroundCatalogBillingbills for1*1*Product+String sku+String titleCategory+String slugInvoice+Money total+issue()LineItem+int quantityA tide pool sensor networkCopy sourceOpen in Playgroundrecordspolls1*11..12SensorNode+String nodeId+GeoPoint location+int batteryPercent+sample() : ReadingReading+Instant takenAt+double waterTempC+double salinityPsu+double tideHeightMGateway+String siteName+upload(List<Reading> batch)Wakes every 10 minutes,sleeps when the tide covers itUploads over LTEwhen the signal allowsPreviousC4NextEntity relationship