Prog-II(Parte-6) [Modo de Compatibilidade]Parte-6).pdf · As interface do Java são criadas para...

Preview:

Citation preview

Curso Disciplina Linguagem de Programação II

Curso Engenharia da Computação

Conceitos de Interface; classes abstratas; Diagrama de sequencia, Diagrama de

atividades, classes aninhadas

APOO

1

atividades, classes aninhadas e Listas dinâmicas

Site : http://www1.univap.br/~wagner/ec.html

Prof. Responsáveis

Wagner Santos C. de Jesus

Conceito de Interface

Criação de uma classe Criação de uma classe do tipo Interface

2

Interface

As interface do Java são criadas parasuportar a resolução dinâmica de métodos emtempo de execução. Para que método sejachamado de uma classe para outra, ambas aschamado de uma classe para outra, ambas asclasses precisam estar presentes em tempo decompilação para que o compilador Java possachecar se as assinaturas de métodos sãocompatíveis.

3

Implementação da interface

1 - A assinatura do método não deve ser declarada co mo privada.2 – Não pode haver sobrecarga.3 – Não pode haver implementação de métodos.4 – Não pode ser instanciada diretamente.5 – Não pode ser usada como superclasse.6 – Toda interface deve ter uma classe dependente pa ra implementar seus métodos.

4

Exemplo prático (interface)

Implementação do método

5

Sintaxe da criação de uma classe do tipo interface

interface Nome_classe {

<tipo> <nome_var_final> = <valor>;

public tipo nomeMetodo([<parâmetros>]);

}

6

Exemplo Prático da criação de uma classe do tipo interface

interface Area {

public double calcularArea(int b, int h);public double calcularArea(int b, int h);

}

7

implements

Comando que determina as classe queserão confeccionados os códigos específicospara o funcionamento devido dos métodos.Herdando a classe interface.

Sintaxe:

class <Nome-Classe> implements <interface> {

<Implementação dos metodos interface>

}

8

Exemplo Prático de implementaçãointerface Area {

public double calcularArea(int b, int h);

}

class Triangulo implements Area {

public double calcularArea(int b, int h) {

return ((b * h) / 2);

}}

}

class Retangulo implements Area {

public double calcularArea(int b,int h) {

return b * h;

}

}

9

Classe com método main()

class Figura {

public static void main(String args[]){

Area obj = new Triangulo();

System.out.println(obj.calcularArea(3, 2));System.out.println(obj.calcularArea(3, 2));

obj = new Retangulo();

System.out.println(obj.calcularArea(3, 2));

}

}

10

Classes Abstratas

(abstract)(abstract)

11

Conceito de classe abstrata

Declara-se como estrutura de um dadaabstração sem fornecer uma implementaçãocompleta de cada método. Podendo cadacompleta de cada método. Podendo cadaação ser sobreposta pelos usuários dassubclasses que utilizam o modificador de tipoabstract.

12

Funcionamento das classes abstratas.

1 - A assinatura do método devem ser declarados como abstratos.2 – Pode haver sobrecarga.3 – Pode haver implementação de métodos.

13

3 – Pode haver implementação de métodos.4 – Não pode ser instanciada diretamente.5 – Não pode ser usada como superclasse.6 – Todas as subclasses dependentes devem implementar seus métodos.

Classe abstrata e suas derivadas

14

Exemplo abstração

abstract class Agrupamento {

abstract int soma(int x,int y);

abstract int soma(int y[]);abstract int soma(int y[]);

abstract String soma(String x,String y);

}

15

OperacaoSimples herda Agrupamento

public class Operacaosimples extends Agrupamento {

int soma(int x,int y){

return x + y;

}

int soma(int x[]){return x[0];}

String soma(String x,String y) {return x;}

}

16

OperacaoArranjo herda Agrupamento

public class OperacaoArranjo extends Agrupamento {

int soma(int x[]){

int soma = 0;

for(int indice=0;indice<=x.length-1;indice++)

soma += x[indice];

return soma;

}

int soma(int x,int y){return x;}

String soma(String x,String y) {return x;}

}

17

OperacaoString herda Agrupamento

public class OperacaoString extends Agrupamento {

int soma(int x[]){ return x[0];}

int soma(int x,int y){return x;}

String soma(String x,String y) {String soma(String x,String y) {

return x + y;

}

}

18

Criando Diagramas de Objetos

Um diagrama de objetos consiste numainstância do diagrama de classes, no qual paracada classe temos um objeto (sua instância) emcada classe temos um objeto (sua instância) emum determinado ponto.

19

Cuidado !!!

Logicamente é impossível exibirmostudo, Desta forma, deve se mostrar nodiagrama de objetos somente um conjuntodiagrama de objetos somente um conjuntode objetos que tenham relevância dentroda modelagem.

20

Nomeando um objeto

Sintaxe :

nome do objeto : nome da classe

Exemplo :

Button1 : TButton

21

Quanto aos Atributo(propriedades)

Exemplo : Classe Objeto

22

Exemplo de Diagrama de Classes

23

Exemplo de Diagrama de Objetos

P1 : Projeto

Descricao = "Controle Estoque"Inicio = "01/06/2006"Termino = "01/10/2006"Custo = R$ 12000,00

F1 : Funcionario

Nome = "Jose das Couves"Cargo = "Gerente de projetos"CarteiraProfissional = "012345-1"dataAdmissao = "15/03/1999"

F2 : Funcionario

Nome = "Maria da Silva"Cargo = "Programadora"CarteiraProfissional = "04567-2"dataAdmissao = "18/03/2005"

F3 : Funcionario

Nome = "Maria da Silva"Cargo = "Programadora"CarteiraProfissional = "04567-2"dataAdmissao = "18/03/2005"IncioContrato = "20/01/2007"TerminoContrato = "22/09/2007"

24

Diagrama de Interação

Interação corresponde a um conjuntode mensagens(dados) trocados entrede mensagens(dados) trocados entreobjetos com o objetivo de alcançar a umdeterminado propósito.

25

Diagrama de Interação se divide em duas partes

Diagrama de Sequencia

Diagrama de Atividade Diagrama de Atividade

26

Diagrama de Seqüência

Representa as trocas de informaçõesentre um objeto e outro quando interagementre um objeto e outro quando interagemno mesmo processo.

27

Exemplo : Diag. Seqüência

28

Exemplo de um diagrama de seqüência para uma consul ta a um

Banco de dados dos alunos de uma escola.

29

Identificando uma condição

Os símbolo que determina uma condição vem

a ser [ ], colchete. * asterisco para determinar

que o método será chamado várias vezes.que o método será chamado várias vezes.

30

Exemplo : Condição paraauto-chamada

31

:Acesso

Funcionário

:Venda :Seguranca

Encerramento_Usuario()Solicitar Encerramento

fechamento()

Fechamento do caixa (Especificado)

Diagrama de Seqüência (Encerramento Atividades Funcionários)Projeto de Supermercado

Fechamento do caixa (Especificado)1:Realizar_Backup()

2:Realizar_Backup(1) 3:Realizar_Backup(2)

Encerramento realizado !!! (Logout)

32

Diagrama de Atividades

Um diagrama de atividades é um casoespecial do diagrama de estados no qualtodos (ou pelo menos a maioria) dos estadossão ações ou subatividades nos estados desão ações ou subatividades nos estados deorigem. O diagrama de atividades completo éligado a um classificador, como um caso deuso, um pacote ou a implementação de umaoperação.

33

Estado de ação

Um estado de ação é um tipo simplificadode um estado de máquina. Ou seja é umatarefa executada pelo sistema notarefa executada pelo sistema nodeterminado momento.

34

Um estado de ação é mostrado graficamente

como uma figura formada por linhas superior

e inferior retas e dos lados esquerdo e direito

por arcos convexos. A expressão-ação é

colocada dentro da figura.

PreencherNotas

Exemplos de estados de ação

35

Transições

Mostra o fluxo de um estado de ação paraOutro. É representado com uma linhasimples acompanhada de uma seta dedireção.

36

Decisões

Uma decisão ocorre num diagrama de

atividades quando se deseja por intermédio

de uma condição booleana saber qual

atividade será executada.atividade será executada.

Exemplo :

37

Exemplo : Diagrama de Atividade

38

Problema :

Em uma classe denominada matemática seránecessário criar um método que retorne se umnúmero passado como parâmetro é ou nãoprimo.

Classe:

Matematica : Mat

+num_primo() : boolean

Atividade

39

p = 0

x = n

i = 1

i = i + 1

Diagrama de Atividades (Calculo de números primos)

p = p + 1[x % i = 0 ]

[ i < = x ]

re to rn a f a ls o re to rn a v e rd a d e i ro

[ p < = 2 ]

40

Classes Aninhadas

Agregação ou Agregação ou Decomposição

41

Agregação/Decomposição

Computador Pessoal

MonitorTeclado

AgregaçãoDecomposição

parte-de

CPU Mouse Impressora

42

MonitorTeclado CPU Mouse Impressora

Agregação ou Composição é o agrupamento de componentes baseado emum relacionamento do tipo "todo-parte" ou "parte-de" no qual os objetos querepresentam os componentes de alguma coisa são associados a um objeto querepresenta a estrutura inteira.

Realização do conceito (Agregação e Decomposição)

Para se realiar esse mecanismo pode-secriar uma classe interna a uma outra classeonde se determina que todas as classe criadasonde se determina que todas as classe criadasinternamente serão parte do todo.Caracterizando assim o mecanismo deAgregação o Composição.

43

Classe Ninho composta pela classe Passaro

44

Este exemplo ilustra a classe ninho que contém a cl asse pássaro usando as funcionalidades de alimentação e construç ão do ninho.

Implementaçãopublic class Ninho {

private int palha;private boolean alimento;public void setempalhar(int palha) {

this.palha = palha;}

public void setalimentar(boolean alimento) {this.palha = palha;

public static class Passaro { public static int teste(){

Ninho O = new Ninho();O.setpalha(1);return O.getpalha();

}}

45

this.palha = palha;}

public int getempalhar(){return this.palha;

}

public boolean getalimentar(){return this.alimento;

}

public static void main(String args[]) {

System.out.println(Passaro.teste());}

}

Criando uma Estrutura de Lista Dinâmica

46

Objeto Lista

Pacote (Útil)

ArrayList

Iterator

ListIterator

Classes

java.util.*

47

Para usar os métodos de ArrayList basta importar os pacotes

import java.util.ArrayList;

import java.util.Iterator;

import java.util.ListIterator;

import java.util.Collections;

import java.util.List;

ou

import java.util.*;

48

Construtor de objetos ArraList

ArrayList<String> objString = new ArrayList<String>();

ArrayList<Double> objString = new ArrayList<Double>();

ArrayList<Integer> objString = new ArrayList<Integer>();

ArrayList<Float> objString = new ArrayList<Float>();

Cria um objeto do tipo ArrayList para receber informações dos tipos de dados String, double, float e int.

49

Método: add()

Adiciona um elemento na lista.

Sintaxe :

Obj.add([<expN>],<dado>);

<expN> - Determina qual posição do elemento a ser adicionado. (opcional)

50

Método:Size()

Retorna com número de elementos de um ArrayList.

al.add("C");al.add("C");

al.add("A");

al.add("E");

Object x = al.size();

51

Método : remove()

Remove um elemento do array.

Exemplo :

al.remove(<expN>);

52

Método : indexOf()Retorna com um valor inteiro correspondente a posição

do elemento procurado no Array.

Exemplo :

al.add("Carlos");

al.add("Ana");al.add("Ana");

al.add("fernanda");

al.add("Betania");

int k = al.indexOf("Ana");

System.out.println("Encontra : "+k );

53

Classe Iterator

Cria a interação entre o objeto ArrayList eo hash contendo as referências dos elementosdo vetor.

Exemplo :

Iterator<Tipo> objIterator = objArrayList.iterator();

54

Exemplo : Iterator

ArrayList<String> al = new ArrayList<String>();

al.add("Carlos");

al.add("Ana");

al.add("fernanda");al.add("fernanda");

al.add("Betania");

al.add("Daniel");

Iterator<String> itr = al.iterator();

55

hasNext(), next()

Retornar verdadeiro enquanto tiver elementosno array para serem lidos.

next() : captura o elemento do arrayposicionando o ponteiro no próximo.

Exemplo :

boolean resp = itr.hasNext();

String str = itr.next();

56

Exemplo prático:

while (itr.hasNext()) {

String elemento = itr.next();

System.out.println(elemento);System.out.println(elemento);

}

57

Exemplo Prático

ArrayList<String> al = new ArrayList<String>();

al.add("Carlos");

al.add("Ana");

al.add("fernanda");

Iterator<String> itr = al.iterator();Iterator<String> itr = al.iterator();

while (itr.hasNext()) {

String elemento = itr.next();

System.out.println(elemento);

}

58

Usando for() para percorrer um objeto

Sintaxe:

for (Classe objeto_receptor : Objeto_Emissor) {

<Implementação><Implementação>

}

59

Exemplo prático

public class Mostra {

public void Imprimir (Pessoas pessoas[]){

for (Pessoas pessoa : pessoas) {

System.out.println( pessoa.toString() );System.out.println( pessoa.toString() );

}

}

}

60

Criando Encapsulamento usando lista dinâmicausando lista dinâmica

61

Colaboração entre as classes

62

Exemplo usando lista dinâmica

Pessoas p1 = new Pessoas ("Samuel", 23);

Pessoas p2 = new Pessoas ("Camila", 22);

Pessoas p3 = new Pessoas ("Rayane", 20);Pessoas p3 = new Pessoas ("Rayane", 20);

Pessoas p4 = new Pessoas ("Lilian", 24);

Pessoas p5 = new Pessoas ("Pedro", 23);

63

Adicionando dados ao objeto ArrayList

List<Pessoas> pessoas = new ArrayList<Pessoas>();

pessoas.add(p1);

pessoas.add(p2);

pessoas.add(p3);

pessoas.add(p4);

pessoas.add(p5);

for (Pessoas pessoa : pessoas) {

System.out.println( pessoa.toString() );

}64

Subescrita do método toString()

public class Pessoas {

:

:

public String toString(){ public String toString(){

return "Nome: " + nome + "\tIdade: " + idade;

}

:

}65

Ordenando uma lista DinâmicaDinâmica

66

Implementação da interface para ordenação

Collections

67

Sort()

<Dados>

List

Comparable

Comparable<T>

<T> o tipo de objetos que este objeto pode que este objeto pode ser comparado.

68

Exemplo de implementação da classe Comparable

public class Pessoas implements Comparable<Pessoas> {

:

:

public int compareTo(Pessoas o) {public int compareTo(Pessoas o) {

int valor = nome.compareTo(o.nome);

return (valor != 0 ? valor : 1);

}

:

}69

Classe de inserção dos elementos

pessoas.add(p1);

pessoas.add(p2);

pessoas.add(p3);pessoas.add(p3);

pessoas.add(p4);

pessoas.add(p5);

Collections.sort(pessoas);

70