Você está aqui: Ruby ::: Dicas & Truques ::: Programação Orientada a Objetos

Como acessar variáveis de instâncias para escrita em Ruby sem a necessidade de métodos mutatórios usando a função attr_accessor

Quantidade de visualizações: 7117 vezes
Por padrão, variáveis de instância em Ruby só podem ser acessadas para escrita usando métodos mutatórios, ou seja, uma variável de instância @nome deve ser modificada usando um método definir_nome.

É possível dispensar o uso de métodos mutatórios empregando o método attr_accessor nos nomes das variáveis que poderão ser acessadas e modificadas. Lembre-se que, ao contrário de attr_reader, o método attr_accessor possibilita o acesso à variável de instância tanto para leitura quanto para escrita.

Veja um exemplo:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

# Definição da classe Cliente
class Cliente
   attr_accessor :nome, :idade
   
   def initialize(nome, idade)
      @nome = nome
      @idade = idade
   end
end

# Cria uma instância da classe Cliente e inicializa as
# variáveis de instância @nome e @idade
cliente = Cliente.new("Osmar J. Silva", 35)

# Acessa as variáveis de instância sem a necessidade
# de métodos acessórios
puts cliente.nome
puts cliente.idade

# Modifica as variáveis de instância sem a necessidade
# de métodos mutatórios
cliente.nome = "Carlos da Silva"
cliente.idade = 56

# Obtém os resultados
puts cliente.nome
puts cliente.idade

Se tentarmos acessar e modificar as variáveis nome e idade diretamente, sem os métodos mutatórios e a função attr_accessor nós teremos um erro do tipo:

Traceback (most recent call last):
estudos.arb:15:in `<main>': undefined method `nome' for #<Cliente:0x0000029a7211f080 @nome="Osmar J. Silva", @idade=35> (NoMethodError)

Link para compartilhar na Internet ou com seus amigos:

Ruby ::: Dicas & Truques ::: Hashes (Arrays Associativas)

Como criar um hash em Ruby - Criação e uso de arrays associativos na linguagem Ruby

Quantidade de visualizações: 9162 vezes
Os hashes (também chamados de arrays associativas, mapas ou dicionários) são parecidos com arrays no sentido em que são coleções indexadas de referências a objetos. Contudo, enquanto podemos indexar arrays usando inteiros, hashes podem ser indexados usando-se qualquer tipo de dados: strings, expressões regulares, inteiros, e assim por diante.

Quando guardamos um valor em um hash, estamos na verdade guardando dois objetos: o índice (geralmente chamado de chave) e o valor. Os valores em um hash Ruby podem ser de qualquer tipo.

Hashes em Ruby podem ser criados de duas formas: usando a notação literal ou criando-se um objeto da classe Hash.

Veja como criamos um hash usando notação literal:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

# cria um hash de estados e capitais
capitais = {'Goiás' => 'Goiânia',  'Mato Grosso' => 'Cuiabá', 
  'Paraná' => 'Curitiba'}
  
# exibe a capital correspondente ao estado de Mato Grosso
puts capitais['Mato Grosso']

Veja como usamos os nomes dos estados como chaves e os nomes das capitais como valores para cada um dos elementos do hash. Veja agora como criar este mesmo hash por meio da criação de um objeto da classe Hash:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

# cria um hash de estados e capitais
capitais = Hash.new

capitais['Goiás'] = 'Goiânia'
capitais['Mato Grosso'] = 'Cuiabá'
capitais['Paraná'] = 'Curitiba'
  
# exibe a capital correspondente ao estado de Mato Grosso
puts capitais['Mato Grosso']



Ruby ::: Dicas & Truques ::: Data e Hora

Como usar a classe DateTime da linguagem Ruby

Quantidade de visualizações: 7173 vezes
A classe DateTime da linguagem Ruby extende a classe Date e inclui horas, minutos, segundos e frações de segundo. Além disso, esta classe fornece suporte básico a fuso horários.

Fuso horários são representados como uma diferença do UTC (Universal Coordinated Time) em fração de um dia. Esta diferença é quanto a hora local é mais cedo ou mais tarde que o UTC. Uma diferença de UTC 0 está centralizada na Inglaterra (também conhecido como GMT). À medida que viajamos para o leste, a diferença aumenta até que alcancemos a linha de separação de data no meio do Oceano Pacífico. Quando viajamos para o oeste, a diferença diminui. Esta diferença é abreviada como "of" na classe Date.

Veja um trecho de código no qual usamos a classe DateTime para obter a data e hora atual:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

# importa o módulo date
require "date"

# obtém a data e hora atual
agora = DateTime::now

# exibe o resultado
puts "Agora é " + agora.strftime("%e/%m/%Y - %H:%M:%S")

Ao executar este código Ruby nós teremos o seguinte resultado:

Agora é 5/04/2022 - 11:51:06


Ruby ::: Dicas & Truques ::: Strings e Caracteres

Como remover espaços no início e final de uma string usando as funções strip e strip! da linguagem Ruby

Quantidade de visualizações: 10208 vezes
As funções strip e strip! são úteis quando precisamos remover espaços no início e final de uma string. A função strip retorna uma nova string, enquanto strip! opera na string original. Veja o exemplo:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

# declara e inicializa uma variável string
frase = "  Tenho espaços no início e final.   "

# vamos remover os espaços no início e final da
# string. 

# sem alterar a string original
frase2 = frase.strip
puts frase2

# alterando a string original
frase.strip!
puts frase

Ao executar este código Ruby nós teremos o seguinte resultado:

Tenho espaços no início e final.
Tenho espaços no início e final.


Vamos testar seus conhecimentos em Java

Analise o seguinte código Java

public class Estudos {
  public static void main(String[] args) {
    int a = 3;
    System.out.println(++a * 8);
  }
}

Qual é o resultado de sua execução?

A) 24

B) 32

C) 72

D) 25
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em JavaScript

Analise o seguinte trecho de um documento HTML

<p id="elem">Veja esse texto.</p>

Qual é a sintáxe JavaScript correta para alterar o conteúdo desse elemento HTML?

A) document.getElement("p").innerHTML = "texto";

B) document.getElementById("elem").innerHTML = "texto";

C) #elem.innerHTML = "texto";

D) document.getElementByName("p").innerHTML = "texto";
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Engenharia Civil - Construção Civil

Serviços preliminares e instalações provisórias

A instalação de tapumes é obrigatória em atividades de construção, para impedir o acesso de pessoas estranhas ao serviço. Sobre a instalação de tapumes e serviços decorrentes:

A) Os tapumes devem ter altura mínima de 2,2 m em relação ao nível do terreno.

B) Em edifícios com mais de dois pavimentos, é facultativa a construção de galerias para o tráfego de pedestres sobre o passeio.

C) As bordas da galeria para pedestres devem possuir tapumes com altura mínima de 2,0 m e inclinação de 45°.

D) Não é obrigatória a instalação de tapume em todo o perímetro da obra, apenas na testada do lote.

E) As galerias para o tráfego de pedestres devem ter altura livre mínima de 2,5 m.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Engenharia Civil - Instalações Hidráulicas Prediais

Instalações prediais de combate a incêndio

O fogo é fundamental para o desenvolvimento da humanidade, mas é muito danoso às edificações, visto que pode causar prejuízos financeiros e sociais. Para tanto, as edificações necessitam de instalações prediais de combate a incêndio, que são projetadas para evitar prejuízos materiais e de vida decorrentes de um incêndio na edificação.

Sobre as instalações prediais de combate a incêndio, são feitas as seguintes proposições:

I - Têm sistemas concebidos para preservar a vida dos ocupantes das edificações e de áreas de risco, em caso de incêndio.

II - São projetadas com dispositivos que dificultam a propagação do fogo, diminuindo os prejuízos ao patrimônio e ao meio ambiente.

III - São concebidas para controlar e extinguir o incêndio, bem como favorecer a entrada do corpo de bombeiros na edificação.

Quais proposições estão corretas?

A) I, II e III.

B) I e II.

C) II e III.

D) I e III.

E) Apenas a III.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Ética e Legislação Profissional

O exercício do direito à propriedade

A lei traz uma série de regras para o direito de construir, matéria atinente aos direitos de vizinhança, como distanciamento mínimo entre as construções, bem como conceitos de itens e elementos da arquitetura das construções, para que os vizinhos saibam o que podem ou não fazer nesse tocante. Assinale a alternativa correta sobre as regras do Código Civil que se referem ao direito de construir:

A) A inserção de janelas, terraços ou varandas é permitida somente se abrir a 1 metro do vizinho, sendo considerada janela qualquer fresta que receba luz.

B) É correto afirmar, sobre os elementos que podem compor uma construção, que muro e parede-meia são sinônimos.

C) Em relação à parede-meia, qualquer um dos confinantes pode ali inserir armários, prateleiras ou realizar obras sem o consentimento do outro, pois aos dois pertencem.

D) As janelas perpendiculares, ou cuja visão não incida sobre a linha divisória, são chamadas também de janelas indiretas, e não poderão ser abertas sem respeitar o limite mínimo de 50%.

E) As construções rurais devem respeitar o limite comum de 3 metros e, para as urbanas, a lei permite que o prédio venha até o limite divisório, mas com o cuidado de deixar a janela a, no máximo, metro e meio do prédio vizinho.
Verificar Resposta Estudar Cards Todas as Questões

Desafios, Exercícios e Algoritmos Resolvidos de Ruby

Veja mais Dicas e truques de Ruby

Dicas e truques de outras linguagens

Códigos Fonte

Programa de Gestão Financeira Controle de Contas a Pagar e a Receber com Cadastro de Clientes e FornecedoresSoftware de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento
Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidadesControle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades
Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: Delphi
6º lugar: C
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2024 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 76 usuários muito felizes estudando em nosso site.