Ir para conteúdo

[Arquivado]Quero opniões sobre ...


dalvorsn

Posts Recomendados

Essa lib que to fazendo.

Bem a estrutura base dela ja ta 90% pronta e já é funcional.

Antes de mais nada vou apresentar a ideia que gerou ela, e quero sugestões que acrescentem a essa linha da ideia.

 

Como quem meche com lua sabe, ela nao tem orientação a objeto, e a maioria dos metodos que usam por ai não simula herança, eu quero mudar isso, acho interessante ter herança, e fiz um lib pra isso:

Vm3BqgFT[/pastebin]

 

Me digam, o que poderia ser adicionado a lib? O que poderia ser melhorado? Quais outros conceitos mais de orientação a objeto seriam interessantes de adicionar.

 

Agradeço aos que colaborarem. Lembrando que o script será postado ao seu termino.

Link para o comentário
Compartilhar em outros sites

Acho que o efeito desejado é esse:

 


-- Library function

function inherit(self, ...)
 local objects = {...}
 for i=1,#objects do
   for key,value in pairs(objects[i]) do
     if not self[key] then
       self[key] = value
     end
   end
 end
end

-- Creature.lua file

Creature = {
 name = 'Unknown',
 level = 0,
}

function Creature:setName(name)
 self.name = name
end

function Creature:getName()
 return self.name
end

-- Npc.lua file

Npc = {}

function Npc.create()
 local obj = {}
 setmetatable(obj, { __index = Npc })
 return obj
end

function Npc:getName()
 return 'Npc: ' .. self.name
end

inherit(Npc, Creature)

-- Monster.lua file

Monster = {}

function Monster.create()
 local obj = {}
 setmetatable(obj, { __index = Monster })
 return obj
end

function Monster:getName()
 return 'Monster: ' .. self.name
end

inherit(Monster, Creature)

-- Test.lua file

-- Creature is an abstract class, we can't create it alone.
--local creature = Creature.create()
--print(creature:getName())

local npc = Npc.create()
npc:setName('Dalvo')
print(npc:getName())

local monster = Monster.create()
monster:setName('Pato Donald')
print(monster:getName())

 

 

Npc: Dalvo

Monster: Pato Donald

Link para o comentário
Compartilhar em outros sites

  • 5 years later...
Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...