- la classe da istanziare
- una lista di `assegnamenti`
-Sostanzialmente craiamo il costruttore della classe.
-Un costruttore è un elemento in un linguaggio di programmazione utilizzato per inizializzare un oggetto di una classe.
-Viene chiamato automaticamente al momento della creazione dell'oggetto,
-garantendo che l'oggetto sia in uno stato coerente e pronto per l'uso, assegnando valori iniziali ai suoi attributi.
+Sostanzialmente craiamo il costruttore della classe.
+
+Se l'istanza non ha <Fields> allora si crea un istanza con una lista vuota.
+Se abbiamo il campo <Fields> dobbiamo prima controllare che non esista già la stessa istanza.
+Se esiste non si procede con l'operazione, in quanto rindondante, in caso contrario si passa alla creazione effettiva del metodo.
+Se fallisce la creazione del metodo si elimanano le eventuali informazioni residue dalla base di conoscenza.
+
*** Implementazione
#+begin_src prolog :tangle oop.pl
** field
*** Definizione
-Estrae il valore di una classe da un campo
+Estrae il valore di una classe da un campo.
-Questa funzione svolge lo stesso compito di un getter,
-ovvero una funzione che fornisce un modo controllato per accedere al valore di un attributo all'interno di una classe.
+Questa funzione svolge lo stesso compito di un getter,
+ovvero una funzione che fornisce un modo controllato per accedere al valore di un attributo, all'interno di una classe.
*** Implementazione
#+begin_src prolog :tangle oop.pl
** fieldx
*** Definizione
-Estrae il valore dalla classe percorrendo una catena di attributi(?)
-
+Estrae il valore dalla classe percorrendo una catena di attributi.
Il caso base del metodo è quando <FieldName>+ è una lista formata da un solo elemento, con un field possiamo estrattre l'ultimo (e solo) valore di <FieldName>+
-
Se <FieldName>+ ha più elementi possiamo richiamare il metodo ricorsivamente sulla coda della lista finchè la lista non avrà un solo elemento riportandoci al caso base.
-(spero sia coretto non ci ho capito molto)
-
*** Implementazione
#+begin_src prolog :tangle oop.pl
fieldx(Instance, [FieldName], Res) :-