Você está aqui: Java ::: Desafios e Lista de Exercícios Resolvidos ::: Programação Orientada a Objetos

POO - Programação Orientada a Objetos - Exercício Resolvido 3 - A classe Ventilador (construtores, métodos, getters e setters, constantes, sobrescrita e encapsulamento) - Desafio de Programação Resolvido em Java

Quantidade de visualizações: 9366 vezes
Pergunta/Tarefa:

Escreva uma classe Java chamada Ventilador com o propósito de representar um ventilador do mundo real. Para esta classe você deverá criar três constantes com os nomes de BAIXA, MEDIA e RAPIDA com os valores 1, 2 e 3. Estas constantes serão usadas para definir e representar a velocidade atual do ventilador.

A classe Ventilador deverá possuir ainda os seguintes campos de dados e métodos:

a) Um campo de dados privado do tipo int chamado velocidade, que define e mostra a velocidade atual do ventilador (o padrão é BAIXA).

b) Um campo de dados privado do tipo boolean que mostra se o ventilador está ligado ou desligado. O padrão é desligado, ou seja, false.

c) Um campo de dados privado do tipo String que define e mostra a cor do ventilador. A cor padrão é branco.

d) Métodos get() e set() para retornar ou definir valores para os campos de dados privados.

e) Um construtor sem argumentos que cria um novo ventilador com os valores padrões.

f) Um método chamado toString() que retorna uma descrição textual do ventilador. A string retornada mostrará todos os dados do ventilador: cor, velocidade e se está ligado ou desligado. Lembre-se de que o método toString() será uma sobrescrita do método toString() herdado da classe Object.

Crie um classe de teste e, em seu método main(), crie duas instâncias da classe Ventilador, forneça valores para seus atributos e veja o resultado. Sua saída deverá ser algo parecido com o mostrado na imagem abaixo:



Resposta/Solução:

Veja a resolução comentada deste exercício usando Java console:

Ventilador.java:

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

package estudos;

public class Ventilador{
  // constantes estáticas que permitem representar a velocidade
  // do ventilador
  public static final int BAIXA = 1;
  public static final int MEDIA = 2;
  public static final int RAPIDA = 3;
  
  private int velocidade = BAIXA; // velocidade do ventilador
  private boolean ligado = false; // ligado ou desligado?
  private String cor = "branco"; // cor do ventilador
  
  // construtor padrão
  public Ventilador(){
    // não precisa fazer nada aqui
  }

  // obtém a cor do ventilador
  public String getCor(){
    return cor;
  }

  // define a cor do ventilador
  public void setCor(String cor){
    this.cor = cor;
  }

  // informa se o ventilador está ligado ou desligado
  public boolean isLigado(){
    return ligado;
  }

  // liga ou desliga o ventilador
  public void setLigado(boolean ligado){
    this.ligado = ligado;
  }

  // obtém a velocidade do ventilador
  public int getVelocidade(){
    return velocidade;
  }

  // define a velocidade do ventilador
  public void setVelocidade(int velocidade){
    this.velocidade = velocidade;
  }
  
  // método toString() que retorna uma descrição textual do ventilador atual
  @Override
  public String toString(){
    String status = "Desligado";
    if(this.ligado)
      status = "Ligado";
      
    return "Velocidade: " + this.velocidade + "; Cor: " + this.cor + "; " +
      "Status: " + status;
  }
}

Veja agora o método main() que nos permite testar a funcionalidade da classe Ventilador:

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

package estudos;

public class Estudos {
  public static void main(String[] args) {
    // vamos criar duas instâncias da classe Ventilador
    Ventilador v1 = new Ventilador();
    Ventilador v2 = new Ventilador();
    
    // vamos mostrar os dados do primeiro ventilador
    System.out.println("Primeiro ventilador:\n" + v1.toString());
    
    // vamos aumentar a velocidade do segundo ventilador, definir
    // uma nova cor e ligá-lo
    v2.setVelocidade(Ventilador.MEDIA);
    v2.setCor("amarelo");
    v2.setLigado(true);
    
    // vamos mostrar os dados do segundo ventilador
    System.out.println("\nSegundo ventilador:\n" + v2.toString());
  }
}


Link para compartilhar na Internet ou com seus amigos:

Python ::: Dicas & Truques ::: Strings e Caracteres

Como testar se o primeiro caractere de cada palavra em uma string Python é o único em letra maiúscula usando a função istitle()

Quantidade de visualizações: 8396 vezes
Nesta dica mostrarei como podemos usar a função istitle() da linguagem Python para verificar se o primeiro caractere de cada palavra em uma frase ou texto é o único caractere em letra maiúscula. Se o teste for verdadeiro o retorno é true, caso contrário o retorno é false.

Veja o exemplo completo:

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

def main():
  frase = "Gosto De Programar Em Python"

  if frase.istitle():
    print("O primeiro caractere de cada palavra é maiusculo")
  else:
    print("O teste não resultou verdadeiro")
  
if __name__== "__main__":
  main()

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

O primeiro caractere de cada palavra é maiusculo.


C++ ::: Dicas & Truques ::: Programação Orientada a Objetos

Programação Orientada a Objetos em C++ - Como criar e usar métodos estáticos em suas classes C++

Quantidade de visualizações: 14227 vezes
Como já vimos em outras dicas desta seção, uma classe C++ possui propriedades (variáveis) e métodos (funções). Veja a seguinte declaração de uma classe Produto:

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

// definição da classe Produto
class Produto{
  public:
    void setNome(string);
    string getNome();
    void setPreco(double);
    double getPreco();
  
  private:
    string nome;
    double preco;
};

Aqui cada instância da classe Produto terá suas próprias variáveis nome e preco e os métodos que permitem acesso e alteração destas variáveis também estão disponíveis a cada instância.

Há, porém, situações nas quais gostaríamos que um determinado método estivesse atrelado à classe e não à cada instância individual. Desta forma, é possível chamar um método de uma classe sem a necessidade da criação de instâncias da mesma.

Métodos estáticos em C++ podem ser criados por meio do uso da palavra-chave static. É comum tais métodos serem declarados com o modificador public, o que os torna acessíveis fora da classe na qual estes foram declarados. Veja um exemplo:

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

#include <cstdlib>
#include <iostream>
#include <string>

using namespace std;

// classe Pessoa com duas variáveis privadas e 
// um método estático
class Pessoa{
  public:  
    // um método estático que permite verificar a validade
    // de um número de CPF
    static bool isCPFValido(string);
  
  private:
    string nome;
    int idade;
};

// implementação da classe Pessoa
bool Pessoa::isCPFValido(string cpf){
  // alguns cálculos aqui
  return true;
}

int main(int argc, char *argv[]){
  // vamos efetuar uma chamada ao método isCPFValido() sem
  // criar uma instância da classe Pessoa
  if(Pessoa::isCPFValido("12345")){
    cout << "CPF Válido" << endl;
  }
  else{
    cout << "CPF inVálido" << endl;
  }
    
  system("PAUSE");
  return EXIT_SUCCESS;
}

Aqui nós temos os códigos da definição e implementação da classe Pessoa em apenas um arquivo (main.cpp). Em uma aplicação real é interessante colocar estas partes em arquivos separados (.h e .cpp). Note que o método estático isCPFValido() foi declarado assim:

static bool isCPFValido(string);

Desta forma, podemos chamá-la a partir de código externo à classe sem a necessidade de criar uma nova instância da mesma. Veja:

if(Pessoa::isCPFValido("12345")){}

É importante notar que métodos estáticos não possuem acesso a variáveis e métodos não estáticos da classe, tampouco ao ponteiro this (que só existe quando criamos instâncias da classe). Assim, o trecho de código abaixo:

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

bool Pessoa::isCPFValido(string cpf){
  // alguns cálculos aqui
  
  // vamos acessar a variável não estática nome
  nome = "Osmar J. Silva";
  
  return true;
}

vai gerar o seguinte erro de compilação:

invalid use of member `Pessoa::nome' in static member function.

Se usarmos this->nome a mensagem de erro de compilação será:

`this' is unavailable for static member functions.

Métodos estáticos são úteis quando precisamos criar classes que atuarão como suporte, nas quais poderemos chamar funções (métodos) auxiliares sem a necessidade de criar novas instâncias a cada vez que estas funções forem necessárias.


JavaScript ::: Dicas & Truques ::: Miscelâneas

JavaScript para iniciantes - Como usar o método escape() para codificar uma frase em JavaScript

Quantidade de visualizações: 12277 vezes
A função escape() da linguagem JavaScript é usada quando precisamos codificar uma palavra, frase ou texto, ou seja, uma string. Em geral nós a usamos para codificar caracteres especiais em uma string, com a exceção dos caracteres e símbolos "* @ - _ + . /".

Veja um exemplo completo:

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

<html>
<head>
<title>Estudando JavaScript</title>
</head>
<body>

<script type="text/javascript">
  var frase = "Programar em JavaScript é muito bom";
  document.write("Original: " + frase + "<br>");
  document.write("Codificada: " + escape(frase));
</script>
 
</body>
</html>

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

Original: Programar em JavaScript é muito bom
Codificada: Programar%20em%20JavaScript
%20%E9%20muito%20bom

Lembre-se de que o objetivo da função escape() é tornar uma string portável, ou seja, que pode ser transmitida pela rede para qualquer computador que suportar os caracteres ASCII.

Nota: A função escape() foi marcada como desatualizada (deprecated) a partir do JavaScript 1.5. Em vez dela nós devemos usar as funções encodeURI() ou encodeURIComponent().


C# ::: Namespace System.Drawing ::: Image

Gráficos C# Windows Forms - Como usar a classe Image em suas aplicações C#

Quantidade de visualizações: 6120 vezes
A classe Image, do namespace System.Drawing (no assemply System.Drawing.dll) é uma classe abstrata de base que fornece funcionalidades para as classes derivadas Bitmap e Metafile (que são classes concretas e sealed, ou seja, não podem ter suas funcionalidades herdadas por outras classes).

Por ser uma classe abstrata, não podemos criar novas instâncias de Image (usando new()). Em vez disso nós a usamos apenas para chamar seus métodos estáticos ou como referência para as classes derivadas. Veja um trecho de código no qual carregamos um bitmap e o exibimos em um PictureBox:

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

private void button2_Click_1(object sender, EventArgs e){
  try{
    // vamos carregar o bitmap a partir de um diretório
    Image imagem = new Bitmap(@"C:\estudos_csharp_wf\logo.bmp", true);
    // vamos exibir a imagem no PictureBox
    pictureBox1.Image = imagem;
  }
  catch(ArgumentException ae){
    MessageBox.Show("Houve um erro ao carregar a imagem: " + 
      ae.Message.ToString());
  }
}

Veja que declaramos uma Image e a usamos como referência a um Bitmap. É claro que podemos perfeitamente trocar a linha:

Image imagem = new Bitmap(@"C:\estudos_csharp_wf\logo.bmp", true);

por:

Bitmap imagem = new Bitmap(@"C:\estudos_csharp_wf\logo.bmp", true);

O código compila normalmente, mas aí perdemos todo o poder que o polimorfismo nos entrega. Sempre que possível, devemos programar em cima das interfaces, superclasses e classes abstratas.

Além dos métodos estáticos, a classe Image fornece várias propriedades. Veja uma modificação do exemplo anterior no qual obtemos a largura e a altura da imagem que foi carregada:

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

private void button2_Click_1(object sender, EventArgs e){
  try{
    // vamos carregar o bitmap a partir de um diretório
    Image imagem = new Bitmap(@"C:\estudos_csharp_wf\logo.bmp", true);
    // vamos exibir a imagem no PictureBox
    pictureBox1.Image = imagem;

    // vamos exibir a largura e altura da imagem
    MessageBox.Show("A imagem carregada possui a largura de " + imagem.Width +
      " pixels e altura de " + imagem.Height + " pixels.");
  }
  catch(ArgumentException ae){
    MessageBox.Show("Houve um erro ao carregar a imagem: " + 
      ae.Message.ToString());
  }
}

Depois de carregada a imagem você verá uma mensagem parecida com:

A imagem carregada possui a largura de 80 pixels e altura de 50 pixels.


C# ::: Windows Forms ::: ListBox

Como retornar a quantidade de itens em uma ListBox do C# Windows Forms usando a propriedade Count

Quantidade de visualizações: 10245 vezes
Em algumas situações nós precisamos obter a quantidade de itens presentes em um controle ListBox do C# Windows Forms. Para isso nós podemos usar a propriedade Count da coleção Items da ListBox.

Veja um exemplo de seu uso:

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

private void button1_Click(object sender, EventArgs e) {
  MessageBox.Show("A ListBox contém " +
    listBox1.Items.Count + " itens");
}

Ao executar este código C# nós teremos uma mensagem com o texto:

A ListBox contém 3 itens.


Desafios, Exercícios e Algoritmos Resolvidos de C#

Veja mais Dicas e truques de C#

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á 83 usuários muito felizes estudando em nosso site.