/ rubeno

Objektoj kiel agoj

Kion mi rimarkas dum la pastinaj jaroj estas la evoluo al objektoj kiel ujoj por agoj aŭ alie objektoj kiel funkcioj. La konstruilo nun agordas la aktoroj en kiel parametraj listoj faris por funkcio. Tiam ene de la funkcio oni povas pludisigi la funkciadon de la objekto en multajn funkcojn. La avantaĝoj estas ke vi nun havas pli da malgrandaj funkcioj por plenumi la ago, sed vi ankaŭ havas kunteksto kiu povas esti pli komplika ol kion oni volas en sola funkcio.

Sed por mi la plej interesa afero estas ke nun vi povas superprogrami la agon multe pli ol antaŭe. La agobjekto povas filigi de alia agobjekto kaj do heredi iom da funkciado de la patra agobjekto. Ekzemplo

class SendiRetpoŝto
  def call
    Retpoŝtilo.sendi(al: 'zam@hoff.com', subjekto: 'Venu al mia kunveno')
  end
end

class KonservuInviton < SendiRetpoŝto
  def call(invito)
    invito.konservu!
    super
  end
end

Aŭ oni povas krei modulon kun iam da kodo kaj include ĝin en via agobjekto.

La Scala programlingvo utilas ĉi tion multe kaj por la programisto kaj por la tradukilo.

La modelo memorigas min de la superprogramaj povoj en la CLOS sistemo, kie vi povas enmeti kodon en la diversajn partojn de la vivciklo de objekto. Ĉi tie oni povas enmeti kodon en la partojn de la funkcivoko.