Forums » RGSS

Aula Extra 4: Módulos

    • 683 posts
    4 de junho de 2015 13h00min51s ART

    Imagem Postada

    Introdução

    Esta aula pode ser considerada como parte do curso básico, os módulos são um conteúdo básico ao qual eu acabei esquecendo de explicar, mas "antes tarde do que nunca" vamos hoje estudar o que são, pra que servem e como se usam os módulos!

    Imagem Postada


    Imagem Postada

    O que são?
    Módulos são criados quase como as classes, você pode considerar um módulo como um pacote de informações(métodos, constantes e funções) que poderão ser acessadas a qualquer momento por qualquer classe, são magnificamente úteis para o armazenamento de dados como a configuração utilizada em um script, facilitando a vida de todos os scripters.

    Imagem Postada


    Imagem Postada

    Para que servem?
    Posso dizer que existem 3 tipos básicos de módulos: Armazenamento, Pacote de Funções e Pacote de Métodos. Os 3 tipos podem ser utilizados em um módulo só, ou seja, cada módulo pode ter 3 partes distintas, uma de cada tipo. Apenas vou lembrar que essa classificação é pessoal e não oficial, vou dividí-los por questões didáticas!

    Armazenamento
    Como o nome ja diz, servem basicamente para armazenar dados constantes tais como configurações ou um banco de dados para os scripts, são fáceis de manusear e muito fáceis de criar, bastando ao scripter declarar as constantes dentro do bloco de códigos do módulo.

    Pacote de Funções
    Essa "parte" ou "tipo" de módulo exerce uma função bem parecida com uma classe, mas por ser estático, essas funções podem ser utilizadas a qualquer momento, por exemplo, o módulo Math, esse módulo nada mais é que um conjunto de métodos que fazem operações matemáticas avançadas como raiz, logarítmo e etc. Módulos desse tipo são muito usados por scripter que possuem pacotes de funções próprios como o módulo XRXS, RTH...

    Pacote de Métodos
    Essa é uma finalidade mais complexa dos módulos, ela serve literalmente para economizar linhas de programação, para o script, nada muda, mas para o scripter, a diferença é grande. Um módulo tem suporte para armazenar métodos que serão emprestados, divididos ou como queira chamar, para outras classes, assim, você pode ter um método só e usá-lo em várias classes diferentes!

    Imagem Postada


    Imagem Postada

    Como usar?
    Usar um módulo é uma tarefa simples, na declaração, apenas mudamos o ja conhecido class por module, Além disso, muitos preferem criar módulos apenas com letras maiúsculas como APS, RTH, SDK... mas existem exceções como o User_Edit do Net Play! AVISO! Módulos não são instanciados, ou seja, não da pra usar o comando new, você deve usar diretamente o nome do módulo!

    Armazenamento
    Para armazenar dados constantes em um módulo, basta criá-lo e ir adicionando as infos, veja o exemplo:

    module APS   DATA =[]   DATA =[1,7,21,23,12]end


    Para acessar a constante DATA, basta por o nome do módulo seguido de :: e o nome da variável, no exemplo fica APS::DATA. Você pode armazenar qualquer tipo de dado primitivo dentro de um módulo.


    Pacote de Funções
    Os pacotes de funções são métodos que são armazenados em um módulo e podem ser usados a qualquer momento. Para criar um método do tipo função, use def self., dentro do bloco de códigos é tudo na mesma, veja o exemplo:

    moduleMath   defself.hipotenusa(catA, catB)     a = sqrt(catA*catA + catB*catB)     return a   endendPara usar esse método, basta chamar Math::hipotenusa(3,4)(como é um método, pode usar Math.hipotenusa(3,4)) por exemplo, o script irá retornar o valor da hipotenusa desse triângulo!Você pode dividir as funções por classes ou módulos internos, por exemplo [code]module RPG   moduleCache     defself.picture(name)<..>[/code]Assim, seu módulo pode ter diversos blocos distintos cada um com suas funções [b]Pacote de Métodos[/b]Pacotes de métodos nada mais são que um ou mais métodos criados dentro de um módulo, mas que só tem utilidade se forem usados dentro de uma classe, para isso usamos o comando include na classe,Veja o exemplo:[code]module APS   def count     @n+=1   endendclassTeste   include APS   def initialize     @n=0   endend


    Veja que a classe Teste não tem nenhum método, mas como utilizei um  include APS, o método count presente no módulo, é importado para o APS, note duas coisas, o método count não tem o "self", isso por que métodos com self só podem ser usados diretamente pelo módulo, eles não são importados como include, métodos sem o self não podem ser usados direto pelo módulo, mas são importados. Além disso, note que usei no método um atributo com o mesmo nome do atributo de Teste, sem isso o script não funciona. Você pode criar uma série de métodos e ir importando eles em todas as classes que os utilizarão, assim não tem que criar um por um!

    Imagem Postada


    Imagem Postada

    Módulos de Scripters
    É comum que com o tempo e experiência, os scripters mais avançados peguem o hábito de usarem sempre as mesmas funções, para economizar tempo, eles criam módulos próprios, esses módulos servem para armazenar tudo o que eles irão utilizar em seus scripts, daí surgem os modulos ja mencionados, como o meu próprio, o APS, ou os mais requintados como o RTH que são cheios de coisas. Nesses módulos, vocês provavelmente encontrarão os 3 tipos de módulo mencionados juntos, dando ênfase para as funções.

    Imagem Postada


    Tags de Busca

    • Módulo
    • module
    • include
    • constante