Professional Documents
Culture Documents
br
Orientao a Objetos
Igor Takenami
Verso 1.0
http://www.takenami.com.br
Histrico
SIMULA
- Anos 60 - Utilizada para simulaes - Conceitos de Classe e SubClasse
SMALLTALK
- Anos 70 - Desenvolvida pela XEROX - Primeira linguagem orientada a objetos de fato - Cada elemento do SMALLTALK tratado como um objeto
http://www.takenami.com.br
Analogia Biolgica
Alan Kay,
- Um dos pais do paradigma da orientao a objetos - Analogia biolgica
Adicionalmente, cada clula se comportaria como uma Construir um sistema de software a partir de agentes
autnomos que interagem entre si
http://www.takenami.com.br
Cada objeto pertence a uma determinada classe Uma classe agrupa objetos similares A classe dene as caractersticas e
comportamento associado ao objeto
http://www.takenami.com.br
http://www.takenami.com.br
http://www.takenami.com.br
Um sistema Orientado a Objetos uma simulao de um cenrio real (vida) ou ctcio (lme)
http://www.takenami.com.br
Para construir sistemas Orientados a Objetos necessrio entender os conceitos por trs do paradigma
http://www.takenami.com.br
Objeto
Unidade que utilizamos para representar
tocar abstraes em um sistema computacional
No mundo real objeto tudo que podemos No mundo imaginrio um objeto tudo que
podemos representar
http://www.takenami.com.br
A interao entre estes objetos formam grupo de objetos mais complexos que agrupado a outros grupos de objetos complexos do origem ao sistemas reais, como por exemplo o funcionamento de um carro
http://www.takenami.com.br
http://www.takenami.com.br
Classe
Estrutura (molde) que dene os atributos e/ou
estados de um conjunto de objetos com caractersticas similares.
Descreve os servios (aes) providos por seus Quais informaes eles podem armazenar
http://www.takenami.com.br
http://www.takenami.com.br
http://www.takenami.com.br
Construtor da Classe
Mtodo especial denido na classe e executado
no momento que o objeto instanciado retorno
Diferente de outro mtodo pois no possui Deve ter o mesmo nome da classe. Pode receber parmetros
- Normalmente utilizados para inicializar os valores dos atributos do objeto
http://www.takenami.com.br
Para representar classes e objetos em modelos computacionais podemos utilizar uma notao chamada UML
http://www.takenami.com.br
UML
Unied Modeling Language Linguagem para representao de modelos
visuais com um signicado especico e padronizado
http://www.takenami.com.br
http://www.takenami.com.br
Atributos
Construtor
Mtodos
http://www.takenami.com.br
Representao UML
http://www.takenami.com.br
http://www.takenami.com.br
Abstrao
Depende do Observador !!
http://www.takenami.com.br
Abstrao
Uma abstrao qualquer modelo que inclui os aspectos relevantes de alguma coisa, ao mesmo tempo em que ignora os menos importantes
http://www.takenami.com.br
Abstrao
Representa as caractersticas que devem conter
em uma classe para atender a um determinado problema atender a um determinado problema vista ou abstrao do problema
http://www.takenami.com.br
Para desenvolver aplicaes O.O. necessrio identicar os objetos na vira real, extrair a classe que aquele objeto pertence e selecionar os atributos e mtodos que sero necessrios levando em considerao o modelo computacional que est sendo desenvolvido
http://www.takenami.com.br
O modelo O.O. o conjunto de classes que visam resolver um problema computacional levando em considerao como este problema abordado no mundo real
http://www.takenami.com.br
Associaes
Forma como uma classe se relaciona com outra
classe
http://www.takenami.com.br
Associaes
public class Carro { String cor; String marca; int velocidade; Motor ferrari; public Carro(String cor, String marca){ this.cor = cor; this.marca = marca; velocidade = 0; } ferrari = new Motor();
public void diminuir_giro(){ System.out.println("Diminuindo as rotaes do motor."); rotacoes-=1000; } public void aumentar_giro(){ System.out.println("Aumentando as rotaes do motor."); rotacoes+=1000; } public int trabalho_do_motor(){ return rotacoes * cavalos; } }
public void acelerar(){ ferrari.aumentar_giro(); velocidade = ferrari.trabalho_do_motor() / 1000; } public void parar(){ velocidade = 0; } }
http://www.takenami.com.br
Representao UML
http://www.takenami.com.br
Encapsulamento
Separar o programa em partes, tornando cada
parte mais isolada possvel uma da outra
necessariamente conhecer sua implementao instncia fora da classe onde estes foram criados
http://www.takenami.com.br
Uma grande vantagem do encapsulamento que toda parte encapsulada pode ser modicada sem que os usurios da classe em questo sejam afetados
http://www.takenami.com.br
Herana
Capacidade que uma classe tem de herdar as
caractersticas e comportamentos de outra classe subclasse
Classe pai chamada de superclasse e a lha de Em Java s permitido herdar de uma nica
classe, ou seja, no permite herana mltipla
http://www.takenami.com.br
O objetivo da herana especializar o entendimento de uma classe criando novas caractersticas e comportamentos que vo alm da superclasse
http://www.takenami.com.br
Ao mesmo tempo que a especializao amplia o entendimento de uma classe, a generalizao vai no sentido inverso e dene um modelo menos especializado e mais genrico
http://www.takenami.com.br
Herana
Superclasse de Morcego - Generalizao Subclasse de Mamifero - Especializao
public class Mamifero { int altura; double peso; public void mamar(){ System.out.println("Mamifero mamando"); } }
public class Morcego extends Mamifero { int tamanho_presa; public void voar(){ System.out.println("Morcego Voando"); } }
http://www.takenami.com.br
Classe Morcego
Quais as caractersticas de morcego ?
- altura - peso - tamanho_presa
http://www.takenami.com.br
Se usarmos os princpios de lgica podemos dizer que todo morcego mamfero porm NO podemos armar que todo mamfero morcego
http://www.takenami.com.br
Observe
1) Mamifero animal_mamifero = new Morcego(); 2) Morcego batman = new Mamifero();
Com base no que foi dito at aqui podemos deduzir que o item
2 deve causar um erro j que no possvel garantir que todo mamfero seja um morcego Mamfero e o objeto para o qual a varivel se refere do tipo Morcego seja compatvel com o seu tipo e neste caso todo Morcego CERTAMENTE um Mamfero
http://www.takenami.com.br
http://www.takenami.com.br
Concluso
Todo Morcego um Mamfero, porem no pode
realizar todas as aes de um morcego
- A varivel que recebe o objeto do tipo Mamfero
nova varivel do tipo Morcego e atribuir o objeto que estava na varivel animal_mamifero CAST
http://www.takenami.com.br
Representao UML
http://www.takenami.com.br
Sobrescrita
Substitui o comportamento de uma subclasse
quando herdada da superclasse
http://www.takenami.com.br
Sobrecarga
a capacidade de denir mtodos com o mesmo
nome
- Possuem a mesma funcionalidade
http://www.takenami.com.br
Exemplo de Sobrecarga
public int somar(int v1, int v2){ return v1 + v2; } public int operar(int v1, int v2){ return somar(v1, v2); } public int operar (char op, int v1, int v2){ switch(op){ case '+': return somar(v1, v2); break; case '-': return subtrair(v1, v2); } }