O TEMA DO FÓRUM ESTÁ EM MANUTENÇÃO. FEEDBACKS AQUI: ACESSAR

[Ruby] Aula 2 : Classes, métodos e módulos

Iniciado por Raizen, 29/11/2012 às 17:37

29/11/2012 às 17:37 Última edição: 16/12/2015 às 10:30 por Raizen
[box class=windowbg1]
Índice das aulas básicas
  • Aula 1 - Introdução
  • Aula 2 - Objetos
  • Aula 3 - Operações
  • Aula 4 - Condições
  • Aula 5 - Repetição
  • Aula 6 - Arrays
  • Aula 7 - Hashes
    [/box]
    [box class=windowbg1]
    Índice das aulas avançadas
  • Aula 8 - Superclasses e instâncias
    [/box]
    [box class=windowbg1]
    Índice das aulas de algoritmos
  • Aula 1 - Sort
  • Aula 2 - Busca
  • Aula 3 - Recursividade
    [/box]

    [box class=windowbg2]
    Classes, métodos e módulos
    [/box]

    [box class=catbg2]
    Métodos
    [/box]

    [box class=catbg3]  Métodos são pequenos blocos de códigos que podem serem chamados sempre que for necessário, esses blocos podem ter um valor único, ou serem bem mais complexos com inúmeros comandos para o programa. Sempre que for inicializar algum objeto, devemos escrever a palavra reservada que o programa irá identificar.
      Palavras reservadas, são aquelas cujo não podem serem usadas para variáveis e objetos, pois são por elas que o programa indentifica os seus comandos.
      A palavra para indentificar métodos é a def, a partir dela o programa identifica a palavra a frente como um método. É altamente recomendado utilizar letra minuscula para o método, visto que letras minúsculas são para variáveis locais, portanto podem ser modificados, e maiúsculas para constantes, portanto não recomenda-se que seja modificado.
    Exemplo:
    def raizen
      return 32
    end
    

    Perceba que sempre que eu colocar a palavra raizen, será chamado o valor 32, façam um teste no rpg maker da seguinte maneira.
    def raizen
      return 32
    end
    p raizen
    

      O p imprime valores e objetos, para o Ace basta ligar a janela de depuração para ver o valor sendo impresso, em outros makers ele aparece como pop-up.
    Nas versões mais recentes do Ruby, o método assume o último valor, fazendo com que o último return possa ser facultativo.
    def raizen
    32
    end
    

    O método raizen assume valor 32, sempre que eu precisar desse valor eu posso usar "raizen" para recebe-lo.
    Tente o seguinte, em um script vazio.
    def metodo
      55
    end
    p metodo
    p metodo
    

    [/box]

    [box class=catbg2]
    Classes
    [/box]
    [box class=catbg3]  Se os métodos são muito usado para valores e para blocos de códigos, as classes são o conjunto desses blocos para fazer o programa, e assim sendo a base dos objetos em um código. As classes diferente dos métodos, elas são iniciadas com uma letra maiúscula e sua reservada é a palavra class.
      as classes permitem que sejam lidos atributos e métodos a partir dela, assim permitem que pequenas partes desse objeto classe, seja acessado remotamente.
    Exemplo:
    class Aula
      def metodo1
        p "55"
      end
    end
    

      nesse exemplo eu criei uma classe com o nome de uma constante, Aula, e nessa classe eu criei o método "metodo1" em que posso acessa-lo a partir de uma variável em que a classe seja iniciada.
    class Aula
      def metodo1
        p "55"
      end
    end
    aula1 = Aula.new
    aula1.metodo1
    

    Se colocarem o código acima em um script vazio, poderão ver que eu iniciei a classe dentro do aula1, e chamei o seu método como um atributo.
      Como podem ver as classes são usadas justamente para separar blocos de códigos(métodos) e organizar melhor cada objeto, algo semelhante ao que foi mostrado na primeira aula.

      Classes podem ser ainda mais organizados no fato de que é possível criar classes que herdam aqueles comandos da classe mãe, chamadas de sub-classes, tornando a programação em Ruby algo mais organizado ainda. Para herdar comandos de uma classe mãe basta fazer o seguinte.
    class Aula
      def metodo
        p "55"
      end
    end
    
    class Aula2 < Aula
    end
    aula1 = Aula2.new
    aula1.metodo
    


    Como podem ver, o script acima irá imprimir 55, visto que o metodo da Aula, foi herdado pelo Aula2, eu poderia reescrever esse "metodo" com outro bloco de códigos, e esse bloco passaria a fazer efeito[/box]

    [box class=catbg2]
    Módulos
    [/box]
    [box class=catbg3]  Outro tipo de objeto diferente, muito semelhante a classe, porém esse diferente das classes que são usado para armazenar comandos, os módulos são mais usados para armazenar valores e fórmulas, e não herdam blocos de outros módulos diferentes. São mais pratico em relação a armazenar tal coisas, pois não é necessário que sejam inicializado e tem muitos usos em relação a organização e a programação.
    Exemplo:
    module Values
      def metodo
        p "45"
      end
    end
    class Aula
    include Values
    end
    aula1 = Aula.new
    Aula.metodo
    

    Basicamente juntando tudo que foi dito nessa aula, podemos criar vários modos de optimizar os codes, e assim facilitar nossa vida, apesar da aula de variáveis ser a próxima, irei dar mais um uso usando variáveis para módulos.
    module Valores
      Value = 5
    end
    class Aula
      def imprimir
        p Valores::Value
      end
    end
    

    Colocar o nome do módulo e depois "::" chama uma constante com o nome seguinte.


    [box class=catbg2]
    Fechando
    Essa foi a segunda aula, espero que estejam acompanhando, a partir da próxima terá tarefas a serem feitas usando tudo o que tem das aulas anteriores, boa sorte, e espero ver os scripts de vocês nessa comunidade  :wow:

muito bom raizen otimo conteudo gostei mesmo cara.
você ensina muito bem e e objetivo em suas aulas parabéns
tudo de bom cara. estarei acompanhando...
  :XD:

eu so acho uma pena o pessoal estar abandonando
o rpg maker, e indo pra outras engines.. o maker
tem uma boa historia. dez da antiga rpg maker brasil

enfim gostei muito das suas aulas

24/09/2013 às 18:26 #2 Última edição: 24/09/2013 às 18:29 por RedSteam
eu até to entendendo a estrutura da linguagem, mas não to entendendo nada que ela diz.

O que é uma variável? e uma constante? pra que serve um "valor"?

Eu não estou conseguindo organizar na cabeça como tudo isso, faz uma janela aparecer na tela, o tamanho dela e coisas do tipo.
Por exemplo eu vejo os códigos que são dados como exemplo e penso "eu sei que isso é uma classe, isso é um módulo, mas o que diabos isso faz?"
Desculpa eu tenho dificuldade em entender esse tipo de coisa, se eu provavelmente vou dar bastante trabalho pra você Raizen.

Ah e sim eu não vi todas as aulas e não sei se você responde isso mais tarde, mas lembrando de como era quando eu estudava matemática eu to parando aqui para perguntar antes de ficar cada vez mais confuso.
Se você disser que eu vou entender isso indo para frente fechou  :ok:

----------------
Sei que o tópico ta parado faz um bom tempo mas até onde eu ví é melhor eu perguntar por aqui mesmo e não por PM, porque eu tenho certeza que eu não sou o único com esse tipo de duvida para aprender.

Você verá tudo isso nas próximas aulas,no começo do tópico tem um índice onde mostra as aulas com os nomes delas. Nos nomes ta o que você vai aprender  :ok:

Mas se persistir alguma dúvida pergunte no tópico que eu ou alguém te responde  :blink:

Conheço RPG Maker a muito tempo, pelo menos uns 6 anos, mas sou leigo quanto a criar ou editar scripts. Vou ler todas as aulas e ver se consigo aprender alguma coisa já que não quero ser passado para trás e pretendo fazer scripts!! 
:*-*:
O mundo não se divide em pessoas boas e más. Todos temos Luz e Trevas dentro de nós...

O que importa é o lado o qual decidimos agir. Isso é o que realmente somos!

Muito bom Raizen, você e o Khas são meus "quebra-galhos", irei trazer neus scripts pra cá concerteza, e você estará nos creditos dos meus projetos 4ever.

Muito boa a aula! Lembro de ter criado uma title uma vez no ace, ta aqui no forum em algum lugar... Mas lembro também que eu não entendia direito oque estava fazendo essas aulas vão ajudar muito!  :XD:

Essas Aulas são muito boas mais já pensaram na ideia de talvez uma vídeo aula junto facilitaria muito   :*-*: :rainbow:

08/01/2015 às 02:35 #8 Última edição: 08/01/2015 às 02:41 por Enter
Citação de: RedSteam online 24/09/2013 às 18:26
eu até to entendendo a estrutura da linguagem, mas não to entendendo nada que ela diz.

O que é uma variável? e uma constante? pra que serve um "valor"?

Eu não estou conseguindo organizar na cabeça como tudo isso, faz uma janela aparecer na tela, o tamanho dela e coisas do tipo.
Por exemplo eu vejo os códigos que são dados como exemplo e penso "eu sei que isso é uma classe, isso é um módulo, mas o que diabos isso faz?"
Desculpa eu tenho dificuldade em entender esse tipo de coisa, se eu provavelmente vou dar bastante trabalho pra você Raizen.

Ah e sim eu não vi todas as aulas e não sei se você responde isso mais tarde, mas lembrando de como era quando eu estudava matemática eu to parando aqui para perguntar antes de ficar cada vez mais confuso.
Se você disser que eu vou entender isso indo para frente fechou  :ok:

----------------
Sei que o tópico ta parado faz um bom tempo mas até onde eu ví é melhor eu perguntar por aqui mesmo e não por PM, porque eu tenho certeza que eu não sou o único com esse tipo de duvida para aprender.

Primeiramente peço compreensão por ter ressuscitado o tópico, mas eu vejo necessidade disso. Pois a dúvida dele pode ser de outros que vão ler o mesmo tópico. Então, vou tentar ajuda-lo, aproveitando que está na primeira página do tópico.

RedSteam eu entendi a sua dúvida e espero que você volte a ler esse tópico, mas deixo a resposta não só para você mas para outros: Primeiro apenda a lógica da programação. Depois adote uma linguagem para aplicá-la. Se preferir faça os dois ao mesmo tempo. Nas universidades normalmente, nas aulas de programação, é divido a aula em 2 partes: Teórica e Prática(laboratório). No primeiro semestre a teórica é pura lógica de programação. Com a lógica da programação você desenvolve a habilidade de formular e interpretar o que quer implementar.
E quando você abrir os scripts do RGSS, entenda que aquilo faz parte de uma engine, um programa e qualquer programador precisa estuda-la para poder utilizar. Tente sempre idealizar bem o que você quer antes de implementar - ficará mais fácil para fazer pesquisas e perguntas em relação a sua dúvida. Cada script resolve um ou vários "problemas" que o programador formulou e resolveu. Por isso no inicio mesmo você sabendo o que é uma classe não necessariamente quer dizer que você vai pegar um script e entende-lo completamente, ainda mais se você estiver fora do contexto dele. Mas com a prática e resolvendo os seus códigos você começa a entender os outros.

Espero ter ajudado.