de 32 1 linguagens de programação orientadas a objetos pós-gradução(lato-sensu) em sistemas de...

32
1 de 32 Linguagens de Programação Orientadas a Objetos Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa Marco Fagundes [email protected] Colaboração: Prof. Ricardo Santos Aula 07 - Manipulação de Arrays http://www.ufpa.br/sampaio/bd2003/lpoo Marco Fagundes

Upload: internet

Post on 17-Apr-2015

106 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: De 32 1 Linguagens de Programação Orientadas a Objetos Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa Marco Fagundes mafm@cin.ufpe.br Colaboração:

1 de 32

Linguagens de Programação Orientadas a Objetos

Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa

Marco [email protected]

Colaboração: Prof. Ricardo Santos

Aula 07 - Manipulação de Arrays

http://www.ufpa.br/sampaio/bd2003/lpoo

Marco Fagundes

Page 2: De 32 1 Linguagens de Programação Orientadas a Objetos Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa Marco Fagundes mafm@cin.ufpe.br Colaboração:

2 de 32

Roteiro

Revisão dos Objetos e Meta do Módulo de Fundamentos Revisão do Básico de Java e Delphi

• Estrutura de Programas• Tratamento de Operações• Declaração de Variáveis• Tipos de Dados e Estruturas de Controle

Declarando e Construindo Arrays

Page 3: De 32 1 Linguagens de Programação Orientadas a Objetos Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa Marco Fagundes mafm@cin.ufpe.br Colaboração:

3 de 32

Módulo de Fundamentos

Módulo de Fundamentos• Objetivo: Apresentar conceitos básicos e avançados da

orientação a objetos, os ambientes Java e Delphi e sua utilização no desenvolvimento de GUIs

• Meta: Desenvolver uma aplicação (Java ou Delphi) com uma GUI oferecendo as operações básicas de cadastro (incluir, excluir, alterar e consultar) utilizando uma estrutura de dados para armazenar objetos

Page 4: De 32 1 Linguagens de Programação Orientadas a Objetos Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa Marco Fagundes mafm@cin.ufpe.br Colaboração:

4 de 32

Módulo de Fundamentos

Conteúdo• Conceitos da Orientação a Objetos• Ambiente JDK e Delphi• Construção de GUI em Java e Delphi• Programação Orientada a Eventos• Estrutura de Dados (Array) e Tipo String• Classe, Objeto, Atributos e Métodos• Compartilhamento de Recursos (Dados e Operações)

entre Classes• Recursos Avançados de GUI e Criação de Objetos

O que foi visto??

Page 5: De 32 1 Linguagens de Programação Orientadas a Objetos Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa Marco Fagundes mafm@cin.ufpe.br Colaboração:

5 de 32

Módulo de Fundamentos

Duração: 13 Aulas• Início: 01/04/2003• Término: 29/04/2003

Datas Importantes• Entrega do 1º Exercício: 23/04/2003• Exame Escrito:29/04/2003• Entrega da 1ª Etapa do Projeto Final: 06/05/2003

Page 6: De 32 1 Linguagens de Programação Orientadas a Objetos Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa Marco Fagundes mafm@cin.ufpe.br Colaboração:

6 de 32

Destaques da Aula 1

Qualidade de Software• Atributos de qualidade: Corretude, Eficiência,

Manutenibilidade Portabilidade, Reusabilidade, Robustez, Extensibilidade, Integridade e Usabilidade

• Os fatores extensibilidade e reusabilidade estão diretamente relacionados à manutenção de sistemas. Estima-se que 70% do custo de software corresponde à manutenção

Paradigmas de Programação• Imperativo• Orientado a Objetos• Funcional • Lógico

Linguagens OO: Formalmente, para ser considerada uma linguagem OO, esta precisa implementar quatro conceitos importantes: abstração, encapsulamento, herança e polimorfismo

Page 7: De 32 1 Linguagens de Programação Orientadas a Objetos Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa Marco Fagundes mafm@cin.ufpe.br Colaboração:

7 de 32

Destaques da Aula 2 - Estrutura de Programas Java

class <nome> { <declarações>; public static void main (<parametro>) { <declarações>; <instruções>; }//fim main

}// fim class

Unit Delphi

interface uses | const | type | var

implementation uses | const | type | var

initialization<instruções>;

finalization<instruções>;

end.

Somente se a classe for

executável

Page 8: De 32 1 Linguagens de Programação Orientadas a Objetos Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa Marco Fagundes mafm@cin.ufpe.br Colaboração:

8 de 32

Destaques da Aula 2 - Operações Java

class <nome> { <declarações>;

Tipo_Retorno Nome_Método (<param>) { <declarações>; <instruções>; }// fim Nome_Método ...(main - caso deseje execução) }// fim class

Unit Delphi

interface uses | const | type | var

public procedure <nome>(<param>); function <nome>(<param>): tipo;

implementation uses | const | type | var

<definição_procedure>;

<definição_function>;

...(initialization, Finalization)

end.

Se o Tipo_Retorno for void então o método é similar a um procedimento. Caso contrário o método se parece com uma função, necessitando do valor de retorno. Assim uma instrução obrigatória é:return <resultado>;

Shift+ Ctrl + C constroi o corpo do procedimento/função.

Page 9: De 32 1 Linguagens de Programação Orientadas a Objetos Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa Marco Fagundes mafm@cin.ufpe.br Colaboração:

9 de 32

Destaques da Aula 2 - Operações Java

class <nome> { <declarações>;

Tipo_Retorno Nome_Método (<param>) { <declarações>; <instruções>; }// fim Nome_Método ...(main - caso deseje execução) }// fim class

Unit Delphi

interface uses | const | type | var

public ...;implementation uses | const | type | var

procedure <nome_classe>.<nome>(<param>); var ...begin <instruções>;end;

function <nome_classe>.<nome>(<param>): tipo; var ...begin <instruções>; result:= <resultado>;end;...end.

Variáveis de Instância

Variáveis de Locais

Variáveis Globais

Variáveis Locais

Page 10: De 32 1 Linguagens de Programação Orientadas a Objetos Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa Marco Fagundes mafm@cin.ufpe.br Colaboração:

10 de 32

Destaques da Aula 2 - Exemplo de Operações Java

class <nome> { <declarações>;

void exibeMsg ( ) { System.out.println (‘Exemplo Msg’); }// fim

int somarVal (int v1, int v2); { return v1 + v2; }// fim

...(main - caso deseje execução) }// fim class

Unit Delphi

interface uses | const | type | var

implementation uses | const | type | var

procedure <nome_classe>.exibeMsg;begin showMessage(‘Exemplo Msg’);end;

function <nome-classe>somarVal(v1,v2:integer):integer;begin result:=v1+v2;end;

...(initialization, Finalization)

end.

Page 11: De 32 1 Linguagens de Programação Orientadas a Objetos Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa Marco Fagundes mafm@cin.ufpe.br Colaboração:

11 de 32

Destaque da Aula 2 - Testando Operações em Java

class Teste { void exibeMsg (String pMsg ) { System.out.println (pMsg); } int somarVal (int v1, int v2) { return v1 + v2; }/ public static void main(String[ ] args) { Teste t = new Teste(); t.exibeMsg(‘Exemplo Msg’); System.out.println (t.somarVal(50,70)); } //fim main}// fim class

Compilando

Executando

Resultado

Crie um diretório para aplicaçãoSalve a aplicação para o diretório criado

Page 12: De 32 1 Linguagens de Programação Orientadas a Objetos Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa Marco Fagundes mafm@cin.ufpe.br Colaboração:

12 de 32

Destaques da Aula 2 - Testando Operações em Delphi Crie um novo projeto no Delphi Adicione um TButton ao Form Altere as propriedades Name e Caption do

Botão

Crie um diretório para a aplicação Salve o projeto/units para o diretório criado

Page 13: De 32 1 Linguagens de Programação Orientadas a Objetos Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa Marco Fagundes mafm@cin.ufpe.br Colaboração:

13 de 32

Destaques da Aula 2 - Testando Operações em Delphi Definindo Procedures/Functions

interface ... public procedure exibeMsg (pMsg:String); function somarVal (v1,v2: integer): integer;

implementation ...

procedure TForm1.exibeMsg(pMsg:String);begin showMessage(‘Exemplo Msg’);end;

function TForm1.somarVal(v1,v2:integer): integer;begin result:=v1+v2;end;

end.

Page 14: De 32 1 Linguagens de Programação Orientadas a Objetos Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa Marco Fagundes mafm@cin.ufpe.br Colaboração:

14 de 32

Destaques da Aula 2 - Testando Operações em Delphi Programando o Manipulador de eventos do Botão Dar um duplo clique em cima do componente Botão

...

procedure TForm1.btnTesteMsgClick(Sender: TObject);begin exibeMsg(‘Exemplo Msg’); showMessage(intToStr(somarVal(1,2)));end;

end.

Resultado da Execução

Page 15: De 32 1 Linguagens de Programação Orientadas a Objetos Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa Marco Fagundes mafm@cin.ufpe.br Colaboração:

15 de 32

Destaques da Aula 2 - Declaração de Variáveis Variáveis Java

class <nome> { <Tipo_Variável> <Nome_Variável>; Tipo_Ret Nome_Método (<param>) { <Tipo_Variável> <Nome_Variável>; <instruções>; } }// fim class

Variáveis Delphiinterface uses | const | type | var

implementation uses | const | type var <Nome_Variável>:<Tipo_Variável>;...end.

Exemplo Javaclass <nome> { String codTurma; public static void main (<parametro>) { int contador; <instruções>; }//fim main }// fim class

Exemplo Delphiinterface uses | const | type | var

implementation uses | const | type var contador: integer;

...end.

Variável de Instância

Variável Local

Variável Global

Page 16: De 32 1 Linguagens de Programação Orientadas a Objetos Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa Marco Fagundes mafm@cin.ufpe.br Colaboração:

16 de 32

Destaques da Aula 2 - Tipos de Dados Tipos Primitivos Java

•Numéricos (byte, short, int, long, double e float)

obs: Não confundir com as Classes Integer, Double, Long ...

•boolean (true e false)•Char (‘ ...’ )

•Caracteres sem representação visual

Ex: \n \t \’ \” \\

• Estrutura de Dados (Array) int a[ ]; (declarando) a = new int[10]; (definindo)

•Numéricos (Integer,Longint,Byte, Real, Double)•Boolean (true e false)•Char(‘.’) e String (‘...’)•Operações: Length(String)

• Estrutura de Dados (Array) Type (declarando tipo) TintList = array[1..100] of integer;

Var (declarando variável) arList: TintList;

Tipos Primitivos Delphi

Page 17: De 32 1 Linguagens de Programação Orientadas a Objetos Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa Marco Fagundes mafm@cin.ufpe.br Colaboração:

17 de 32

Destaques da Aula 2 - Estruturas de Controle Estruturas de Decisão Java

• if(condição) <instrução>; else --->opcional <instrução>;Exemplo: if (i==5) System.out.println(“i = 5”); if (s.equals(“Teste”)) { i=3; a=“OK”; } else i=0;

Estruturas de Decisão Delphi

• if (condição) then <instrução> else <instrução>;

Exemplo: if (i=5) then showMessage(“i = 5”); if (s = ‘Teste’) begin i=3; a=“OK”; end else i=0;

Instrução Composta ou em Bloco

Instrução Composta ou em Bloco

Diferente do Java, o “;” fecha o comando if

Page 18: De 32 1 Linguagens de Programação Orientadas a Objetos Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa Marco Fagundes mafm@cin.ufpe.br Colaboração:

18 de 32

Destaques da Aula 2 - Estruturas de Controle Estruturas de Decisão Java

• switch(variável)...case(valor)

Exemplo:

switch(i) { case 0: System.out.println(“zero”); break; case 1: System.out.println(“um”); break;

default:System.out.println(“pad”); }

Estruturas de Decisão Delphi

• case<variável> of valores:<instrução>; else <instrução>; end;

Exemplo:

case (i) of case 0: showMessage(“zero”); case 1: showMessage(“um”);

else showMessage(“padrão”); end;

Page 19: De 32 1 Linguagens de Programação Orientadas a Objetos Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa Marco Fagundes mafm@cin.ufpe.br Colaboração:

19 de 32

Destaques da Aula 2 - Estruturas de Controle Estruturas de Repetição

• while (condição) <instrução>; Exemplo:int i=0, s=10;

while (i<10){ s = s + i; i++; } System.out.println(i+s);

Estruturas de Decisão Delphi

• while (condição) do <instrução>

Exemplo:

i=0; s=10; while (i<10) do begin s = s + i; i++; end; showMessage(IntToStr (i+s));

Instrução Composta ou em Bloco

Instrução Composta ou em Bloco

Page 20: De 32 1 Linguagens de Programação Orientadas a Objetos Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa Marco Fagundes mafm@cin.ufpe.br Colaboração:

20 de 32

Arrays

Arrays são objetos que armazenam variáveis do mesmo tipo.

Pode armazenar tanto variáveis de tipos primitivos quanto referências a objetos.

Os arrays são sempre tratados como objetos, mesmo que eles sejam utilizados para armazenar tipos primitivos.

Page 21: De 32 1 Linguagens de Programação Orientadas a Objetos Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa Marco Fagundes mafm@cin.ufpe.br Colaboração:

21 de 32

Arrays

Todos os arrays Java são tecnicamente unimensionais.

Arrays bidimensionais são implementados como arrays de arrays.

A declaração de um array não cria um objeto array ou aloca espaço em memória. Na verdade, ela cria uma variável de referência a um array.

Page 22: De 32 1 Linguagens de Programação Orientadas a Objetos Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa Marco Fagundes mafm@cin.ufpe.br Colaboração:

22 de 32

Declarando Arrays

Existem diversas formas de declaração:

String[][]s;String []s[];String[][] [] s;String [ ] [ ]s; String[] s[][];String[ ] s[][ ]; String s[][];String s [][][];String[][] s [ ];

String[]s;String []s;String [] s;String [ ] s; String[] s;String[ ] s; String s[];String s [];String s [ ];

Page 23: De 32 1 Linguagens de Programação Orientadas a Objetos Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa Marco Fagundes mafm@cin.ufpe.br Colaboração:

23 de 32

Declarando Arrays

Existem diversas formas de declaração:

String[]s;String []s;String [] s;String [ ] s; // extra white space ignoredString[] s;String[ ] s; // extra white space ignoredString s[];String s [];String s [ ]; // extra white space ignored String[] s[];String[][]s;String s [] [ ]; // extra white space ignored

Page 24: De 32 1 Linguagens de Programação Orientadas a Objetos Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa Marco Fagundes mafm@cin.ufpe.br Colaboração:

24 de 32

Construindo Arrays

Não inclua o tamanho do array nas declarações:

int[5] testArray; // Errado!

Todos os arrays são zero-based. Arrays devem ser indexados por valores inteiros. Ao acessarmos um array com um índice menor

que 0 ou maior que o comprimento do array gera uma exceção ArrayIndexOutOfBoundsException em tempo de execução.

Page 25: De 32 1 Linguagens de Programação Orientadas a Objetos Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa Marco Fagundes mafm@cin.ufpe.br Colaboração:

25 de 32

Construindo Arrays

Uma vez que os arrays são Objetos, eles podem ser inicializados com a palavra reservada new.

Os arrays são automaticamente inicializados com o valor padrão do tipo em questão.

String[] s = new String[100];boolean[] b = new boolean[4];int[] i = new int[10][10];

Page 26: De 32 1 Linguagens de Programação Orientadas a Objetos Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa Marco Fagundes mafm@cin.ufpe.br Colaboração:

26 de 32

Construindo Arrays

int[] testScores;testScores = new int[4];

0 0 0 0

0 1 2 3

testScores

Valores

Índicesobjeto array int [ ]

Page 27: De 32 1 Linguagens de Programação Orientadas a Objetos Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa Marco Fagundes mafm@cin.ufpe.br Colaboração:

27 de 32

Construindo Arrays

Em Java, os arrays são alocados em tempo de execução, de forma que podemos utilizar o seguinte código:

int arrSize = 100;

String[] myArray = new String[arrSize];

Page 28: De 32 1 Linguagens de Programação Orientadas a Objetos Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa Marco Fagundes mafm@cin.ufpe.br Colaboração:

28 de 32

Construindo Arrays

No caso de “Arrays de Objetos”, o que temos na verdade é um array de Referências a Objetos.

- - -

0 1 2

arrayObjs

Objeto Objeto Objeto

Page 29: De 32 1 Linguagens de Programação Orientadas a Objetos Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa Marco Fagundes mafm@cin.ufpe.br Colaboração:

29 de 32

Inicializando Arrays

Inicializando com chaves.

String[] oneDimArray = { "abc","def","xyz" };

int[] arr = new int[] {1,2,3};

int[][] twoDimArray = { {1,2,3}, {4,5,6}, {7,8,9} };

int[][] myArray = new int[5][]; Inicializando por elemento.

int[] arr = new int[2];

arr[0] = 2;

arr[1] = 1;

Page 30: De 32 1 Linguagens de Programação Orientadas a Objetos Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa Marco Fagundes mafm@cin.ufpe.br Colaboração:

30 de 32

Inicializando Arrays

Inicializando por elemento.

int[][] scores = new int[3][];

scores[0] = new int[4];

scores[1] = new int[6];

scores[2] = new int[1];

Page 31: De 32 1 Linguagens de Programação Orientadas a Objetos Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa Marco Fagundes mafm@cin.ufpe.br Colaboração:

31 de 32

Inicializando Arrays

Inicializando com loop.

int [] myArray = new int[3]

for(int i=0; i<(myArray.length); i++){

myArray[i] = i;

}

Page 32: De 32 1 Linguagens de Programação Orientadas a Objetos Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa Marco Fagundes mafm@cin.ufpe.br Colaboração:

32 de 32

Inicializando Arrays

No caso de Arrays Dimensionais temos:

- - null

0 1 2

myArray

myArray[0] myArray[1]

6 7

10

9 8

10

5

array int[][]

int[] int[]

array int[][]

2

int [][] myArray = new int[3][];myArray[0] = new int[2];myArray[0][0] = 6;myArray[0][1] = 7;myArray[1] = new int[3];myArray[1][0] = 9;myArray[1][1] = 8;myArray[1][2] = 5;.