1 / 18

Aula 13

Aula 13. Classes e Objectos. Introdução. Java é uma linguagem de programação orientada a objectos (POO) , mas aceita os outros paradigmas de programação de um nível de desenvolvimento inferior, tais como programação estruturada e programação imperativa.

paige
Download Presentation

Aula 13

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Aula 13 Classes e Objectos

  2. Introdução Java é uma linguagem de programação orientada a objectos (POO), mas aceita os outros paradigmas de programação de um nível de desenvolvimento inferior, tais comoprogramação estruturada e programação imperativa Encapsula dados (atributos) e subprogramas (métodos) em componentes (classes) Organiza código em subprogramas dando especial atenção às estruturas de dados. Também chamada imperativa. Organiza o código em funções (subprogramas) paradigma de programação  estilo de programação Programação em Java 2006-2007

  3. Classe: AlunoJavaatributos nº mecanográfico nome nota aval.periódica nota do exame final nº de faltas às TP nº de faltas às P métodoscalcular a nota final reprovou por faltas? pode ir a exame final? Objecto: aluno1atributos nº mec.: 23478nome: João Piresnota aval.periódica: 16nota exame final: 18nº de faltas às TP: 1 nº de faltas às P: 0 métodoscalcular a nota final reprovou por faltas? pode ir a exame final? Objecto: aluno2atributos nº mec.: 25506nome: Luisa Santos nota aval.periódica: 15nota exame final: 13nº de faltas às TP: 0 nº de faltas às P: 0 métodoscalcular a nota final reprovou por faltas? pode ir a exame final? Objectos e Classe objecto = atributos (dados) + métodos (subprogramas)objecto = instância de uma classeclasse = molde (padrão) para criar objectos similares Classe- padrão Objecto- instância Objecto- instância Programação em Java 2006-2007

  4. Objectos Os objectos são entidades criadas a partir de uma classe e possuem um estado (definido pelos seus atributos ) e um comportamento (definido pelos seus métodos) • Os objectos aluno1 e aluno2 foram criados a partir do molde definido pela classe AlunoJava • O número de objectos que pode ser criado a partir de uma classe não é limitado • Convenção de nomes: • os nomes das classes começam com maiúsculas • os nomes dos objectos começam com minúsculas Programação em Java 2006-2007

  5. Passos para criar uma Classe • Definir nome da classe • Definir atributos (variáveis) • Definir construtores • construtor - método utilizado para criar e inicializar os objectos da classe • subprograma com o mesmo nome da classe sem valor de retorno • cada classe deve ter pelo menos um construtor • Definir métodos (subprogramas) • Guardar em ficheiro com nome:NomeClasse.java public classProdutoextends P1App { // atributos da classe Produto int codigo; String designacao; double precoUnit; int quantStock; // construtor para a classe Produto publicProduto (int c, String d, double p, int q) { codigo = c; designacao = d; precoUnit = p; quantStock = q; } public void entradaEmStock (int numUnidades) { quantStock = quantStock + numUnidades; } } Este método modifica o estado do atributo quantStock (note que o tipo de dados de saída é void ) Programação em Java 2006-2007

  6. Criação de Objectos Depois de construir uma classe, é possível escrever um outro programa que utilize objectos criados a partir desta classe • A declaração de um objecto é semelhante à das variáveis de tipo primitivo NomeClasse nomeObjectoExemplo: Produto p1; Nota: Esta declaração por si só não cria o objecto. Apenas reserva na memória um espaço capaz de armazenar um endereço da memoria (referencia) onde este objecto venha a ser armazenado. • A criação de um objecto é feita usando newnomeObjecto = newNomeClasse(parâm.) Exemplo:p1 =new Produto (1, "Computador portátil", 1100.00, 0) Nota:new encarrega-se de chamar o construtor da classe. Entre parêntesis devem ser passados os respectivos parâmetros, se houver public classProdutoextends P1App { // atributos da classe Produto int codigo; String designacao; double precoUnit; int quantStock; // construtor para a classe Produto publicProduto (int c, String d, double p, int q) { codigo = c; designacao = d; precoUnit = p; quantStock = q; } // métodos associados à classe Produto ….. } } Programação em Java 2006-2007

  7. Declaração, Criação e Inicialização Podemos declarar, criar e inicializar um objecto numa única instrução NomeClassenomeObjecto = newNomeClasse(parâmetros_do_construtor) Exemplo: Produto p1 =new Produto (1, "Computador portátil", 1100.00, 0) Ou podemos apenas declarar o objecto para logo cria-lo e inicializá-lo Exemplo: int cod, quant; double preco; String design;//1º. declarar 2º produto Produtop2; // 2º. ler os dados do 2º produto do teclado println("Produto #2"); cod = readInt (" . código do produto: "); design = readLine (" . designação : "); preco = readDouble(" . preço unitário : "); println(); // 3º. Criar objecto com nome p2p2 = new Produto(cod, design, preco, 0); Programação em Java 2006-2007

  8. Acedendo aos atributose invocando métodos Para aceder a um atributo de um objecto: nomeObjecto.nomeAtributo nomeObjecto.nomeMétodo (parâmetros) Para invocar um método: Exemplo: // declarar e criar um objecto da classe Produto Produtop = new Produto(1, "Computador portátil", 1100.00, 0);// mostrar no ecrã o stock inicial (mostra 0) println(“stock inicial: ” + p.stock) // actualizar stockp.entradaEmStock(5) // mostrar no ecrã o stock actualizado (mostra 5) println(“stock actual: “ + p.stock) Programação em Java 2006-2007

  9. Exemplo 1: Gestão de Produtos import p1.*; public class Pr_13_1_GestProdutos extends P1App { public static void main(String [] args) { int cod, quant; double preco; String design; // declarar e criar um objecto da classe Produto Produtop1 = newProduto(1, "Computador portátil", 1100.00, 0); // declarar outro objecto da classe Produto Produtop2; // ler os dados do 2º produto println("Produto #2"); cod = readInt (" . código do produto: "); design = readLine (" . designação : "); preco = readDouble(" . preço unitário : "); println(); // criar e inicializar dados do 2º produto p2 = newProduto (cod, design, preco, 0); // mostrar os valores de cada produto println("Produto #1:"); mostrarAtributos(p1); println("Produto #2:"); mostrarAtributos(p2); // subprograma que imprime os atributos de um produto publicstatic void mostrarAtributos(Produto p) { println(" . código -> " + p.codigo); println(" . designação -> " +p.designacao); print (" . preço unitário -> "); printfd(4,2, p.precoUnit); println(); println(" . quantidade em stock -> " + p.quantStock); println(); } // fecho suprograma } // fecho main } // fecho programa Dois objectos (instâncias) da classe Produto são criados, com nomes p1 e p2 Programação em Java 2006-2007

  10. Problema 1. Supondo que a empresa comercializa apenas dois produtos, alterar o exemplo anterior para que este passe implementar um pequeno sistema de gestão de produtos em stock. O programa deverá ter o seguinte menu de opções: 1. Listar produtos 2. Entrada em stock 3. Saída (venda) 4. Encomenda 0. Terminar Programação em Java 2006-2007

  11. public static void main(String args[]) { // declaração de variáveis do { // repetir enquanto opção<> 0 println(“Menu"); println(" 1 – Listar Produtos"); println(" 2 – Entrada em Stock"); println(" 3 - Saída (venda)”); println(" 4 - Produtos a Encomendar”); println(" 0 - Terminar o programa”); op = readInt(“Seleccione uma opção ", 0, 4); switch (op) { case 1: // listar produtos break;case 2: // entrada em stockbreak; case 3: // venda break; case 4: // Produtos a encomendarbreak;} while (op !=0); } // fecha main Problema 1: Menu de Operações A opção “1. Listar produtos” deve listar todos os dados associados aos dois produtos usando o subprograma mostrarAtributos como mostrado no exemplo anterior Programação em Java 2006-2007

  12. Classe: Produtoatributos codigo designacao precoUnit quantStockmétodosentradaEmStock Problema 1. Opção 2 – Entrada em Stock Variáveis:intcod, quant; Produtop1, p2; Algoritmo: switch (op) { … case 2: // entrada em stockLeiturado código do produto a entrar(cod); SEcodigo válido { Leitura da quantidade do produto a entrar (quant); Entrar quant do produto em stock; Mostrar no ecrã o stock actualizado; }CASO CONTRÁRIO Escrever mensagem “código não válido”; Escrever mensagem “prima <enter> para continuar”;break; } Usar o método entradaEmStock da classe Produto Programação em Java 2006-2007

  13. Classe: Produtoatributos codigo designacao precoUnit quantStockmétodosentradaEmStockvenda Problema 1. Opção 3 – Venda case 3: // saída (venda)Leiturado código do produto a entrar(cod); SE(código válido) { Leitura da quantidade do produto a vender (quant); Venda de produto (quant);SE(foi possível vender) Mostrar no ecrã o valor da venda; Mostrar no ecrã o stock actualizado; CASO CONTRÁRIO Escrever mensagem “stock não suficiente”; } CASO CONTRÁRIO Escrever mensagem “código não válido”; Escrever mensagem “prima <enter> para continuar”; break; acrescentar o método venda à classe Produto. Este método deve receber como parâmetro o nº de unidades vendidas numUnidades SE nº de unidades do produto em stock é suficiente para satisfazer o pedido: 1º. subtrair do stock numUnid 2º. devolver o valor da venda(quantidade x preço unitário); CASO CONTRARIO: devolver um valor negativo Programação em Java 2006-2007

  14. Classe: Produtoatributos codigo designacao precoUnit quantStockpontoEncomendamétodosentradaEmStockvendaverificarPontoEncomenda Problema 1. Opção 4 – Encomenda case 4: // encomendar produtosSE (p1.verificarPontoEncomenda() > 0 ){ Mostrar dados do produto # 1 (modificar o subprograma “mostrarAtributos”): Produto #1 . código -> 1 . designação -> Computador portátil . preço unitário -> 1100,00 . quantidade em stock -> 0 . pontoEncomenda -> 4 Mostrar quantidade mínima a encomendar: quantidade mínima a encomendar: 4 unidades } SE (p2.verificarPontoEncomenda() > 0 ){ Mostrar dados do produto # 2Mostrar quantidade mínima a encomendar: } Escrever mensagem “prima <enter> para continuar”; break; • acrescentar o atributo pontoEncomenda - o nº mínimo de unidades que deverão existir em stock de forma a evitar eventuais rupturas de stock (isto leva a modificar o construtor da classe e o programa principal) • acrescentar o métodoverificarPontoEncomenda • SE (pontoEncomenda – quantStock > 0) devolver este valor que corresponde ao nº mínimo de unidades a encomendar para regularizar o stock; CASO CONTARIO devolver o valor zero Programação em Java 2006-2007

  15. A Classe String: uma classe do pacote java.lang Podemos assim declarar, criar e inicializar um objecto da classe String: Stringnome_do_string = newString(“texto”) Exemplo: Stringstr =new String(“Bom dia turma”); Uma vez instanciado um objecto da classe String podemos invocar todos os seus métodos: nomeObjecto.nomeMétodo (parâmetros) Exemplos: Todas as classes definidas em Java estão bem documentadas no site da Sun (java.sun.com)Toda a documentação sobre todos os métodos da classe String podem ser consultados on-line em: int n = str.length(); char c = str.charAtt(2);String s = str.substring(8) http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html#method_summary Programação em Java 2006-2007

  16. Classes usadas com FicheirosBufferedReader, FileReader, BufferedWriter, FileWriter Todas estas classes pertencem ao pacote java.io Documentação on-line em:http://java.sun.com/j2se/1.4.2/docs/api/java/io/package-summary.html Exemplo: import java.io.*; classEx_12_1_lerFicheiro extends P1App { static void main(String [] args) throws IOException { String s, nomeFx; // atribuir a nomeFx o nome do ficheiro nomeFx = “teste1.txt”; // declarar um objecto da classe BufferedReaderBufferedReader f; // cria e inicializa o objecto com nome f da classe BufferedReader f = newBufferedReader(newFileReader(nomeFx));// lee a primeira linha do ficheiros = f.readLine(); // readLine é um método da classe BufferedReader }} A documentação sobre todas as classes de Java pode ser consultada em: http://java.sun.com/j2se/1.4.2/docs/api/allclasses-noframe.html Programação em Java 2006-2007

  17. A classe Mathé uma das classes do pacote java.lang. Esta inclui um vasto conjunto de métodos que implementam diversas funções matemáticas As classes pertencentes ao pacote java.lang das “JAVA API classes”, tais como Math, System, String, etc., não precisam ser importadas import p1;class Ex_2_5_ClasseMathextends P1App { public static void main(String args[]) { println("abs(-30): " + Math.abs(-30) ); println("acos(0.5): " + Math.acos(0.5) ); println("asin(0.5): " + Math.asin(0.5) ); println("atan(60): " + Math.atan(60) ); println("ceil(5.215): " + Math.ceil(5.215) ); println("ceil(-5.215): " + Math.ceil(-5.215) ); println("cos(60): " + Math.cos(60) ); println("exp(10): " + Math.exp(10) ); println("floor(54.687): " + Math.floor(54.687) ); println("floor(-54.687): " + Math.floor(-54.687) ); println("log(2): " + Math.log(2) ); println("max(5,7): " + Math.max(5,7) ); println("min(-3,2): " + Math.min(-3,2) ); println("pow(2,3): " + Math.pow(2,3) ); println("random(): " + Math.random() ); println("round(13.124): " + Math.round(13.124) ); println("sin(30): " + Math.sin(30) ); println("sqrt(16): " + Math.sqrt(16) ); println("tan(45): " + Math.tan(45) ); println("toDregrees(2): " + Math.toDegrees(2) ); println("toRadians(90): " + Math.toRadians(90) ); } } A classe Math toda a documentação sobre os métodos da classe Math está disponível em: http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Math.html Programação em Java 2006-2007

  18. Bibliografia • António José Mendes, Maria José Marcelino. Fundamentos de programação em JAVA 2.FCA – Editora de informática, 2003. • Tutorial da Sun sobre classes e Objectos em Javahttp://java.sun.com/docs/books/tutorial/java/javaOO/index.html Programação em Java 2006-2007

More Related