Classe astratta vs relazione tra classi

0

Ricerca della soluzione più semplice in cui un utente può ordinare un articolo.

Se qualcuno acquista un oggetto, avrà un indirizzo. Che quindi è la fattura e l'indirizzo di spedizione. Ma potrebbe aggiungere un altro indirizzo se l'indirizzo della fattura è diverso dall'indirizzo di spedizione.

Ho scritto un codice con due classi Purchase e Address . Dove l'acquisto ha una relazione uno-a-molti con l'indirizzo. Fin qui tutto bene e tutto funziona bene.

Ma ora potrei avere una confusione. Stavo pensando che potrei anche creare una classe AbstractAddress . Dove Purchase estende AbstractAddress e Address estende anche AbstractAddress . Ora se c'è un new Purchase l'indirizzo sarà parte di acquisto e la relazione (uno-a-molti) da acquisto a indirizzo avverrà solo se l'acquisto ottiene ha aggiunto un altro indirizzo.

È corretto? Sarebbe meglio? Qualcuno potrebbe per favore far luce su questo?

Grazie

    
posta caramba 27.07.2016 - 18:12
fonte

1 risposta

4

No, non è corretto.

Se rendi Purchase estendi AbstractAddress , stai dicendo che un Purchase è una specie di AbstractAddress specializzato, che non lo è. È come dire che un Car è un% specializzatoWindshield.

La relazione logica tra Purchase e Address è di composizione, non di ereditarietà.

Aggiungi solo due membri dell'indirizzo ad acquistare.

Pseudocodice:

public class Purchase {

      private shippingAddress Address;
      private invoiceAddress Address;   

      public void setShippingAddress(Address address){
            set shippingAddress=address;
      }

      public void setInvoiceAddress(Address address){
            set invoiceAddress=address;
      }

      public Address getShippingAddress(Address address){
            return shippingAddress;
      }

      public Address getInvoiceAddress(){
            return invoiceAddress;
      }

}
risposta data 27.07.2016 - 18:35
fonte