Eventide 23 Posted December 11, 2008 Share Posted December 11, 2008 (edited) Programação Orientada a Objetos [Lua] Que raios será isso? A orientação a objetos, também conhecida como Programação Orientada a Objetos (POO) ou ainda em inglês Object-Oriented Programming (OOP) é um paradigma de análise, projeto e programação de sistemas de software baseado na composição e interação entre diversas unidades de software chamadas de objetos. Em alguns contextos, prefere-se usar modelagem orientada ao objeto, em vez de programação. A análise e projeto orientados a objetos têm como meta identificar o melhor conjunto de objetos para descrever um sistema de software. O funcionamento deste sistema se dá através do relacionamento e troca de mensagens entre estes objetos. Na programação orientada a objetos, implementa-se um conjunto de classes que definem os objetos presentes no sistema de software. Cada classe determina o comportamento (definidos nos métodos) e estados possíveis (atributos) de seus objetos, assim como o relacionamento com outros objetos. fonte: wikipedia :slap: ahn? Traduzindo:É uma forma de organizar e programar seus codes de forma diferente da habitual. Nessa forma são definidas classes e seus atributos e objetos pertencentes a essa classe, "fragam" esses atributos. E como fazer isso em lua? segue o tutorial feito pelo Fusion(graças a insistentes pedidos meus): Tutorial: Como eu(fusion) vi que varias pessoas estão tendo duvidas em relação a 'Lua orientada a objetos', eu resolvi criar um tutorial para esclarece-las. Primeiramente, o que a final de contas é 'Lua orientada a objetos'? É nada mais do que um objeto que é criado a partir de uma 'classe' e que contém informações próprias. E como podemos criar essas tal 'classes'? Bom, existem vários métodos mas o mais utilizado é: Class = {} Mas atenção, não é só isso! Uma classe precisa de um 'banco de dados' para armazenar suas características. Para isso, criamos uma metatable: Class_Metatable { __index = Class } Mas e agora? Como que nós podemos usar essas 'classes' para criar objetos? Para criar um objeto com a 'classe', nós devemos criar uma nova instância dela. Por exemplo: Object = Object or {} Object = setmetatable ( Object, Class_Metatable ) Pronto. Uma nova instância foi criada a partir de uma classe. Mas há outro modo também que é bem mais usado. Criar uma instância por meio de uma função na class normalmente denominada 'new'. Ela fica mais ou menos assim: function Class:new () return setmetatable ( {}, Class_Metatable ) end Caso você queira já definir características nessa função, faça da seguinte maneira: function Class:new ( X ) return setmetatable ( { X = X }, Class_Metatable ) end Ok. Já sabemos como criar classes, instâncias mas e quanto as funções dessa classe e como usá-las? Para criar uma função nesta 'classe' você precisa fornecer a informação para o programa: function Class:Function ( Arguments ) -- Stuff end Facil não? Pois é mas é agora que entra a parte que deve confundir mais as pessoas: como usá-las. Na verdade essa é uma parte bem simples. Você deve fornecer a instância que esta sendo usada ( nesse caso 'Object' ) e depois o comando: Object:Function ( Arguments ) não entendeu como funciona os objetos? observe o desenho: E como podemos criar novas características nessa 'classe'? Em Lua se você usar uma variável inexistente, ela será criada instantaneamente e usada. Nas 'classes' Não é diferente. Para criar novas variáveis para a classe basta adicionar um 'self' na frente. Desse modo: functon Class:Function ( Arguments ) self.name = Arguments.name end Pois é. Mamão com açúcar. Mas e para utiliza-las? Do mesmo jeito. Para utilizar essas variáveis você precisa apenas que colocar um 'self' na frente. Agora ai vai um exemplo de criação e utilização de uma classe: Class = {} Class_Metatable = { __index = Class } function Class:new () return setmetatable ( {}, Class_Metatable ) end function Class:SetName ( name ) self.name = name end function Class:GetName ( ) return self.name end Object = Class:new () Object:SetName ( 'MyClass' ) print ( Object:GetName ) Pronto! Espero que com esse pequeno o tutorial você já possa entender melhor como fazer uma classe em Lua e como utiliza-las. Edited December 12, 2008 by Eventide Link to comment Share on other sites More sharing options...
Narutinhu 0 Posted December 11, 2008 Share Posted December 11, 2008 Nunca tinha visto isso antes ' Mais parece ser bom Link to comment Share on other sites More sharing options...
Eventide 23 Posted December 12, 2008 Author Share Posted December 12, 2008 na verdade isso aqui é tutorial de scripting, alguém move certo isso aqui por favor... :-P scripting também é programação, mas tudo tem que estar no seu devido lugar, mesmo que o nome confunda.. Link to comment Share on other sites More sharing options...
Reverse 0 Posted December 12, 2008 Share Posted December 12, 2008 Interessante Abraços Link to comment Share on other sites More sharing options...
Administrador Administrador 1435 Posted December 17, 2008 Administrador Share Posted December 17, 2008 Muito bom, parabéns pela qualidade do documento. Lua é uma linguagem bem interessante, ainda não tive oportunidade de fazer algo maior em LUA, mas pelo que vejo merece muito respeito. Abraços Link to comment Share on other sites More sharing options...
Recommended Posts