De 32 1 Linguagens de Programação Orientadas a Objetos Pós-Gradução(Lato-Sensu) em Sistemas de...

Post on 17-Apr-2015

106 views 2 download

Transcript of De 32 1 Linguagens de Programação Orientadas a Objetos Pós-Gradução(Lato-Sensu) em Sistemas de...

1 de 32

Linguagens de Programação Orientadas a Objetos

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

Marco Fagundesmafm@cin.ufpe.br

Colaboração: Prof. Ricardo Santos

Aula 07 - Manipulação de Arrays

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

Marco Fagundes

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

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

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??

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

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

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

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.

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

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.

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

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

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.

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

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

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

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

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;

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

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.

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.

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 [ ];

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

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.

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];

26 de 32

Construindo Arrays

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

0 0 0 0

0 1 2 3

testScores

Valores

Índicesobjeto array int [ ]

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];

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

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;

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];

31 de 32

Inicializando Arrays

Inicializando com loop.

int [] myArray = new int[3]

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

myArray[i] = i;

}

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;.