Baixe o app para aproveitar ainda mais
Prévia do material em texto
1 1 Programação JAVAProgramação JAVA Professor: Ciro Meneses Santos Bibliografia: ---------------- Santos, Ciro M. Desenvolvimento de Aplicações Comerciais com Java e NetBeans – Editora Ciência Moderna – 2010. DEITEL, H. M., Deitel, P.J., Java Como Programar. 4 Ed. Bookman 2005 HORSTMANN, Cay S., CORNELL., Core Java 2 – Volume I – Fundamentos – Makron Books – 2003. HORSTMANN, Cay S., CORNELL., Core Java 2 – Volume I – Recursos Avançados – Makron Books – 2003.SUN MICROSYSTEMS, Serviços Educacionais SUN – 2002 Curos de Java - http://www.sdsi.uri.br/geoob/ 2 JVMJCF eclipse IBM SUN java IDEJ2EE RTTI J2ME J2SE plug-inJRE AWT swing GUIAPI bytecodes JIT JDBC SQL MySQL javac NetBeans C C++ class atributos method construtor polimorfismo herança sobrecarga Java Beans JAR OLE EJB JSP Servlet JTS JTA oracle JAVA 3 NetBeansNetBeans NetBeansNetBeansNetBeansNetBeans IDEIDEIDEIDE éééé umumumum conjuntoconjuntoconjuntoconjunto dededede bibliotecas,bibliotecas,bibliotecas,bibliotecas, módulosmódulosmódulosmódulos eeee APIsAPIsAPIsAPIs.... formandoformandoformandoformando umumumum ambienteambienteambienteambiente integradointegradointegradointegrado dededede desenvolvimentodesenvolvimentodesenvolvimentodesenvolvimento visualvisualvisualvisual possibilitandopossibilitandopossibilitandopossibilitando aoaoaoao desenvolvedordesenvolvedordesenvolvedordesenvolvedor complilar,complilar,complilar,complilar, debugar,debugar,debugar,debugar, efetuarefetuarefetuarefetuar deployingdeployingdeployingdeploying dededede suassuassuassuas aplicaçõesaplicaçõesaplicaçõesaplicações .... ÉÉÉÉ umumumum produtoprodutoprodutoproduto openopenopenopen source,source,source,source, 100100100100%%%% JavaJavaJavaJava eeee possuipossuipossuipossui váriosváriosváriosvários módulosmódulosmódulosmódulos dededede expansãoexpansãoexpansãoexpansão (modules),(modules),(modules),(modules), quequequeque podempodempodempodem serserserser baixadosbaixadosbaixadosbaixados dodododo própriopróprioprópriopróprio sitesitesitesite http://www.netbeans.org 4 DESENVOLVIMENTO DE APLICAÇÕES COMERCIAIS COM JAVA E NETBEANS A TECNOLOGIA JAVA 5 IntroduçãoIntrodução O Paradoxo da Tecnologia de Informação Fatores Humanos no Desenvolvimento e Uso de Software Usabilidade Utilidade Produtividade Robustez Qual a interface mais utilizada pelo maior número de segmentos de mercado que usam computador no mundo ? 6 Tecnologia JavaTecnologia Java Uma linguagem de programação Um ambiente de desenvolvimento Um ambiente de aplicações Um ambiente de distribuição JVM, J2SDK, J2EE, J2ME Proporcione um ambiente interpretado para: Aumentar a velocidade do desenvolvimento Permitir a portabilidade do código 2 7 Características da Características da Linguagem Linguagem Compilada: Um programa em JAVA é compilado para o chamado “bytecode”, que é próximo as instruções de máquina. O “bytecode” é um código de máquina virtual idealizada pelos criadores da linguagem. Os “bytecodes” são instruções em código de máquina para a JVM máchine. Portável: O “bytecodes” gerado pelo compilador para a sua aplicação especifica pode ser transportado entre plataformas distintas que supertam JAVA. Orientada a Objetos: Java é uma Linguagem puramente orientada à objetos, tudo em Java são classes ou instância de uma classe, abstração, encapsulamento e hereditariedade. Java não suporta herança múltipla que pode ser compensada pelo uso de herança e interfaces. 8 Características da Características da Linguagem Linguagem Segurança: A presença de coleta automática de lixo, evita erros comuns que os programadores cometem quando são obrigados a gerenciar diretamente a memória. Coletor de Lixo. Strongly typed também é uma vantagem em termos de segurança, que está aliada a eliminação de conversões implícitas de tipos Tratamento de exceções torna as aplicações mais robustas, não permitindo que elas abortem, mesmo quando rodando sob condições anormais. Suporte concorrência: A linguagem permite a criação de maneira fácil, de vários “threads” Multithreading de execução, úteis e animações e processamento paralelo real. 9 Fundamentos da POO � A POO se fundamenta em 5 mecanismos: � Abstração capacidade de representação � Identidade coexistência de múltiplas entidades � Encapsulamento ocultação de detalhes � Herança criação de relações hierárquicas � Polimorfismo admissão de múltiplas formas 10 Classes e Objetos Classes � Modelos ou conceitos abstratos para definir famílias de objetos. � Podem ser interligadas estabelecendo hierarquias ou relações. � São tipos de dados definidos pelo programador. Objetos � Representantes de uma classe, são entidades concretas. � Elementos que podem ser distinguidos dos demais objetos de sua classe ou de outras. � Sempre pertencem a uma classe. 11 Estrutura das Classes � Classes determinam características e capacidades que descrevem certos objetos. MétodosMétodos CamposCampos C la ss e � Características são variáveis da classe, que denominamos campos ou variáveis-membro. � Capacidades são funções da classe, que chamamos funções-membro ou métodos. 12 Objetos � São entidades representantes de uma classe. � Possuem uma estrutura de campos individual, tal como especificada pela classe, onde são armazenadas suas características próprias. � Compartilham o código dos métodos declarados pela classe, mas tais métodos atuam sobre os dados individuais de cada objeto. � Acionar métodos é como comandar um objeto através de mensagens. 3 13 Objetos � Objetos são criados dinamicamente (instanciação) através de um operador especial new. � Criação aciona os construtores. � Podemos atribuir um nome para os objetos criados (uma referência). � Grande parte das tarefas de gerenciamento de memória são realizadas pelo JavaJava. � Objetos não referenciados são eliminados pelo “Coletor de Lixo” (Garbage Collector) que efetua a reciclagem de memória. 14 A Java Virtual Machine Specification fornece as especificações da plataforma de hardware para as você compila os códigos da tecnologia Java. Essa especificação permite que o software Java seja independente da plataforma porque a compilação é feita para uma máquina genérica conhecida como JVM machine. Você pode emular essa JMV por software, para que ela seja executada em diversos sistemas de computadores existentes, ou implementado no hardware. A Java Virtual MachineA Java Virtual Machine Fornece especificações da plataforma de hardware Lê bytecodos compilados, que são independentes de plataforma. 15 A Java Virtual MachineA Java Virtual Machine A maior parte da verificação de tipos é feita quando o código compilado O formato de código da JVM machine consiste de bytecodes compactos e eficientes, devem manter uma disciplina de tipos. Qualquer interpretador compatível com a tecnologia Java deve ser capaz de executar qualquer programa que tenha arquivos de classes compatíveis. 16 A operação do JREA operação do JRE Java Runtime EnvironmentJava Runtime Environment TestHelloWorld.java javac TestHelloWorld.classe Carregador de classes Verificador de bytecodes Interpretador Runtime Hardware Compilar RunTime Carga a partir do disco rígido, da rede ou de outra fonte java 17 Roteiro de Programação Editor ASCII Arquivo .java Compilador Java (javac) Arquivo .class JVM - Máquina Virtual Java (java) Carregamento Verificação Interpretação Compilação JIT Execução18 ComentáriosComentários O Java aceita três tipos de comentários: de uma linha, de múltiplas linhas e de documentação // comentário de uma linha /* comentário de múltiplas linhas */ /** comentário de documentação * também pode ter múltiplas linhas *****************************/ 4 19 Declaração de variáveis: As variáveis só podem armazenar valores de um mesmo tipo Tipos de variáveis: númericos, literais, ponto flutuante int, float, double, char, void, declare: nome-do-tipo lista-de-id ; onde: • nome-do-tipo é uma das palavras chave dos tipos de variáreis • lista-de-id são os nomes escolhidos para as variáveis: int max, min, change, _sys_var1; char nome, endereco; Itens Fundamentais Itens Fundamentais 20 Palavras ReservadasPalavras Reservadas abstract do implements private throw boolean double import protected byte break else instanceof public transient extends int return true case false interface short try catch final long static void char finally native super volatile class float new switch while continue for null synchronized default if 21 Operadores AritméticosOperadores Aritméticos Operador Ação + Soma (inteiro e ponto flutuante – IPF) - Subtração ou troca de sinal – IPF * Multiplicação – IPF / Divisão – IPF % Resto de divisão (inteiro) - Sinal Negativo (-unário) ++ Incremento – IPF -- Decremento – IPF 22 Operadores Relacionais e AtribuiçãoOperadores Relacionais e Atribuição Operador Ação > Maior do que >= Maior ou igual a < Menor do que <= Menor ou igual a == Igual a != Diferente de += a+=10 → a = a + 10 *= a*=10 → a = a * 10 -= a-=10 → a = a – 10 /= a/=10 → a = a / 10 %= a%=10 → a = a % 10 23 Trabalhando com JavaTrabalhando com Java Arquivo: Exemplo1.java public class Exemplo1 { } public static void main (String args [] ){ } System.out.println(”Alo Pessoal!"); 24 JJanelas ou anelas ou ccaixa de aixa de diálogosdiálogos As caixas de diálogos são janelas que em geral são utilizadas para exibir mensagens importantes para o usuário de um aplicativo. A class JOptionPane permite que você exiba facilmente uma caixa de diálogo contendo informações chamada diálogo de mensagem. O método showMessageDialog é usado para apresentar um texto e esperar por uma confirmação do usuário. O método showInputDialog é usado para criar uma janela com uma pergunta, que deve ser respondida pelo usuário em um campo de texto. 5 25 JOptionPaneJOptionPane Objeto JOptionPane Import import javax.swing.JOptionPane Propriedade JoptionPane.showInputDialog(“Mensagem”) JoptionPane.showMessageDialog(null,“Msg1”,”Msg2”,Icone) null ( componente pai, utilizado para especificar a posição de criação da janela) Msg1 (Mensagem interna) Msg2 (Mensagem da barra de titulo) Icone (Valor padrão que representam icons de mensagems ) 26 Tipo de diálogo de Tipo de diálogo de mensagemmensagem JOptionPane. ERRO_MESSAGE diálogo que indica um erro para o usuário do aplicativo JOptionPane. INFORMATION_MESSAGE diálogo informacional para o usuário do aplicativo JOptionPane. WARNING_MESSAGE diálogo que adverte o usuário do aplicativo JOptionPane. QUESTION_MESSAGE diálogo que informa uma pergunta para o usuário JOptionPane. PLAIN_MESSAGE diálogo simples com msg sem icone para o usuário do aplicativo 27 Botões de JanelaBotões de Janela DEFAULT_OPTION Botão OK YES_NO_OPTION Botões de Yes e No YES_NO_CANCEL_OPTION Botões Yes, No e Cancel OK_CANCEL_OPTION Botões Ok e Cancel 28 Line NumberLine Number 29 FerramentasFerramentas 30 ÁreaÁrea de de trabalhotrabalho Projeto Área de Desenvolvimento Navegador Saida 6 31 ProjetoProjeto 32 ProjetoProjeto 33 ProjetoProjeto publicpublicpublicpublic staticstaticstaticstatic voidvoidvoidvoid mainmainmainmain (((( String[]String[]String[]String[] argsargsargsargs )))) AAAA palavrapalavrapalavrapalavra publicpublicpublicpublic significasignificasignificasignifica permitirpermitirpermitirpermitir quequequeque oooo métodométodométodométodo sejasejasejaseja acessadoacessadoacessadoacessado porporporpor qualquerqualquerqualquerqualquer outraoutraoutraoutra classeclasseclasseclasse.... AAAA palavrapalavrapalavrapalavra staticstaticstaticstatic éééé utilizada,utilizada,utilizada,utilizada, quandoquandoquandoquando oooo métodométodométodométodo sósósósó existeexisteexisteexiste emememem umaumaumauma classe,classe,classe,classe, aoaoaoao invésinvésinvésinvés umumumum paraparaparapara cadacadacadacada objetoobjetoobjetoobjeto.... AAAA palavrapalavrapalavrapalavra voidvoidvoidvoid éééé utilizadautilizadautilizadautilizada quandoquandoquandoquando oooo métodométodométodométodo nãonãonãonão retornaretornaretornaretorna nenhumnenhumnenhumnenhum valorvalorvalorvalor.... OOOO métodométodométodométodo mainmainmainmain.... RepresentaRepresentaRepresentaRepresenta oooo métodométodométodométodo principal,principal,principal,principal, oooo primeiroprimeiroprimeiroprimeiro aaaa serserserser executadoexecutadoexecutadoexecutado pelapelapelapela máquinamáquinamáquinamáquina virtualvirtualvirtualvirtual;;;; aaaa partirpartirpartirpartir destedestedestedeste métodométodométodométodo éééé quequequeque umaumaumauma aplicaçãoaplicaçãoaplicaçãoaplicação éééé executadaexecutadaexecutadaexecutada.... 34 Aplicação JavaAplicação Java 01 // Test intro1 Aplicação 02 public class intro1 { 03 public static void main(String[] args){ 04 System.out.println("Hello Java 2006!"); 05 int a = 10; 06 int b = 20; 07 a*=3; 08 int c = a+b; 09 System.out.println("A="+a+"B="+b+"C="+c); 10 } 11} intro1.java 35 Aplicação JavaAplicação Java public static void main (String[] args ) A função main é o lugar onde o programa começa a execução public – O método main() pode ser acessado por qualquer coisa, inclusive pelo interpretador da tecnologia Java. static – Esta palavra chave diz ao compilador que o método main() pode ser usado no contexto da classe. Nenhuma instância da classe é necessária para executar métodos estáticos. void – Esta palavra chave indica que o método main() não retorna nenhum valor. A palavra chave static declara que o atributo ou método está associado a uma classe como um todo, e não como uma instância 36 Operadores LógicosOperadores Lógicos Operador Ação && AND (E) || OR (OU) ! NOT (NÂO) A B A && B A || B 0 0 0 0 0 1 0 1 1 0 0 1 1 1 1 1 7 37 CONTROLES DE FLUXOCONTROLES DE FLUXO inicialização; while (condição) { sequencia de instruções ; inc/dec; } for(inicialização; condição; inc/dec) { sequencia de instruções ; } res = (condicao)? s1 : s2 ; if ( condição ) { sequencias de instruções ; }else{ sequncias de instruções; } int a,x; switch (x) { case 1 : a=1; break; case 2 : a=2; break; case 3 : a=3; break; default : a=10; } int vet1[] = {10,20,30,40,50}; int vet2[] = new int[5]; for (int i=0; i < 5; i++) { vet2[i] = vet1[i]; System.out.println(vet2[i]); } 38 Estrutura CondicionalEstrutura Condicional Estrutura condicional simples if ( condição ) { sequencias de instruções ; } sequencias de instruções fimse verdadeiro falso condição é composto de: id operador-relacional id >, <, >=, <=, ==, != if a condição b 39 Estrutura Condicional Estrutura Condicional composto sequencia de instruções fimse F if a condição b sequencia de instruções V if ( condição ) { sequencias de instruções ; }else{ sequncias de instruções; } res = (condicao)? s1 : s2 ;Ternário: 40 Aplicação JavaAplicação Java 01 // Test intro2 Aplicação 02 public class intro2 { 03 public static void main(String[] args){ 04 int a = 10; 05 int b = 20; 06 if (a > b ) 07 System.out.println("A maior que B"); 08 else 09 System.out.println("B maior que A"); 10 } 11} intro2.java 41 Aplicação JavaAplicação Java 01 // Test intro3 Aplicação 02 public class intro3 { 03 public static void main(String[] args){ 04 int a = 10; 05 int b = 20; 06 m = (a > b )? a : b; 07 System.out.println("Maior valor = "+m); 08 } 10 } intro3.java 42 Estrutura CondicionalEstrutura Condicional switch (exp_ordinal) { case ord : instrução; break; case ord : instrução; break; case ord : instrução; break; default : instrução; } int a,x; switch (x) { case 1 : a=1; break; case 2 : a=2; break; case 3 : a=3; break; default : a=10; } 8 43 Aplicação JavaAplicação Java public class intro4 { public static void main(String[] args){ int a = 4; switch(a){ case 1: System.out.println("Domingo"); break; case 2: System.out.println("Segunda"); break; case 3: System.out.println("Terca"); break; case 4: System.out.println("Quarta"); break; case 5: System.out.println("Quinta"); break; case 6: System.out.println("Sexta"); break; case 7: System.out.println("Sabado"); break; default: System.out.println("NDA"); } System.out.println("Valor = "+a); } } intro4.java 44 Estrutura de RepetiçãoEstrutura de Repetição sequencia de instruções fimse V inicialização F if a condição b inc/dec 45 Estrutura de RepetiçãoEstrutura de Repetição inicialização; while (condição) { sequencia de instruções ; inc/dec; } for(inicialização; condição; inc/dec) { sequencia de instruções ; } inicialização; do{ sequencia de instruções ; inc/dec; }while (condição); 46 Aplicação JavaAplicação Java public class intro5 { public static void main(String[] args){ for(int i=0; i < 10; i++) System.out.println(i); for(int j=10; j > 5; j--) System.out.println(j); for(int k=0; ; k++){ if(k > 5 ) break; System.out.println(k); } for(int a=0, b=5; b < 8; a++, b++) System.out.println("A = "+a+" B = "+b); } } intro5.java 47 Aplicação JavaAplicação Java public class intro6 { public static void main(String[] args){ int i = 0; while (i < 10){ System.out.println(i); i++; } int j = 10; while (j > 5) { System.out.println(j); j--; } int k=0; while (true ){ if(k > 5 ) break; System.out.println(k); k++; } } } intro6.java 48 Aplicação JavaAplicação Java public class intro7 { public static void main(String[] args){ do{ System.out.println(i); i++; }while (i < 10); int j = 10; do { System.out.println(j); j--; }while (j > 5); int k=0; do{ if(k > 5 ) break; System.out.println(k); k++; }while (true ); } } intro7.java 9 49 Aplicação JavaAplicação Java class Laco { Laco(){ int i = 1; do{ int m = i % 2; i++; if (m == 0) { continue; } if (i == 10){ break; } System.out.println(i-1); }while(i<20); } } public class testLaco { public static void main(String[] args){ Laco l = new Laco(); } } testLaco.java 50 Aplicação JavaAplicação Java public class intro8 { public static void main(String[] args){ String v1 = "10"; String v2 = "5"; System.out.println("Valor sem conversao de tipos"); System.out.println(v1+v2); int x = Integer.parseInt(v1); int y = Integer.parseInt(v2); System.out.println("Valor com conversao de tipos"); System.out.println(x+y); } } intro8.java 51 Aplicação JavaAplicação Java public class exWhile { public static void main(String[] args){ int j = 10; while ( j > Integer.parseInt(args[0])){ System.out.println(""+j); j--; } } } exSwitch.java 52 Aplicação JavaAplicação Java A palavra chave static é utilizada como modificador de variáveis, métodos e classes. String[] args – Esse método declara um único parâmetro para o método main, args, e tem o tipo de um array String. Quando esse método é chamado, o parâmetro args contêm os argumentos digitado após o nome da classe. Greeting hello = new Greeting(); Esta linha de instrução mostra como criar um objeto, referenciado pela variável hello. hello.greet(); Esta linha demonstra uma chamada de método do objeto. 53 JJanelas ou anelas ou ccaixa de aixa de diálogosdiálogos As caixas de diálogos são janelas que em geral são utilizadas para exibir mensagens importantes para o usuário de um aplicativo. A class JOptionPane permite que você exiba facilmente uma caixa de diálogo contendo informações chamada diálogo de mensagem. O método showMessageDialog é usado para apresentar um texto e esperar por uma confirmação do usuário. O método showInputDialog é usado para criar uma janela com uma pergunta, que deve ser respondida pelo usuário em um campo de texto. 54 JOptionPaneJOptionPane Objeto JOptionPane Import import javax.swing.JOptionPane Propriedade JoptionPane.showInputDialog(“Mensagem”) JoptionPane.showMessageDialog(null,“Msg1”,”Msg2”,Icone) null ( componente pai, utilizado para especificar a posição de criação da janela) Msg1 (Mensagem interna) Msg2 (Mensagem da barra de titulo) Icone (Valor padrão que representam icons de mensagems ) 10 55 Tipo de diálogo de Tipo de diálogo de mensagemmensagem JOptionPane. ERRO_MESSAGE diálogo que indica um erro para o usuário do aplicativo JOptionPane. INFORMATION_MESSAGE diálogo informacional para o usuário do aplicativo JOptionPane. WARNING_MESSAGE diálogo que adverte o usuário do aplicativo JOptionPane. QUESTION_MESSAGE diálogo que informa uma pergunta para o usuário JOptionPane. PLAIN_MESSAGE diálogo simples com msg sem icone para o usuário do aplicativo 56 BotõesBotões de de JanelaJanela DEFAULT_OPTION Botão OK YES_NO_OPTION Botões de Yes e No YES_NO_CANCEL_OPTION Botões Yes, No e Cancel OK_CANCEL_OPTION Botões Ok e Cancel 57 AplicaçãoAplicação JavaJava 01 // Classe Eco 02 public class Eco { 03 public static void main (String[] args ) { 04 for (int i=0; i < args.length; i++) 05 System.out.print(args[i] + “ ”); 06 System.out.println(); 07 } 08 } Eco.java 58 DeclaraçãoDeclaração de Arrayde Array Os arrays são usados para agrupas objetos do mesmo tipo. Os arrays permitem que você se refira ao grupo de objetos usando um nome comum. Na linguagem de programação Java, um array é um objeto, e tal como acontece com outros tipos de classe, a declaração não cria o objeto propriamente dito. Em vez disso, a declaração de um array cria uma referência que vovê pode usar para se referir a um array. A memória real usada pelos elementos do array é alocada dinamicamente por uma declaração new ou pelo inicializador de um array. Ao declarar arrays com os colchetes à esquerda, os mesmos se aplicam a todas as variáveis que estão à direita dos colchetes. 59 DeclaraçãoDeclaração de Arrayde Array Agrupa objetos de dados de um mesmo tipo. Declara arrays de tipos primitivo ou de classe: char ch[]; Point p[] char[] ch; Point[] p; String names[]; names = new String[3]; names[0] = “Ciro”; names[1] = “Matheus”; names[2] = “Bruno”; String names[] = {“Ciro”,“Matheus”,“Bruno”}; “String”.charAt(1); “String".length(); vetor.length length X length() 60 // *** testArray.java class Array { private char[] ch1, ch2, ch3; public void loadArray() { ch1 = new char[10]; for(int i=0; i<10;i++){ch1[i]= (char) ('A'+i); } } public char[] copyArray(){ ch2 = new char[10]; for(int i=0; i<10;i++){ ch2[i]= ch1[i]; } return ch2; } Aplicação JavaAplicação Java 11 61 public void showArray(){ ch3 = new char[10]; ch3 = this.copyArray(); for(int i=0; i<10;i++){ System.out.println("Valor i = "+ch3[i]); } } } // fim da class Array public class testArray { public static void main(String[] args){ Array arr = new Array(); arr.loadArray(); arr.showArray(); } } Aplicação JavaAplicação Java 62 Java Orientação à ObjetosJava Orientação à Objetos A programação OO separa estritamente a noção entre o que deve ser feito e como deve ser feito. O que, é descrito como um conjunto de métodos (é as vezes dados disponíveis publicamente) e suas semânticas associadas. Essa combinação – métodos, dados e semântica – Conhecido com um contrato entre o projetista da classe e o programador que a utiliza. O como, de um objeto é definido por sua classes, a qual de define a implementação dos métodos que o objeto admite. Cada objeto é uma istância de uma classe. Características da POO: Abstração , Polimorfismo, Herança, Encapsulamento. 63 Java Orientação à ObjetosJava Orientação à Objetos Abstração, é o mecanismo de programação que oculta os detalhes privados da implementação que estão por detrais das interfaces públicas. Polimorfismo, se refere a capacidade de reconhecer num objeto particular um outro mais geral. Sobcarga, A forma mais simples de polimorfismo oferecido pela linguagem Java é a sobrecarga de métodos como o mesmo nome com assinatura diferente. Herança, é um mecanismo de criarmos novos objetos a partir de outros que já existem, tomando como prontas e disponíveis as características do objeto origem. Isto cria a possibilidade de criarmos várias classes, hierarquicamente relacionadas. Encapsulamento, indica que podemos utilizar um objeto conhecendo apenas sua interface. 64 ClasseClasse Uma classe é um tipo de objeto que pode ser definido pelo programador para descrever uma entidade real ou abstrata. Podemos entender uma classe como um modelo ou especificação para certos objetos. Uma classe contém dois tipos de membros, chamados campos e métodos. Campos (atributos) são dados que pertencem à classe propriamente dita ou aos objetos da classe; eles compõem o estado de um objeto ou classe. Métodos são conjuntos de instruções que operam os campos para manipular o estado. Instanciação, A criação de um objeto. Instanciar significa criar uma instância da classe. Classe é o modelo abstrato de um objeto, uma instância representa um objeto concreto desta classe. 65 ConstrutoresConstrutores Os construtores são métodos especiais chamado pelo sistema no momento da criação de um objeto, assim sendo o operador new apenas indica que o método especial construtor de uma certa classe será utilizado Um construtor é um conjunto de instruções criadas para inicializar uma instância. Podem ser passados parâmetros para o construtor, da mesma maneira que se faz para um método. Através dos construtores podemos criar objetos concretos, isto é, estruturas de dados e operações que representam um objeto do mundo real, a partir de uma classe (um modelo abstrato de objetos de um certo conjunto). Os construtores não são Herdados (Herança) Os construtores não tem tipo de retorno. 66 ProjetoProjeto POO - CLASSE • ModificadoresModificadoresModificadoresModificadores private,private,private,private, public,public,public,public, protectedprotectedprotectedprotected.... • AtributosAtributosAtributosAtributos • MétodosMétodosMétodosMétodos • ConstrutoresConstrutoresConstrutoresConstrutores • HerançaHerançaHerançaHerança 12 DiálogoDiálogo 68 DiálogoDiálogo public class Analise extends Math { public float arranjo(int n, int r){ int vn, vnr; vn = fat(n); vnr = fat(n-r); return(vn/vnr); } } public class Math { public int fat(int n){ if (n ==1){ return 1; }else{ return (n * fat(n - 1)); } } } public static void main(String[] args) { int x = Integer.parseInt(JOptionPane.showInputDialog("Enter")); int y = Integer.parseInt(JOptionPane.showInputDialog("Enter")); Analise ana = new Analise(); float ar = ana.arranjo(x, y); System.out.println(ar); 69 ProjetoProjeto 70 ProjetoProjeto 71 ProjetoProjeto 72 ExemploExemplo public class Semaforo { // Semaforo.java } // campos int sDESL=0, sSOB=1, sLIG=1, sDES=1; private int status; // construtor public Semaforo ( ) { status = sDESL; } // métodos public void ligar ( ) { status = sLIG; } public void desligar ( ) { status = sDESL; } public void aumenta ( ) { status += sSOB; } public void abaixa ( ) { status -= sDES; } public int obtemStatus ( ) { return status; } Semaforo pt = new Semaforo(); pt.ligar(); pt.aumenta(); int x = pt.obtemStatus(); System.out.println(x); 13 73 Aplicação JavaAplicação Java 01 // Greeting class declaration 02 public class Greeting { 03 public void greet() { 04 System.out.println("Hi Greeting ..."); 05 } 06 } 01 // Test Greeting Aplication 02 public class TestGreeting { 03 public static void main (String[] args ) { 04 Greeting hello = new Greeting(); 05 hello.greet(); 06 } 07 } Greeting.java TestGreeting.java 74 ConstrutoresConstrutores Quando usamos a palavra newnew, estamos construindo um objeto. Quando o comando newnew é chamado, executa o construtor da classe. O construtor da classe é um bloco declarado com o mesmo nome que a classe. Quando não e declarado nenhum construtor na sua classe, o Java cria um para você. Esse construtor é chamando de construtor default. Ele não recebe nunhum argumento, e o corpo é vazio. A partir do momento que você declara um construtor, o construtor default não é mais fornecido. 75 // * Arquivo Classe1.java public class Classe1 { public Classe1() { } } Aplicação JavaAplicação Java // * Arquivo Classe2.java public class Classe2 { public Classe2() { System.out.println(“Ola Mundo”); } } Ctrl Ctrl EspaçoEspaço 76 // * Arquivo Dog.java public class Dog { private int weight; //------------------// public Dog() { weight = 1; } public int getWeight(){ return weight; } public void setWeight(int newWeight){ weight = newWeight; } } Aplicação JavaAplicação Java Dog.java UML/Dog -weight :int +Dog() +getWeight():int +setWeight(int):void 77 // Arquivo testDog.java public class testDog { public static void main(String[] args){ Dog d = new Dog(); System.out.println("Dog Weight ="+d.getWeight()); d.setWeight(52); System.out.println("Dog Weight ="+d.getWeight()); } } Aplicação JavaAplicação Java testDog.java 78 // * Livro.java public class Livro{ private String titulo = “Desenvolvimento Java”; private int pag = 208; private float preco = 49.50; public Livro (){ } public void mostrarDados(){ System.out.println(“Titulo = ”+titulo+”\nPagina = ”+pag+”\nPreco = ”+preco); } } // * Main.java public class Main{ public static void main(String [] arg){ Livro li = Livro(); li.mostrarDados(); } } Aplicação JavaAplicação Java UML/Livro -titulo : String -pag : int -preco : float +Livro() +mostrarDados():void 14 79 // * Livro1.java public class Livro1{ private String titulo; private int pag; private float preco; public Livro1 (){ titulo = “Desenvolvimento Java”; pag = 208; preco = 49.50; } public void mostrarDados(){ System.out.println(“Titulo = ”+titulo+”\nPagina = ”+pag+”\nPreco = ”+preco); } } // * Main.java public class Main{ public static void main(String [] arg){ Livro1 li = Livro1(); li.mostrarDados(); } } Aplicação JavaAplicação Java UML/Livro1-titulo : String -pag : int -preco : float +Livro1() +mostrarDados():void 80 // * Livro2.java public class Livro2{ private String titulo; private int pag; private float preco; public Livro2 (String ti, int pa, float pr){ titulo = ti; pag = pa; preco = pr; } public void mostrarDados(){ System.out.println(“Titulo = ”+titulo+”\nPagina = ”+pag+”\nPreco = ”+preco); } } // * Main.java public class Main{ public static void main(String [] arg){ Livro2 li = Livro2(“Desemvolvimento”,208,49.50); li.mostrarDados(); } } Aplicação JavaAplicação Java UML/Livro2 -titulo : String -pag : int -preco : float +Livro2(String, int, float) +mostrarDados():void 81 PolimorfismoPolimorfismo A palavra polimorfismo vem do grego poli morfos e significa muitas formas. Na orientação à objetos representa uma característica onde se admite tratamento idêntico para formas diferentes baseado em relações de semelhança. A forma mais simples de polimorfismo oferecido pela linguagem Java é a sobrecarga de métodos como o mesmo nome com assinatura diferente. A assinatura de um método é uma lista que indica os tipos de dados e seus argumentos, sendo assim métodos com mesmo nome são considerados diferentes se recebem um diferente número ou tipo de argumentos (assinatura diferentes. Sobrecarga de Construtores, ou seja, uma classe possui mais de um construtor, onde cada um é diferenciado por sua assinatura. Através dos mecanismos de encapsulamento, novos métodos e atributos podem ser adicionados sem alteração das interfaces de programação e de usuário existentes de uma certa classe, constituindo um poderoso mecanismo de extensão de classes. 82 // * Sobrecarga.java public class Sobrecarga { public long twice(int x) { return 2 * (long) x; } public long twice(long x) { return 2 * x; } public long twice(String x) { return 2 *(long)Integer.parseInt(x); } public long somatorio (int max){ int t=0; for (int i=1; i<=max; i++) t+=i; return t; } public long somatorio (int max, int incr){ int t=0; for (int i=1; i<=x; i+= incr) t+=i; return t; } } SOBRECARGA SOBRECARGA –– metmetóódosdos UML/Sobrecarga +twice(int) : long +twice(long) : long + twice(String) : long +somatorio(int): long +somatorio(int, int):long 83 // * Sobrecarga1.java public class Sobrecarga1 { private int x; public Sobrecarga1() { x = 0; } public Sobrecarga1(int a) { x = a; } public Sobrecarga1(int a, int b){ x = a + b; } } SOBRECARGA SOBRECARGA -- construtoresconstrutores UML/Sobrecarga1 -x : int +Sobrecarga1() +Sobrecarga1(int) +Sobrecarga1(int, int) 84 HerançaHerança A herança é o mais importante mecanismo do polimorfismo, é uma técnica onde uma classe passa a utilizar atributos e operações definidas em uma outra classe especificada como seu ancestral. A herança é o compartilhamento de atributos e operações entre classes baseado num relacionamento hierárquico do tipo, um contém definições (bases) que podem ser utilizadas nas novas classes (derivadas) � : pai – filho. Todos atributos e operações disponíveis na classe base são aplicáveis para as classes derivadas. Uma classe derivada pode modificar a implementação de alguma operação da classe base ou adicionar novas métodos ou atributos. 15 85 HerançaHerança A herança permite que novas classes sejam criadas e adicionadas a uma hierarquia sem a necessidade de qualquer modificação do código existente das classes e das aplicações que utilizam estas classes pois cada classes define estritamente seus próprios métodos e atributos. As novas classes adicionadas a hierarquia podem estender, especializar ou mesmo restringir o comportamento das classes originais. Uma subclasse não herda o construtor da superclasse. A herança é um mecanismo de especialização. 86 HerançaHerança O acesso à atributos e operações declarados em uma classe base por parte das suas classes derivadas não é irrestrito. Tal acessibilidade depende dos nível de acesso permitido através dos especificadores private, protected package e public. Ao especificamos acesso privado indicamos que o atributo ou operação da classe é de uso interno e exclusivo da implementação da própria classe não podendo ser utilizado externamente as classes que os declaram. Acessos protected e public, servem para defenir membros destinados a interface de programação e de usuário. 87 HerançaHerança Os membros public podem, sem restrição ser utilizados por instâncias da classe, por subclasses e por instâncias das subclasses. Membros protected podem ser utilizados apenas na implementação de subclasses, não sendo acessíveis por instâncias da classe ou por instâncias das subclasses. Os membros que não recebem as especificações private, protected ou public são considerados como do package, isto é, são como membros públicos para classes do mesmo pacote mas comportam-se como membros privados para classes de outros pacotes. Esta modalidade de acesso visa facilitar a construção de conjuntos de classes correlacionadas através de pacotes. O acesso package é considerado default pelo Java. 88 // * A.java public class A { private int a = 10; public A() { } public void show_A(){ System.out.println("Mostra metodo A = "+a); } } Aplicação JavaAplicação Java // * B.java public class B extends A{ private int b = 20; public B() { } public void show_B(){ show_A(); //método na Classe A (herança) System.out.println("Mostra metodo B = "+b); } } UML/ A -a : int +show_A() : void UML/ B -b : int +show_B() : void 89 // * C.java public class C extends B{ private int c = 30; public C() { } public void show_C(){ show_A(); // método na Classe A (herança) show_B(); // método na Classe B (herança) System.out.println("Mostrar metodo C = "+c); } } Aplicação JavaAplicação Java // * Main.java public class Main{ public static void main(String[] args) { C mc = new C(); mc.show_C(); } } UML/ C -c : int +show_C() : void 90 // * Empregado.java public class Empregado { private String name; private double salary; private int idade; public Empregado() { } public void setEmpregado(String n, double s, int i){ this.name = n; this.salary = s; this.idade = i; } public String getInfo(){ return "Nome: "+name+"\nSalario: "+salary+"\nIdade: "+idade; } } Aplicação JavaAplicação Java UML/ Empregado -nome : String -salary : double -idade : int + Empregado() + setEmpregado(String, double, int”) : void + getInfo():String 16 91 // * Departamento.java public class Departamento extends Empregado { private String dpto; public Departamento() { } public void setDepartamento(String d){ this.dpto = d; setEmpregado("Ronaldo",305.50,34); } public String getInfo(){ String s = this.dpto+"\n"+super.getInfo(); return (s); } } Aplicação JavaAplicação Java UML/ Departamento -dpto : String +Departamento() +setDepartamento(String) : void +getInfo() : String 92 // * Main.java public class Main{ public static void main(String[] args) { Departamento de = new Departamento(); de.setDepartamento("Financeiro"); String ss = de.getInfo(); System.out.println(ss); } } Aplicação JavaAplicação Java
Compartilhar