]> git.leonardobizzoni.com Git - ObjectOriented-Prolog-Lisp/commitdiff
Update README.org
authorMetMattone <115347319+MetMattone@users.noreply.github.com>
Mon, 8 Jan 2024 21:21:32 +0000 (22:21 +0100)
committerGitHub <noreply@github.com>
Mon, 8 Jan 2024 21:21:32 +0000 (22:21 +0100)
ultime descrizioni della documentazione prolog aggiunte.

Prolog/README.org

index 7a949e45780a2fe048b8a2751b1e84009cecd1b8..4b9acd84b671112099bacf965e4a4b42677b883d 100644 (file)
@@ -437,6 +437,10 @@ replace(OldTerm, NewTerm, Body, Result) :-
 #+end_src
 
 ** Controllo dei tipi
+
+Si definiscono i controlli dei tipi e delle classi con /type_check/.
+Sono tutti dei semplici metodi di controllo, se la variabile è del tipo corrento viene restitituo true.
+
 #+begin_src prolog :tangle oop.pl
 type_check(_X, nil) :- !.
 type_check(nil, _X) :- !.
@@ -470,6 +474,10 @@ type_check(ClassName, Instance) :-
 
 ** Definizione di una classe
 *** Effettivo predicato `def_class`
+
+Defininiamo la classe, controllando che essa già non sia presente nella base di conoscenza ed
+ereditiamo, se esistenti, field da una classe genitore.
+
 #+begin_src prolog :tangle oop.pl
 wrapped_def_class(ClassName, Parents, Parts) :-
     nonvar(ClassName),
@@ -483,6 +491,11 @@ wrapped_def_class(ClassName, Parents, Parts) :-
 #+end_src
 
 *** Ereditazione di field da superclass
+
+Metodo che permette di ereditare i campi dal genitore,
+dopo aver verificato la presenza di una classe /Parent/,
+si cercano i method del genitore e si aggiungono alla sottoclasse.
+
 #+begin_src prolog :tangle oop.pl
 set_superclass(_ClassName, []) :- !.
 set_superclass(ClassName, [Parent | OtherParents]) :-
@@ -504,6 +517,10 @@ set_superclass(ClassName, [Parent | OtherParents]) :-
 
 ** Istanziazione di una classe
 *** Effettivo predicato `make`
+
+Si crea l'effetiva classe, controllando i parametri d'ingrsso e inserendo i campi della classe.
+Sia passati in ingresso che quelli ereditati da un eventuale genitore.
+
 #+begin_src prolog :tangle oop.pl
 wrapped_make(InstanceName, ClassName, Fields) :-
     is_list(Fields),
@@ -520,6 +537,9 @@ wrapped_make(InstanceName, ClassName, Fields) :-
 #+end_src
 
 *** Assegnamento dei valori ereditati dalla superclass all'istanza
+
+Vengono trovati e assegnati i field alla classe figlio.
+
 #+begin_src prolog :tangle oop.pl
 instanciate_superclass(InstanceName, ClassName) :-
     %% Trova tutti i field della classe da istanziare
@@ -533,6 +553,11 @@ instanciate_superclass(InstanceName, ClassName) :-
 #+end_src
 
 ** Ricerca di un'istanza
+
+Metodo per cercare un'istanza. 
+SI verifica che esista l'istanza e si controlla ricorsivamente la lista dei campi,
+se l'istanza non ha field allora si controlla solo l'esistenza dell'istanza.
+
 #+begin_src prolog :tangle oop.pl
 search_instance(InstanceName, ClassName, [=(Field,Value) | Other]) :-
     is_instance(InstanceName, ClassName),