DA

[Arquivado]Quero opniões sobre ...

Por dalvorsn, 25 de mar. de 2013 em Noticias - Arquivo

script
4
737
dalvorsnD
25 de março de 2013 às 12:14

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.

BaxnieB
25 de março de 2013 às 13:34

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

dalvorsnD
25 de março de 2013 às 19:32

#baxnie

Não tinha pensado nisso, muito bom.

É, acho que assim é bem melhor mesmo. :D

5 anos depois...
StigalS
25 de abril de 2018 às 16:41
Esta noticia foi arquivada.
Este tópico está fechado e foi movido para Noticia - Arquivo.

+ Caso tenha atualizações você poderá criar outro tópico.