[Arquivado]Quero opniões sobre ...

dalvorsn
em Noticias - Arquivo

dalvorsn

õ/
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 21/12/11Posts: 750Gênero: Masculino

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.

"A covardia coloca a questão: É seguro? O comodismo coloca a questão: É popular? A etiqueta coloca a questão: é elegante? Mas a consciência coloca a questão, É correto? E chega uma altura em que temos de tomar uma posição que não é segura, não é elegante, não é popular, mas o temos de fazer porque a nossa consciência nos diz que é essa a atitude correta."

(Martin Luther King)

Baxnie

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 02/11/08Posts: 17

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

dalvorsn

õ/
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 21/12/11Posts: 750Gênero: Masculino

#baxnie

Não tinha pensado nisso, muito bom.

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

"A covardia coloca a questão: É seguro? O comodismo coloca a questão: É popular? A etiqueta coloca a questão: é elegante? Mas a consciência coloca a questão, É correto? E chega uma altura em que temos de tomar uma posição que não é segura, não é elegante, não é popular, mas o temos de fazer porque a nossa consciência nos diz que é essa a atitude correta."

(Martin Luther King)

Stigal

don't ever stop...
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 28/11/10Posts: 3402Gênero: Masculino
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.

VI6MDIG.png

 

"O fracasso é a oportunidade de se começar de novo inteligentemente"

Minhas Redes Sociais: Youtube | Página & Grupo | Steam  | Discord Xtibia | Skype: @mrooger

 

OTpanel