Disciplina

Ciência da Computação · Faculdade de Ciência e Tecnologia · UFMT

Programação
Orientada a Objetos

classes · objetos · atributos · métodos

Material de apoio da disciplina — a aula em vídeo, o plano, os slides e todos os códigos, reunidos em um só lugar.

Prof. Dr. Willian Garcias de AssunçãoAula 01

Aula em vídeo

Versão audiovisual completa da aula, do início ao fechamento.

Materiais da aula

Plano e slides em PDF — toque para abrir ou baixar.

Códigos da aula

Todos os trechos vistos nos slides. Use o botão Copiar em cada bloco.

Anatomia de uma classe
public class Pessoa {
    // 1. atributos (estado)
    private String nome;
    private int idade;

    // 2. construtor
    public Pessoa(String n, int i) {
        this.nome = n;
        this.idade = i;
    }

    // 3. métodos (comportamento)
    public String getNome() {
        return nome;
    }
}
Declaração de classe
public class Carro {

}
Atributos
public class Carro {
    private String modelo;
    private String cor;
    private int ano;
    private double velocidade;
}
Estados independentes
// dois objetos, dois estados independentes
carro1.cor = "vermelho";
carro2.cor = "azul";
Instância × static
// de instância: cada objeto tem a sua cópia
private String nome;

// de classe (static): única, compartilhada por todos
private static int total;
Criação de objetos (new)
// Criando objetos a partir da classe Pessoa
Pessoa ana   = new Pessoa("Ana", 25);
Pessoa bruno = new Pessoa("Bruno", 30);
Pessoa carla = new Pessoa("Carla", 22);

// Cada chamada cria um objeto independente
Método (comportamento)
public void acelerar(int incremento) {
    this.velocidade = this.velocidade + incremento;
}
Anatomia de um método
public double calcularJuros(double taxa, int meses) {
    // corpo do método
    // ...
}
Getters e setters
private int idade;

// getter — devolve o valor do atributo
public int getIdade() {
    return this.idade;
}

// setter — atribui um novo valor, com validação
public void setIdade(int novaIdade) {
    if (novaIdade >= 0) {
        this.idade = novaIdade;
    }
}
Construtores
public class Pessoa {
    private String nome;
    private int idade;

    public Pessoa(String nome, int idade) {
        this.nome = nome;
        this.idade = idade;
    }
}
Sobrecarga de métodos
public class Calculadora {
    public int somar(int a, int b) {
        return a + b;
    }
    public double somar(double a, double b) {
        return a + b;
    }
    public int somar(int a, int b, int c) {
        return a + b + c;
    }
}
Classe ContaBancaria (completa)
public class ContaBancaria {
    private String numero;
    private String titular;
    private double saldo;

    public ContaBancaria(String numero, String titular) {
        this.numero  = numero;
        this.titular = titular;
        this.saldo   = 0.0;
    }

    public double getSaldo() {
        return this.saldo;
    }

    // método depositar
    public void depositar(double valor) {
        if (valor > 0) {
            this.saldo = this.saldo + valor;
        }
    }

    // método sacar (com validação)
    public boolean sacar(double valor) {
        if (valor > 0 && valor <= this.saldo) {
            this.saldo = this.saldo - valor;
            return true;
        }
        return false;
    }
}
Traço de execução (usando a classe)
ContaBancaria c = new ContaBancaria("001", "Ana");

c.depositar(500.00);
c.depositar(200.00);
c.sacar(100.00);

System.out.println(c.getSaldo());
// Saída no console: 600.0