Orientação a Objetos em Cinco Minutos
Autor: Eduardo Gomes | Publicado: 2009-10-08T23:50:00-03:00

Olá amigos leitores tentarei ser o mais breve e preciso no conceito orientação a objetos.Pra que usamos orientação a objetos? Simplesmente para resolvermos problemas que tínhamos com a programação estruturada, como por exemplo, a dificuldade de realizar manutenções no código devido presença de um código macarrônico e de difícil compreensão de Ideia do programador.Pensando nisso, foi criado este conceito de orientação de objetos, que nada mais é do que refletir a maneira de programar com a vida real, para isso basta abstrair idéias reais.Baseando-se nisso pensemos que tudo seja objeto, por exemplo carro, telefone, maça, cachorro, teste de inglês, batata, quadro... parece confuso mas observe, tudo que nós faz pensar em algo unitariamente isto chama-se objeto.Vou citar um exemplo para prosseguirmos em todo o texto... bom pensemos que temos que criar um sistema em JAVA para construir de carros possantes... bem, eu ainda não sei onde você vai usar esse sistema, mas use a imaginação.... como devemos pensar para este caso??? Bom, pense na vida real.... vamos criar carros ... carro para nós é um objeto... mas para este sistema não basta saber que carro é um objeto, precisamos saber o que estes carros contém...temos que definir o que compõe o carro, falamos que temos que definir os atributos que um carro pode ter. Neste caso os itens que compõe o carro são: nome, marca, velocidade máxima, quantidade de marchas, aro do pneu e tamanho das asas...sempre sonhei em construir um carro que voa... mas é claro que dependendo do que você vá fazer essa idéia muda radicalmente.E por fim falaremos o que um carro pode fazer.. acelera, freia, troca marcha, decola (você achou que as asas eram para quê?)e.. ..e... acho que só né ?Tudo o que o carro pode fazer chama-se métodosVamos dar uma resumida, temos atributos e métodos definidos para construirmos carros... Repare que os atributos e métodos se referem a qualquer carro que nós queiramos criar..ou seja, é tudo genérico.Temos que colocar os atributos e métodos num lugar que seja genérico também para podermos num futuro próximo criar um carro... chamamos esse lugar de classeNa literatura você pode encontrar a definição de classe como: “classe é uma estrutura que abstrai um conjunto de objetos com características similares.” Talvez esse conceito não tenha ficado muito claro, então dá uma conferida no post do Gabriel “Programação Orientada a Objetos”Vamos visualizar isso em Java, abaixo estará uma classe com o nome Carro com os atributos e métodos que falamos até aqui:class  Carro{       String nome;       String marca;       int velocidadeMaxima;       int quantidadeDeMarchas;              int marchaAtual=0;       double velocidadeAtual=0;       boolean estaVoando;        void trocarMarcha(){             if (marchaAtual < this.quantidadeDeMarchas){                      this.marchaAtual = this.marchaAtual + 1;                    System.out.println("marcha = " + this.marchaAtual);                                 }else {                    System.out.println("As marchas já estão no limiteee!!! uhuuuu");             }       }        void acelerar(){             if(this.velocidadeAtual<=this.velocidadeMaxima){                    int velocidadePorMarcha = this.velocidadeMaxima / this.quantidadeDeMarchas;                    this.velocidadeAtual = velocidadePorMarcha * this.marchaAtual;                    System.out.println("VRUUMMM ... velocidade atual é: " + this.velocidadeAtual);             }else{                    System.out.println("Não mais pra acelerar...aaaaa!!!");             }                    }               void freiar(){             this.velocidadeAtual = 0;             System.out.println("RSSSSHHHHHHHH que freiada");       }              void decola(){             if(this.velocidadeAtual==this.velocidadeMaxima){                    this.estaVoando = true;                    System.out.println("UHUU DECOLAMOS.. iiii caramba não dá pra pousar..");             }else{                    this.estaVoando = false;                       System.out.println("Para decolar você deve atingir a velocidade máxima!!!");             }       }}Esta é a classe Carro da qual falei, claro que ela está super básica, faltou citar muitas outras coisas como por exemplo o encapsulamento, da qual postarei em breve..e também falta te explicar alguns detalhes do código...Esta classe possui alguns problemas que ainda não conteplamos pois na segunda parte deste post continuarei este exemplo explicando o código, implementando-o e corrigindo-o...Os componentes que compõe a orientação a objetos básica são:Atributos, Métodos, Classes, Encapsulamento, Polimorfismo, Casting, Herança e Interface... vamos tentar usar todos estes no exemplo do carro, nós vimos somente os 3 primeiros.... acho que não eu pra explicar tudo em cinco minutos vou precisar de mais algum tempinho pra te explicar tudo sobre, ok..Aaaaa já ia me esquecendo... para você testar esta maluquice aí... tem que criar uma outra classe que chamaremos de Teste.. (poderia ser qualquer nome)class Teste() {              public static void main(String[] args) {         Carro carro1 = new Carro();       carro1.nome = "duds race";       carro1.marca= "edu company";             carro1.velocidadeMaxima=700;       carro1.quantidadeDeMarchas=5;         carro1.trocarMarcha();       carro1.acelerar();       carro1.acelerar();       carro1.decola();        carro1.trocarMarcha();            carro1.acelerar();        carro1.trocarMarcha();       carro1.acelerar();              carro1.trocarMarcha();       carro1.acelerar();              carro1.trocarMarcha();       carro1.acelerar();              carro1.trocarMarcha();            carro1.acelerar();         carro1.decola();       }}Teste como desejar... e analise o código para melhor compreensão...Bons estudos galera!!!
Eduardo Gomes da Silva