You are on page 1of 12

Programação e Algoritmos II

2o semestre
ISCTEM
Agosto 2014
Docente: enga Tatiana Kovalenko

AULA TEÓRICA 1 Revisão Ø Ficheiro de tipo texto Ø POO.Tatiana Kovalenko. UEM . Classes e Objectos. Array de Objectos Elaborado por eng.

readLine(). cod = Integer. BufferedReader fichIn = new BufferedReader(fr).parseFloat(str. }catch (FileNotFoundException a) { System.out. nomeArtigo = str. } catch (NumberFormatException b){System.} catch (IOException c) {System.Revisão: Ficheiro de tipo texto Exemplo 1 de leitura do ficheiro e cálculo de preço médio public static float lerDoFicheiro(String nf) {StringTokenizer str.println("Ficheiro "+nf+"nao encontrado!"). while (umaLinha != null) { str = new StringTokenizer (umaLinha). umaLinha = fichIn.readLine(). cont++. } fichIn.nextToken()). nomeArtigo. String umaLinha="". cont=0. s += preco.close().nextToken(). int cod. float s = 0. preco.println(c.out.getMessage()). umaLinha = fichIn.getMessage()).println(b.out. preco = Float.parseInt(str.nextToken()). } return s/cont. try { FileReader fr = new FileReader(nf). } .

umaLinha = fichIn. } fichIn.parseInt(umaCadeia.out.getMessage()).readLine().println(umaLinha).Exemplo 2 de leitura do ficheiro e armazenamento no array de objectos public void LerFichCriarArray(String nf) { StringTokenizer umaCadeia. lista[cont] = new Produto(nom. try { FileReader fr = new FileReader(nf).parseFloat(umaCadeia.nextToken()).").out. }catch (FileNotFoundException a) { System.readLine().nextToken(). umaCadeia = new StringTokenizer (umaLinha.nextToken()).qde.println(b. int qde. } } . pr = Float.} catch (IOException b) {System.out. } catch (NumberFormatException b){System.out. float pr.println(b. while (umaLinha != null) { System.close(). qde = Integer. cont++. umaLinha = fichIn. nom = umaCadeia.pr). String umaLinha="".". BufferedReader fichIn = new BufferedReader(fr).println("Ficheiro "+nf+"nao encontrado!"). nom.getMessage()).

. Este “molde” é a classe e antes de criar um objecto é necessário criar a respectiva classe. de entre os que tem definidos. Classes Numa linguagem OO os programas funcionam através da criação de objectos. Classes e Objectos. cada um deles com atributos próprios. A partir desta classe podem ser criados vários objectos. dos comportamentos que estes são capazes de apresentar e da comunicação entre eles. Array de Objectos Em programação orientada aos objectos (POO) existem conjunto de princípios que são o fundamento : Ø  encapsulamento.Revisão: POO. Ø  herança Ø  polimorfismo. Os objectos não podem ser criados sem um “molde” que defina os seus atributos e comportamentos. sendo permitido a um objecto solicitar a outro um determinado comportamento. mas com os mesmos comportamentos.

Na declaração de uma classe: Ø qualificador public significa que uma classe é pública e poderá ser utilizada por outras classes para instanciar (criar) objectos. ou seja. os qualificadores abstract e final são mutuamente exclusivos e jamais poderão ser utilizados em conjunto. Os atributos. Além de serem opcionais. . nenhum objecto poderá ser criado directamente a partir dela. não podem ser criadas outras classes a partir dela.Sintaxe de definição de classe: [public] [abstract | final] class nomeDaClasse { //declarações //construtores //métodos } Os termos public. As classes abstractas geralmente são criadas com a finalidade de representar características comuns de duas ou mais classes especializadas. Ø qualificador abstract indica que ela não poderá instanciar nenhum objecto. abstract e final são opcionais. Ø qualificador final indica que a classe não pode ser estendida. ou seja. os construtores e os métodos de uma classe são chamados membros da classe.

comp = c. desenhaRect(k). posY = pY. posY.awt. posY.*. comp. int newpX. } . //Construtor da classe.clearRect(posX. larg. import java. posY. int c. posX = newpX. do canto sup. int newpY) { apagaRect(k). comp+1. } //Muda a localizaçao do rectangulo.drawRect(posX. posY = newpY. public class Rectangulo { //Atributos private int posX.esquerdo public void mudaPosicao(Graphics k. fica dentro public void apagaRect(Graphics g) { g. usa comp+1 e larg+1 para garantir que o rect. } //Desenha rectangulo de acordo com os seus atributos public void desenhaRect(Graphics g) { g. larg). int pY. int l) { posX = pX.recebe as novas coord. larg = l. promove a inicialização dos atributos public Rectangulo(int pX. larg+1). } //Apaga o rectangulo.Exemplo de uma classe que descreva características de um rectângulo utilizando POO. comp.

30+2*i. i++ ) //while(true) { try { Thread. import java.sleep(800).*.mudaTamanho(g. int newL) { apagaRect(f). } } O applet que utiliza a classe Rectangulo: import java. int newC. desenhaRect(f). 50+2*i).awt.public void mudaTamanho(Graphics f.20.Applet. 120+3*i).class WIDTH=800 HEIGHT=600></APPLET> .mudaPosicao(g. i < 30. for ( byte i = 0.applet. rect. comp = newC. } } } Ficheiro HTML: <Title> Exemplo </Title> <APPLET CODE = AppletExec. 150+2*i.150. } catch (Exception z) {} rect.120). larg = newL. public class AppletExec extends Applet { public void paint (Graphics g) { Rectangulo rect = new Rectangulo(20.

} . bem assim como um array de objectos Associado[] lista com dados dos 200 associados. import java. pretende-se que elabore uma classe que permita devolver o valor médio de mensalidades somente dos associados do tipo ‘A’. Objectos que devem ser armazenados num array devem ser instanciados separadamente.i<200.Revisão: Array de objectos Característica importante de array de objectos: criação de array e criação de objectos. que serão armazenados no array. total += lista[i]. gravar no ficheiro “Lista. são duas coisas separadas. public class Tarefas2 { public Tarefas2() {} public float mediaMens(Associado[] lista) { float total=0.getMensal(). } return Math. int contA=0. Exemplo: Tomando em consideração que a classe Associado já foi criada.*. Instanciação de um array de objectos reserva o espaço para armazenamento somente das referencias. ler info do ficheiro criado e visualizar no ecrã.getTipoAssoc()=='A') { contA++.io. for (int i=0.txt” informação completa sobre um associado cujo código é passado via parâmetro. i++) if(lista[i].round(total/contA).

println(m). b. String nome) { try { FileWriter f = new FileWriter(nome).public void gravar(Associado[] x.int cod. else System.out.println("Ficheiro nao encontrado!).close(). BufferedReader bb = new BufferedReader(ff).close().println(“Codigo nao encontrado!”). } } catch (FileNotFoundException k) { System. } catch (IOException m) { System. } bb. BufferedWriter b = new BufferedWriter(f).out.out. i++) if(x[i]. umaLinha = bb. for (int i=0.write(x[i].out. } } public void lerDoFich(String nomeFich) { String umaLinha.println(m).println(umaLinha). while (umaLinha != null) { System. umaLinha = bb.readLine().toString()).out. try { FileReader ff = new FileReader(nomeFich). }} . } catch (IOException m) { System.readLine().i<200.getCod()== cod) b.

readLine()).out.parseInt(x.println("A soma entre "+val1+" e "+ val2+" é igual a " + soma).println(b). long soma. try { val1 = Integer. public class SomaValores { public static void main(String[] args) { //Declaração de variáveis int val1. //Lê valor de val1 e val2 System. } System.in)).println(b.*. BufferedReader x = new BufferedReader(new InputStreamReader(System.print("Introduza o 2-o valor : ").readLine()).out. import java.Leitura do teclado sem uso da classe Le Exemplo de cálculo de soma de dois números recebidos do teclado.out. val2 = Integer. soma = val1 + val2.getMessage())} catch (IOException b) {System.io. } catch (NumberFormatException b {System. System.out.print("Introduza o 1-o valor: ").out. val2. }} .parseInt(x.

Bookman.Referência bibliográfica: António José Mendes. Deitel. 2003. Schaum’s Outline series. H. “Fundamentos de programação em Java 2”. Ursula Wolz. “Java Software Solutions: foundation of program design”. Mário Martins. Maria José Marcelino. FCA. “Theory and problems of programming with Java”. F. Hubbard. Rui Rossi dos Santos. Addision-Wesley John R. 1999. William Loftus. “Java. 2nd edition. Elliot Koffman. 2002. como programar”. FCA. “Programação Orientada aos objectos em Java 2”. 4 edição. “Programando em Java 2– Teoria e aplicações”. McGraw-Hill. Deitel. 2000. “Problem Solving with Java”. 2004 . P. Axcel Books. John Lewis.