Forums » RGSS

Lição 2 de RGSS - Classes, Hierarquia e procedimentos

    • 683 posts
    4 de junho de 2015 12h52min12s ART

    Para o perfeito endendimento desta lição, é necessário o conteúdo da lição anterior. Vamos lá:

    O que são CLASSES ?

    Classes são objetos do RGSS que contem os procedimentos necessários para todas as execuções do jogo. Os atores, as armas, itens, mapas, eventos, tudo no RPGMaker é uma classe pré-definida.

    Para usarmos as classes, nós as declaramos, em variáveis, exemplo:

    $game_party = Game_Party.new

    Quando dizemos nomedaclasse.new estamos instanciando a classe nessa variável. Porque? não era só chamar a bendita? Não.
    Dae vem a orientação a objetos. O objeto Game_Party está lá, pronto para ser usado, mas se você não disser que você quer usá-lo, ele vai continuar lá, esperando...

    Tá bom, chamamos a classe, com $game_party = Game_Party.new, e agora? Agora vem a parte interessante. Se você decidir que precisa de outro objeto Game_Party, basta declará-lo de novo, por exemplo:

    $game_party_2 = Game_Party.new

    Acabamos de instanciar outro objeto Game_Party, com um nome diferente, o que significa que temos dois objetos, identicos, porém com nomes diferentes, o que vai fazer com que você possa usá-los separadamente, da maneira que desejar, ou precisar.

    Não vou me aprofundar no contexto classe, pois é bem extenso.

    Agora que temos duas classes, o que fazer com elas?
    vamos usar alguns procedimentos.

    PROCEDIMENTOS:

    Para o funcionamento da classe, ela deve conter procedimentos, os quais são vitais na maioria das ocasiões.

    veja o exemplo:
    Imagem Postada

    Aqui, depois de declarada na var $game_party, chamamos o procedimento da classe "item_can-use?", através da sintaxe:

    nomedavar.nomedoprocedimento

    vejamos este procedimento dentro da classe:

    Imagem Postada

    Note que todos os procedimentos começam com def nomedoprocedimento e terminam com end.
    Nos aprofundaremos nos procedimentos mais tarde.
    Há algo muito importante que deve ser falado sobre as classes, antes de detalharmos seu conteúdo. é a herança. HERANÇA ?

    o RGSS já possui várias classes pré-definidas, como a classe Actors, a classe Window, a classe Sprite, entre outras.
    Porém surge a necessidade de termos novos objetos, mais completos ou com procedimentos diferentes das classes pré-definidas. O que fazer? Nesse caso usamos a herança, veja o quadro abaixo:

    Imagem Postada

    TODAS as classes filho estão ligadas diretamente á classe pai, porém umas são filhas de outras, ou seja, aproveitam dos procedimentos gerais(da classe Pai mor) e da classe filha inicial, que também possui novos procedimentos e funções. Mas como declarar quem é pai de quem ou quem é filho de quem? Simplesmente usando o sinal de <(menor), Assim:

    class Window_Base < Window
    class Window_Selectable < Window_Base
    class Window_Command < Window_Selectable

    Note que eu fiz uma hierarquia, onde W_Base é filho de Window, W_Selectable é filho de W_Base, e W_Command é filho de W_Selectable. Mas como usar os procedimentos das classes pai? Para isso usamos a denominação super(). Todas as vezes que usamos super, estamos atribuindo áquele procedimento as funções do procedimento pai. Por exemplo, esta é uma parte da classe Window_Base:

    Código:

    classWindow_Base<Window   def initialize(x, y, width, height)     super()     @windowskin_name= $game_system.windowskin_name     self.windowskin = RPG::Cache.windowskin(@windowskin_name)     self.x = x     self.y = y     self.width = width     self.height = height     self.z =100   end   def dispose     ifself.contents !=nil       self.contents.dispose     end     super   end


    Observe que a palavra super é usada nos dois procedimentos, no initialize e no dispose. O super é usado aqui para que, nesta classe, estes procedimentos usem as funções do procedimento da Superclasse(neste caso, a Window) e tenham mais funções.

    Mesmo que uma classe seja filha de outra, você pode ter procedimentos com o mesmo nome, mas com funções diferentes, o que possibilita que a chamada de um procedimento se torne padrão, mas obedecendo a construção do próprio dentro da classe.

    CONCLUSÃO:

    Nesta lição aprendemos mais um pouco(ou quase nada) sobre Classes, Hierarquia e uma pincelada nos procedimentos. Para evitar confusões, farei uma apêndice destacando as principais palavras reservadas da programação RGSS(como a palavra super).

    Na próxima lição falaremos sobre os procedimentos com mais enfâse, e teremos um exercício, faremos nossa primeira classe, uma janela !!

    Eu peço a todos que lerem que deixem um comentário, ou se tiverem dúvidas que perguntem

    Obrigado.