21
POO UML e Outros Conceitos Prof. Vicente Paulo de Camargo

POO UML e Outros Conceitos - vpcamargo.com.br DE POO HERANCA... · HERANÇA MÚLTIPLA EM JAVA-cont. Seja o código do sistema que necessita receber usuário e senha: class Sistema{void

  • Upload
    lethu

  • View
    217

  • Download
    0

Embed Size (px)

Citation preview

Page 1: POO UML e Outros Conceitos - vpcamargo.com.br DE POO HERANCA... · HERANÇA MÚLTIPLA EM JAVA-cont. Seja o código do sistema que necessita receber usuário e senha: class Sistema{void

POO – UML e Outros Conceitos

Prof. Vicente Paulo de Camargo

Page 2: POO UML e Outros Conceitos - vpcamargo.com.br DE POO HERANCA... · HERANÇA MÚLTIPLA EM JAVA-cont. Seja o código do sistema que necessita receber usuário e senha: class Sistema{void

UML - INTRODUÇÃO

•UML = Unified Modeling Language = linguagem de modelagem de sistemas

•Permite especificar, visualizar e documentar modelos de softwareorientados a objetos através de diagramas e notações específicas

•A UML é controlada pelo OMG (Object Management Group)

•Para Maiores detalhes acesse :http://docs.kde.org/stable/pt_BR/kdesdk/umbrello/uml-basics.html

POO – UML e Outros Conceitos

Page 3: POO UML e Outros Conceitos - vpcamargo.com.br DE POO HERANCA... · HERANÇA MÚLTIPLA EM JAVA-cont. Seja o código do sistema que necessita receber usuário e senha: class Sistema{void

ASSINATURA DE MÉTODO

• É a declaração do método contendo visibilidade,tipo de retorno, nome e parâmetros

•Parâmetros Formais: São os parâmetros definidos nadeclaração do método

•Exemplo: int soma(int a, int b)

a e b são parâmetros formais

•Parâmetros Reais: São os parâmetros existentes nachamada de um método

•Exemplo: int resultado=soma(30,20)

30 e 20 são parâmetros reais

private int produto(int x, int y)

POO – UML e Outros Conceitos

Page 4: POO UML e Outros Conceitos - vpcamargo.com.br DE POO HERANCA... · HERANÇA MÚLTIPLA EM JAVA-cont. Seja o código do sistema que necessita receber usuário e senha: class Sistema{void

MÉTODO ABSTRATO

• É UM MÉTODO QUE POSSUI APENAS UMAASSINATURA.

•NÃO TEM COM CORPO

•UMA CLASSE QUE TEM UM MÉTODO ABSTRATO É,NECESSARIAMENTE, UMA CLASSE ABSTRATA

POO – UML e Outros Conceitos

Page 5: POO UML e Outros Conceitos - vpcamargo.com.br DE POO HERANCA... · HERANÇA MÚLTIPLA EM JAVA-cont. Seja o código do sistema que necessita receber usuário e senha: class Sistema{void

MÉTODO STATIC

• É UM MÉTODO DE CLASSE E NÃO DE OBJETO

•Considere o exemplo do método sqrt(), que é ummétodo estático da classe Math

•Exemplo de uso: Cálculo da raiz quadrada de 5

•double sqr2 = Math.sqrt(2.0);

Não foi necessário instanciar objetosReferenciou-se apenas o nome da classe

POO – UML e Outros Conceitos

Page 6: POO UML e Outros Conceitos - vpcamargo.com.br DE POO HERANCA... · HERANÇA MÚLTIPLA EM JAVA-cont. Seja o código do sistema que necessita receber usuário e senha: class Sistema{void

CLASSE ABSTRATA

Classe abstrata serve apenas como modelo para outras classes

Sempre devem ser herdadas e não podem ser instanciadas

Podem conter ou não métodos abstratos

Os métodos abstratos devem ser implementados em uma classe concreta, que é subclasse de uma classe abstrata

Se uma classe abstrata herdar outra classe abstrata, a classe que herda não precisa implementar os métodos abstratos.

Para criarmos uma classe ou método abstrato usamos a palavra-chave abstract na frente do nome do/da método/classe

POO – UML e Outros Conceitos

Page 7: POO UML e Outros Conceitos - vpcamargo.com.br DE POO HERANCA... · HERANÇA MÚLTIPLA EM JAVA-cont. Seja o código do sistema que necessita receber usuário e senha: class Sistema{void

Diagrama de classe – cont.

HERANÇA SIMPLES NA UML

GENERALIZAÇÃO

ESPECIALIZAÇÃO

POO – UML e Outros Conceitos

Page 8: POO UML e Outros Conceitos - vpcamargo.com.br DE POO HERANCA... · HERANÇA MÚLTIPLA EM JAVA-cont. Seja o código do sistema que necessita receber usuário e senha: class Sistema{void

HERANÇA MÚLTIPLA EM JAVA

Seja um sistema que possua Funcionários, Gerentes, Diretores e outros

Gerentes e DIRETORES acessam partes específicas do sistema

POO – UML e Outros Conceitos

Page 9: POO UML e Outros Conceitos - vpcamargo.com.br DE POO HERANCA... · HERANÇA MÚLTIPLA EM JAVA-cont. Seja o código do sistema que necessita receber usuário e senha: class Sistema{void

HERANÇA MÚLTIPLA EM JAVA-cont.

Seja o código do sistema que necessita receber usuário e senha:class Sistema{

void loginSistema(Funcionario f){//f.autentica(....) ..ERRO! nem todo Funcionario tem esse método}

}

Outra solução....class Sistema{

void loginSistema(Diretor d){ d.autentica()...} void loginSistema(Gerente g){ g.autentica()...}}

Problema: toda nova classe autenticável exigirá um novo método na classe Sistema

POO – UML e Outros Conceitos

Page 10: POO UML e Outros Conceitos - vpcamargo.com.br DE POO HERANCA... · HERANÇA MÚLTIPLA EM JAVA-cont. Seja o código do sistema que necessita receber usuário e senha: class Sistema{void

HERANÇA MÚLTIPLA EM JAVA-cont.

Outra solução:Criar uma classe na árvore de herança denominada de Autenticavel:

POO – UML e Outros Conceitos

Page 11: POO UML e Outros Conceitos - vpcamargo.com.br DE POO HERANCA... · HERANÇA MÚLTIPLA EM JAVA-cont. Seja o código do sistema que necessita receber usuário e senha: class Sistema{void

HERANÇA MÚLTIPLA EM JAVA-cont.

Dessa forma, temos:

class Sistema{void loginSistema(Autenticavel a){ a.autentica()...}}

<<ocorre sem problema>>

Mas, queremos ampliar a complexidade: Queremos que clientes acessem o sistema.... Simples:Criamos a classe Cliente como subclasse de Autenticavel

POO – UML e Outros Conceitos

Page 12: POO UML e Outros Conceitos - vpcamargo.com.br DE POO HERANCA... · HERANÇA MÚLTIPLA EM JAVA-cont. Seja o código do sistema que necessita receber usuário e senha: class Sistema{void

HERANÇA MÚLTIPLA EM JAVA-cont.

PROBLEMA:Cada cliente terá salário e outros recursos da classe Funcionario, que Não faz sentido

O que fazer então?

A melhor solução é o uso de uma classe denominada de

INTERFACE

POO – UML e Outros Conceitos

Page 13: POO UML e Outros Conceitos - vpcamargo.com.br DE POO HERANCA... · HERANÇA MÚLTIPLA EM JAVA-cont. Seja o código do sistema que necessita receber usuário e senha: class Sistema{void

HERANÇA MÚLTIPLA EM JAVA-cont.

É um tipo de classe que:

• Não pode ser instanciável•É referenciada com implements no lugar de extends• Só pode possuir assinaturas de métodos públicos e abstratos (sem corpo).•Os prefixos abstract e public podem ser usados, mas são em geral omitidos; • Não pode conter variáveis de instância ou de classe (static); • Pode conter declarações de constantes (com prefixo final e inicializadas para um valor) •prefixo static pode ser usado, mas é em geral omitido; • Pode ser criada como subinterface de outra interface já existente, usando extends

INTERFACE

Interface IntfB extends IntfA

POO – UML e Outros Conceitos

Page 14: POO UML e Outros Conceitos - vpcamargo.com.br DE POO HERANCA... · HERANÇA MÚLTIPLA EM JAVA-cont. Seja o código do sistema que necessita receber usuário e senha: class Sistema{void

Herança Múltipla

POO – UML e Outros Conceitos

Page 15: POO UML e Outros Conceitos - vpcamargo.com.br DE POO HERANCA... · HERANÇA MÚLTIPLA EM JAVA-cont. Seja o código do sistema que necessita receber usuário e senha: class Sistema{void

POLIMORFISMO

É o mecanismo que ocorrequando um método temcapacidade de responder devárias formas, desde que suaassinatura não seja alterada.

POO – UML e Outros Conceitos

Page 16: POO UML e Outros Conceitos - vpcamargo.com.br DE POO HERANCA... · HERANÇA MÚLTIPLA EM JAVA-cont. Seja o código do sistema que necessita receber usuário e senha: class Sistema{void

POLIMORFISMO – Cont.Polimorfismo com extends - Exemplos

class Animal {

public String comer() {

return( "Animal Comendo..." ); }

}

class Cachorro extends Animal {

public String comer() {

return("Cachorro Comendo..." ); }

}

EXERCÍCIO: Crie um programa que permita simular o polimorfismo com as classesAnimal, Cachorro e Gato EM UM MÉTODO ESPECÍFICO.

class Gato extends Animal {

public String comer() {

return("Gato Comendo..." ); }

}

POO – UML e Outros Conceitos

Page 17: POO UML e Outros Conceitos - vpcamargo.com.br DE POO HERANCA... · HERANÇA MÚLTIPLA EM JAVA-cont. Seja o código do sistema que necessita receber usuário e senha: class Sistema{void

POLIMORFISMO - Cont.

Polimorfismo – extends - Exemplos – TestaAnimalimport javax.swing.*;class TestaAnimal{

public void verAnimalComer( Animal animal ) {

String s=""; s=animal.comer();System.out.println(s);

}

public static void main( String[ ] args ) {

TestaAnimal t = new TestaAnimal(); t.verAnimalComer( new Animal() ); t.verAnimalComer( new Cachorro() ); t.verAnimalComer( new Gato() );

} }

POO – UML e Outros Conceitos

Page 18: POO UML e Outros Conceitos - vpcamargo.com.br DE POO HERANCA... · HERANÇA MÚLTIPLA EM JAVA-cont. Seja o código do sistema que necessita receber usuário e senha: class Sistema{void

POLIMORFISMO - Cont.

Polimorfismo com implements - Exemplosinterface Carro{

public String acelerar(); }

class Ferrari implements Carro{

public String acelerar(){

return("Ferrari acelerando...\n"); }

}

class Fusca implements Carro{

public String acelerar(){

return("Fusca.....\n"); }

} EXERCÍCIO: Elabore um programa que implemente o polimorfismo

import javax.swing.*;class TestaCarro{public static void main(String[ ] args){

String s=""; Carro c = new Ferrari(); s=c.acelerar(); c = new Fusca(); s+=c.acelerar();JOptionPane.showMessageDialog

(null,s,"Implements",1); }

}

POO – UML e Outros Conceitos

Page 19: POO UML e Outros Conceitos - vpcamargo.com.br DE POO HERANCA... · HERANÇA MÚLTIPLA EM JAVA-cont. Seja o código do sistema que necessita receber usuário e senha: class Sistema{void

Considere uma aplicação que necessita simularcertos animais em ação, dentre eles se destacam:cachorro, águia e elefante. Esses animais devem herdarde uma classe abstrata que possui os atributos pernas(int), bico(boolean), asas(boolean), carnívoro(boolean)e nome(String). Crie uma aplicação que permitainstanciar esses animais de tal forma que eles possamherdar da classe abstrata indicada e também deinterfaces que permitam que esses animais possamefetuar ações como comeCarne, comePlantas ouvoando. Esses métodos devem apresentar mensagensespecíficas. Utilize JOptionPane

Exercício de revisão de herança múltipla

Page 20: POO UML e Outros Conceitos - vpcamargo.com.br DE POO HERANCA... · HERANÇA MÚLTIPLA EM JAVA-cont. Seja o código do sistema que necessita receber usuário e senha: class Sistema{void

Considere a situação de uma folha de pagamento hipotética parauma determinada empresa que possui funcionáriosadministrativos, professores e médicos, sendo que o cálculo dossalários é específico para cada categoria. A categoriaadministrativa recebe o salário correspondente ao saláriomínimo no valor de R$ 880,00. A categoria de professores recebeum salário fixo com base no salário mínimo mais ocorrespondente à quantidade de horas/aula, sendo que cadahora/aula é de R$25,00. A categoria de médicos recebe umsalário correspondente a 2,5 salários mínimos mais oequivalente a 2 horas por dia, sendo que cada hora equivale aR$55,00. Crie uma aplicação que, partindo de uma classeabstrata Funcionario, da qual as demais herdam, permitaprocessar a folha de pagamento de cada funcionário porcategoria, utilizando o polimorfismo. Utilize métodos para aentrada de dados e para a saída de dados, sendo a entrada esaída de dados deve ocorrer com JOptionPane.

Exercício de revisão de polimorfismo

Page 21: POO UML e Outros Conceitos - vpcamargo.com.br DE POO HERANCA... · HERANÇA MÚLTIPLA EM JAVA-cont. Seja o código do sistema que necessita receber usuário e senha: class Sistema{void

F I M

POO – UML e Outros Conceitos