OO Class Design per carte bancomat

-1

Devo progettare una classe per le carte bancomat con i seguenti attributi:

  1. Nome del titolare della carta
  2. Numero carta
  3. Pin

Oltre ai getter e ai setter, ho un metodo per convalidare il pin dello sportello automatico. Secondo il principio di incapsulamento, tutti i metodi relativi allo sportello automatico dovrebbero far parte della classe ATM.

Ma nel caso, in seguito, dobbiamo modificare la logica aziendale del metodo di convalida. Non dovremmo modificare la classe secondo il principio Open-Closed ed estendere la classe e creare una nuova classe mi farà cambiare l'istanza della classe ATM dal progetto completo.

Un modo è avere un modello factory che mi dà l'oggetto ATM e in seguito quando estenderò la classe cambierò l'oggetto ATM nell'oggetto NewATM.

Ora ho le seguenti domande per il problema:

  1. Il metodo di validazione deve essere parte della classe ATM?
  2. C'è un altro modo più pulito per risolvere il problema?
posta Karan Khanna 12.04.2018 - 18:13
fonte

1 risposta

1

Sono scettico sulla tua applicazione del principio Open / Closed in questo contesto.

Wikipedia definisce il principio Open Closed come "le classi dovrebbero essere aperte per l'estensione, ma chiuse per la modifica". Ma chiarisce anche questa affermazione dicendo: "in altre parole, le classi dovrebbero consentire al loro comportamento di essere esteso senza modificare il loro codice sorgente."

Hai un requisito per la tua classe ATM di essere estensibile?

Se non hai un tale requisito, allora non dovresti inserire un codice che soddisfi un requisito che non esiste.

    
risposta data 12.04.2018 - 18:48
fonte

Leggi altre domande sui tag