UMA ABORDAGEM SOBRE ORIENTAÇÃO A OBJETOS! Classes Objetos Herança Polimorfismo Histórico. • Linguagens orientadas a objetos só foi possível devido a ao avanço na arquitetura dos computadores. • Assim sofisticados ambientes de programação puderam ser criados. Mas qual a vantagem??? • De uma forma geral o conceito da POO nos leva a simular o mundo real, então o seu entendimento pode nos ser mais intuitivo. • A vantagem de uma linguagem orientada a objetos é diretamente ligada com o reaproveitamento de código. Quais os conceitos ? • • • • Temos que entender o conceito de classe. O conceito de objetos. O conceito de herança. O conceito de Polimorfismo. Definição de Objetos fundamentados em Classes. Representa uma entidade. FÍSICA carro, casa, bicicleta... CONCEITO processo quimico, matricula... SOFTWAREEstrutura de dados... Como é construído um Objeto? • Não há como construir um objeto, sem antes mostrar o que é uma classe. • CLASSE. • Uma classe é um modelo. • Mostra como será um determinado objeto. • Uma classe só contém atributos e métodos. • Atributo é o que sabemos de uma classe, é o estado que terá o objeto. • Métodos são os comportamentos que um objeto, terá, será o que ele sabe fazer. O QUE OS OBJETOS FAZEM? Se comunicam, por meio de mensagem. Mas um objeto trás a idéia de Que? • Como um objeto é baseado em um modelo, podemos apresentar a seguinte explicação. • Pegaremos uma roda de um carrinho de bebê, é uma roda pequena de borracha maciça, com aro em plástico. • Pegaremos agora uma roda de carriola, onde temos um pneu de borracha com câmara de ar, e aro em ferro orbital, ou raiada. E as rodas de um carro? AS RODAS DO CARRO. • Opa!!! estão em ordem, e também são rodas. • Todas tem uma função em comum, e servem para efetuar o deslocamento de alguma entidade de um lado a outro. • Perceba que, cada roda tem o seu estado especifico, tais como tipo de material, tamanho, etc... porém todas tem o mesmo comportamento, sabem fazer a mesma coisa, que é RODAR. POR FALAR EM CARRO... – Não estamos na matrix – Para quem assistiu, viu a parte, onde o oráculo diz ao Neo que “a colher não exite”. – Mas podemos afirmar que : – O CARRO NÃO EXISTE. – Pois o mesmo é composto de varias partes, vários objetos, e no final acabamos compondo o carro. JÁ SABEMOS O QUE É UM OBJETO, E AGORA? • Para que serve um objeto? • Bom um objeto serve para se comunicar uns, com os outros, com a finalidade de construir algo maior, ok. • E no mundo real??? • Em um projeto de sistema real?? Está na hora de sabermos de Herança. • Herança serve para efetuar a reutilização da estrutura. • Vamos lá: • Uma classe ANIMAL, com suas particularidades, ATRIBUTOS. • Nome da classe Mãe: Animal. • Atributos da classe: Tipo, peso, tamanho. Sub-Classe CÃO da classe MÃE ANIMAL. • A classe Filha,(CÃO) classe que herda as particularidades da classe mãe deve ser capaz de responder a seguinte questão para ser considerada filha. • CÃO É – UM ANIMAL? Cão sabemos que sim, é um animal. Então existe, ligação de herança entre Animal e Cão. Um exemplo de Herança. public class Animal{ private float peso; private String tipo; private float tamanho; encapsulamento de Get/Set para os atributos. public void comer(){ System.out.println(“Este animal come.”); } public void dorme(){ System.out.println(“Este animal dorme.”); } } Classe Filha Cão. public class Cão extends Animal{ //*Essa classe tem todos os atributos e métodos da classe Animal, podemos mudar métodos da classe aqui na classe filha com um conceito chamado de sobrecarga e sobrescrita. *//E ainda podemos escrever mais métodos. public void morder(){ System.out.println(“O cão morde mesmo!”); } // sobreescrevendo public String comer(String comendo){ String come = comendo; System.out.println(“Este animal come CARNE!!!”+come); return (come); } } POLIMORFISMO. • Seus operandos podem assumir mais de um tipo. • Ou seja serve para promover a reutilização de código. • Por exemplo para construirmos um código 100% reutilizável, podemos fazer uso classes Abstratas e Interfaces. Vamos descrever Classe Abstrada. • Uma classe abstrata, possui atributos, e métodos com nenhuma ou uma mínima implementação. • Seus métodos terminam com ponto e vírgula, não possuindo chaves como em um método concreto. Uma classe abstrata. // A classe abstrata possúi métodos genéricos e quem for usar a classe terá que estender a classe, e implementar o método, como for necessário. public abstract class Animal{ public void comer(String c); public void dorme(String d); } Estendendo a classe abstrata. • public Cao extends Animal{ public void comer(String c){ String comer = c; system.out.println(“O cão come :”+comer); } public void dorme(String d){ String dorme = d; system.out.println(“O cão dorme na:”+dorme); } // Podemos agora escrever um código próprio da classe Filha Cão public void brincar(String brinc){ String brincar = brinc; system.out.println(“O cão brinca de :”+ brincar); } } Interface • Implementação de um contrato. • Temos que implementar todos os, métodos nela contida. Implementando uma Interface. public interface Relogio { public String getHoras(); } ------------------------------------------------------public interface Radio() { public void liga(); public void desliga(); public void trocaEstacao(int frequencia); } ------------------------------------------------------- Final Interface. public class RadioRelogio implements Radio, Relogio { // Inicializa objeto } public String getHoras() { return horarioAtual; } public void liga() { // Implementacao } public void desliga() { // Implementacao } public void trocaEstacao(int frequencia) { // Implementacao } } Final. • Com o uso de interface podemos reaproveitar códigos, de maneira bastante eficiente. • DÚVIDAS??? • Autor: Moacir Mardegan • Criado em 24/05/2012