de 32 1 linguagens de programação orientadas a objetos pós-gradução(lato-sensu) em sistemas de...
TRANSCRIPT
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
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;.