Sobes.tech
Senior

Proponi un modello di ereditarietà corretto per le classi Button e Input invece di quello attuale, dove Input estende Button.

sobes.tech AI

Risposta dell'AI

L'ereditarietà di Input da Button non è logica, poiché Input e Button sono elementi diversi con semantiche e comportamenti differenti.

È più corretto definire una classe base comune, ad esempio, UIControl o FormElement, che contiene proprietà e metodi comuni a tutti gli elementi del modulo. Successivamente, Button e Input ereditano da questa come classi separate.

Esempio in TypeScript:

class UIControl {
  constructor(public id: string) {}
  render() {
    // metodo di rendering comune
  }
}

class Button extends UIControl {
  click() {
    // logica del clic
  }
}

class Input extends UIControl {
  value: string = '';
  setValue(val: string) {
    this.value = val;
  }
}

Questo approccio riflette la gerarchia reale e evita connessioni errate tra le classi.