Autore Topic: Può l'Istanza di una Classe... suicidarsi ?  (Letto 420 volte)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.316
  • Ne mors quidem nos iunget
    • Mostra profilo
« Ultima modifica: 08 Agosto 2020, 17:32:54 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.158
  • Tonno verde
    • Mostra profilo
Re:Può l'Istanza di una Classe... suicidarsi ?
« Risposta #1 il: 20 Aprile 2020, 23:30:21 »
Si potrebbe agire così:

Nella ClsPerro.class

Codice: [Seleziona]
Public Freud As String

Public Sub _New(pensamiento As String)
     Freud = pensamiento
End

Public Sub Pensar() As Boolean

      If Freud = "La vida es muy complicada" Then Return True 'Print Print Print Print Print Print Print Print Print Print Print < - - -Cual seria el codigo para matar la instancia dentro de si misma??
End

Public Sub _free()
 
  Try Print "ADIOS"
 
End

Nella FMain.class

Codice: [Seleziona]
Public batuque As ClsPerro

Public Sub Form_Open()

  batuque = New ClsPerro("La vida es muy complicada")
  If batuque.Pensar() Then batuque = Null

End

Public Sub Button1_Click()

  If IsNull(batuque) Then Message.Error("NULL OBJECT")

End
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.316
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Può l'Istanza di una Classe... suicidarsi ?
« Risposta #2 il: 21 Aprile 2020, 00:21:28 »
Però lui vuole che nella Classe secondaria sia previsto il comando di distruzione dell'Istanza (Oggetto) della Classe secondaria medesima.  :-\
Ad ogni modo le due soluzioni apparirebbero analoghe, risultando - a mio avviso - la tua quella formalmente e sintatticamente più corretta, poiché la distruzione avviene nella Classe che ha costruito la Classe secondaria, nonché in modalità più diretta e semplice.
« Ultima modifica: 21 Aprile 2020, 08:52:59 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.158
  • Tonno verde
    • Mostra profilo
Re:Può l'Istanza di una Classe... suicidarsi ?
« Risposta #3 il: 21 Aprile 2020, 09:32:13 »
Comunque come sembra pensarla anche v3ctor non credo che sia possibile farlo nella classe stessa e pertanto l'unico modo rimane quello di eliminarla là dove creata.
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.316
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Può l'Istanza di una Classe... suicidarsi ?
« Risposta #4 il: 21 Aprile 2020, 16:27:10 »
Io penso che lui voglia un codice all'interno della Classe creata che distrugga l'istanza... un po' come il Metodo ".Delete( )" di alcune Classi native di Gambas.
In fondo in tali casi l'Oggetto, identificato ovviamente attraverso una variabile, invoca un Metodo comunque contenuto e previsto nella Classe, alla quale esso appartiene.  :-\
Ecco, lui vorrebbe - da quel che mi sembra - una cosa simile per le Classi create dall'utente.
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.158
  • Tonno verde
    • Mostra profilo
Re:Può l'Istanza di una Classe... suicidarsi ?
« Risposta #5 il: 21 Aprile 2020, 19:54:54 »
Quello che l'amico spagnolo vorrebbe è chiaro e l'ho capito, forse mi sbaglio, ma a me non sembra che esistano in Gambas metodi Delete che distruggo la classe stessa, di solito servono a eliminare parte o tutti i dati contenuti dalla classe.
Non avendo conoscenze di altri linguaggi, mi astengo dai paragoni ma a me sembra logico che una classe si autodistrugga quando vengono meno i riferimenti ad essa.
Alcuni linguaggi lo fanno con comodo, altri, come Gambas appena il contatore si azzera.
La distruzione, indotta o meno, attiva l'evento _free() e lì possiamo fare un controllo di sicurezza.
Abbiamo la possibilità di far mandare dalla classe al codice che l'ha istanziata una richiesta di distruzione che possiamo esaudire, a me sembra che abbiamo tutto ciò che ci occorre.
Non è propriamente un suicidio ma una richiesta esaudita di eutanasia.  :)
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.316
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Può l'Istanza di una Classe... suicidarsi ?
« Risposta #6 il: 21 Aprile 2020, 20:44:42 »
ma a me non sembra che esistano in Gambas metodi Delete che distruggo la classe stessa, di solito servono a eliminare parte o tutti i dati contenuti dalla classe.
Hai ragione.
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.316
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Può l'Istanza di una Classe... suicidarsi ?
« Risposta #7 il: 21 Aprile 2020, 20:46:55 »
ma a me sembra logico che una classe si autodistrugga quando vengono meno i riferimenti ad essa.
E' comunque necessario che la memoria, allocata per creare l'Oggetto della Classe in questione, sia liberata.
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »