Jump to content

Programação Orientada A Objetos [lua]


Eventide

Recommended Posts

Programação Orientada a Objetos



 

[Lua]

 

 

:wacko: Que raios será isso?:wacko:

 

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:

 

objetodk1.jpg

 

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

 

classekj7.jpg

 

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 by Eventide
Link to comment
Share on other sites

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

  • Administrador

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

×
×
  • Create New...