Introdução á Programação em Java

Slides:



Advertisements
Apresentações semelhantes
Programação orientada a objetos
Advertisements

Programação em Java Prof. Maurício Braga
ABSTRAÇÃO processo de representar um grupo de entidades através de seus atributos comuns feita a abstração, cada entidade particular (instância) do grupo.
Paulo Marques Hernâni Pedroso
Prof. Thiago Pereira Rique
Histórico do Java 1990 James Gosling (Sun Microsystems)
PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena
Orientação a Objetos: Encapsulamento e Classificação
De 17 1 Linguagens de Programação Orientadas a Objetos Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa Marco Fagundes Aula.
Generalização, Especialização e Conceitos
Iniciação ao Java – Márcio F. Campos
Programação Básica em Java
Anatomia de uma classe Nome:
Expressões, controle de fluxo, wrappers e strings Profa
Programação Concorrente
Alexandre Parra Site: Linguagem Java Alexandre Parra Site:
Classes e objetos Arrays e Sobrecarga
Herança e Polimorfismo
Classes e objetos P. O. O. Prof. Grace.
Introdução a Programação Orientada a Objetos
Introdução a Programação JAVA
Paradigmas de Linguagens de Programação Paradima da Programação Orientada à Objetos Professor: Armando Hage Belém-2008.
Linguagem técnica de programação I Java – REVISÃO
INTRODUÇÃ A COMPUTAÇÃO ENG. CIVIL
JAVA: Conceitos Iniciais
Concorrência em Java Threads em Java.
Unidade I: “Dê um mergulho rápido”
Programação Orientada a Objetos com Java
JAVA Linguagem Ambiente de Desenvolvimento
1 A Tecnologia Java. 2 Introdução à linguagem Origens do JAVA Projecto Green, programação para a electrónica de Consumo (Dezembro 1990): Pouca memória.
Atributos, Encapsulamento e Interface em Java
Programação I Aula 2 (Métodos)
Linguagem de Programação JAVA
Tipos de Dados Paradigmas de Programação
Tipos Abstratos de Dados
Classes, Objetos, Atributos e Métodos JAVA
Introdução à Linguagem Java
Cristiano Soares Rafael di Lego Roberto Nemirovsky Thiago Nascimento
Programação em C++ Compiladores
Linguagem de Programação JAVA
Mini Curso Java como Programar
Java Bytecode Software Básico Mitsuo Takaki.
PHP Orientado a Objetos Análise e Desenvolvimento de Sistemas Prof
Orientação a Objetos Parte I
Programação Orientada à Objetos
Wagner Santos C. de Jesus
Tipos de Dados Operadores
Programação Orientada a Objetos - Java
Programação I Aula 3 (Entrada de Dados) Prof. Gilberto Irajá Müller Última atualização 11/3/2009.
Programação Orientada à Objetos
UTFPR – Campus Curitiba - DAELN Cursos de Eng. Eletrônica/Eng
Prof. Gilberto Irajá Müller
Aula Prática 4 Monitoria IP/CC (~if669).
MINI CURSO J2ME Vinícius Maran SEMINÁRIO REGIONAL DE INFORMÁTICA 2008.
1 Marcio de Carvalho Victorino JAVA. 2 Declaração de Atributos [ ] [transient] [volatile] [static] [final] ; controle de acesso –public, package (default),
Classes Abstratas e Interface
Java Básico Instrutor: Davi Pires
Certificação Marco Antonio. Introdução A compreensão desse capítulo é muito importante pois trata de um assunto essencial em qualquer linguagem de programação,
Introdução JAVA Faculdade Mauricio de Nassau
Conceitos Básicos e Manipulação de Objetos
Bruno Inojosa MCP .NET Framework
Introdução a Programação Orientada a Objetos
Java Disciplina: Programação II Professora: Mai-Ly Vanessa.
Programação em Java Prof. Edvan Chaves.
Classes abstratas São classes das quais não se pode instanciar objetos. São classes das quais não se pode instanciar objetos. Seu objetivo é ser herdada.
Introdução Sintaxe Básica da Linguagem JAVA
Módulo II Capítulo 1: Orientação a Objetos
Prof. Cristian Rodrigo Dalcico. Linguagem de Programação Java Aula 1.
Laboratório de Computação Aula 06 e 07 – Implementação de classes Prof. Fábio Dias
Linguagem de Programação – Aula 04 Prof. Me. Ronnison Reges Vidal.
Transcrição da apresentação:

Introdução á Programação em Java Abraão Ferreira Monteiro 6º Período de Sistemas de Informação UNIVERSITAS SECOMP 2009

1. Histórico: A tecnologia Java foi criada como uma ferramenta de programação em computação, parte de um pequeno trabalho anônimo e secreto chamado "the Green Project" da Sun Microsystems em 1991. A equipe "Green Team", um grupo secreto formado por 13 pessoas e liderado por James Gosling, trancou-se em um escritório anônimo na Sand Hill Road em Menlo Park e trabalhou dia e noite por 18 meses, isolado de toda a comunicação com a Sun. Eles estavam tentando antever e planejar a "nova onda" na computação. Sua primeira conclusão foi que ao menos uma tendência significativa seria a convergência de computadores e de dispositivos controlados digitalmente. O resultado foi uma linguagem de programação não atrelada a dispositivos, apelidada de "Oak". Para demonstrar como o Java poderia impulsionar o futuro dos dispositivos digitais, a equipe Green Team desenvolveu um controlador portátil para sistemas de entretenimento doméstico voltado para o setor de televisão digital. A idéia estava muito à frente de seu tempo e o setor de TV digital não estava preparado para o incrível avanço oferecido pela tecnologia Java.

A Internet estava pronta para essa tecnologia e, em 1995, a equipe pôde anunciar que o navegador Netscape Navigator passaria a incorporar a tecnologia Java. A versatilidade, eficiência, portabilidade de plataforma e segurança fazem dela a tecnologia ideal para a computação em rede, de modo que, hoje, a tecnologia Java está presente em mais de dois bilhões e meio de dispositivos: PCs; Telefones celulares e outros dispositivos portáteis; Smart cards; Além de set-top boxes, impressoras, webcams, jogos, sistemas de navegação para automóveis, terminais lotéricos, dispositivos médicos, estações de pagamento de estacionamento, etc.

2. Tecnologia Java: J2SE (Core/Desktop): A plataforma Java 2 Standard Edition provê um ambiente para o sistema central do Java e para o desenvolvimento de aplicações Java em desktops, sendo a base para as tecnologias J2EE (Java 2 Enterprise Edition) e Java Web Services, tendo um compilador, ferramentas, runtimes e JAVA APIs, que permitem escrever, testar, desenvolver e executar applets e aplicações; J2EE (Enterprise/Server): A plataforma Java 2 Enterprise Edition define o padrão para desenvolver componentes baseados em aplicações empresariais multicamada e provê serviços adicionais, ferramentas e APIs para suportar o desenvolvimento simplificado das aplicações empresariais; J2ME (Mobile/Wireless): A plataforma Java 2 Micro Edition é um conjunto de tecnologias e especificações destinadas ao consumidor, com dispositivos como telefones móveis, PDAs e impressoras; Existe ainda as tecnologias Java Card, Java Web Services, XML, JSLEE, JAIN Initiative, Java Metadata Interface, Jini Network Technology, JXTA Technology, Java Dynamic Management Kit e OSS through Java Initiative.

3. Características da Linguagem: Portável: Java foi criada para ser portável. O "byte-code" gerado pelo compilador para a sua aplicação específica pode ser transportado entre plataformas distintas que suportam Java (Solaris 2.3, Windows Server, Windows Seven, Mac/Os, etc) . Não é necessário recompilar um programa para que ele rode numa máquina e sistema diferente, ao contrário do que acontece por exemplo com programas escritos em C e outras linguagens. Orientada a Objetos: A portabilidade é uma das características que se inclui nos objetivos almejados por uma linguagem orientada a objetos. Java suporta herança, mas não herança múltipla. A ausência de herança múltipla pode ser compensada pelo uso de herança e interfaces, onde uma classe herda o comportamento de sua superclasse além de oferecer uma implementação para uma ou mais interfaces.

Parecida com C, C++: Java tem a aparência de C ou de C++, embora a filosofia da linguagem seja diferente. Java também possui características herdadas de muitas outras linguagens de programação: Objective-C, Smalltalk, Eiffel, Modula-3, etc. Muitas das características desta linguagem não são totalmente novas. Java é uma feliz união de tecnologias testadas por vários centros de pesquisa e desenvolvimento de software. Segura: 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 (C , C++, Pascal ). A eliminação do uso de ponteiros, em favor do uso de vetores, objetos e outras estruturas substitutivas traz benefícios em termos de segurança. O programador é proibido de acessar a memória que não pertence ao seu programa. A presença de mecanismos de tratamento de exceções torna as aplicações mais robustas, não permitindo que elas abortem, mesmo quando rodando sob condições anormais.

Suporta concorrência: A linguagem permite a criação de maneira fácil, de vários "threads" de execução. Particularmente útil nos ambientes em que aplicações Java são suportadas, ambientes estes que geralmente podem mapear os threads da linguagem em processamento paralelo real. Eficiente: Como Java foi criada para ser usada em computadores pequenos, ela exige pouco espaço, pouca memória. Java é muito mais eficiente que grande parte das linguagens de "scripting" existentes, embora seja cerca de 20 vezes mais lenta que C, o que não é um marco definitivo. Com a evolução da linguagem, serão criados geradores de "byte-codes" cada vez mais otimizados que trarão as marcas de performance da linguagem mais próximas das de C++ e C. Suporte para programação de sistemas distribuídos: Java fornece facilidades para programação com sockets, TCP/IP, entre outros.

4. Bytecodes: O código de um programa de computador escrito na linguagem Java é transformado para uma forma intermediária de código denominada bytecode, que é interpretada pelas Máquinas Virtuais Java (JVMs). É essa característica que faz com que os os programas Java sejam independentes de plataforma, executando em qualquer sistema que possua uma JVM. Cada opcode tem o tamanho de um byte — daí o seu nome — e assim o número de diferentes códigos de operação está limitado a 256. Os 256 possíveis valores para códigos de operação não são todos utilizados.

Bytecode Visualizer 3.3 http://www.drgarbage.com/

5. Classes: (Abstração) Em Java, classes são definidas através do uso da palavra-chave class. Para definir uma classe, utiliza-se a construção: [modif] class NomeDaClasse { // corpo da classe... } A primeira linha é um comando que inicia a declaração da classe. Após a palavra-chave class, segue-se o nome da classe, que deve ser um identificador válido para a linguagem. O modificador modif é opcional; se presente, pode ser uma combinação de public e abstract ou final. A definição da classe propriamente dita está entre as chaves { e }, que delimitam blocos na linguagem Java. Este corpo da classe usualmente obedece à seguinte seqüência de definição: As variáveis de classe, iniciando pelas public, seguidos pelas protected, pelas com visibilidade padrão (sem modificador) e finalmente pelas private.

Os atributos (ou variáveis de instância) dos objetos dessa classe, seguindo a mesma ordenação definida para as variáveis de classe. Os construtores de objetos dessa classe. Os métodos da classe, geralmente agrupados por funcionalidade. Toda classe pode também ter um método main associado, que será utilizado pelo interpretador Java para dar início à execução de uma aplicação. Java também oferece outra estrutura, denominada interface, com sintaxe similar à de classes mas contendo apenas a especificação da funcionalidade que uma classe deve conter, sem determinar como essa funcionalidade deve ser implementada. Propriedades de uma classe (meta-informação) podem ser obtidas através das funcionalidades oferecidas na classe java.lang.Class.

// Comentário de uma linha public class HelloWorld { private static String str = “Hello World!”; public HelloWorld(){ } private static void escreverMensagem(){ System.out.println(str); public static void main (String args[]) { escreverMensagem();

6. Objeto: Uma classe define um tipo de dado. Ela não pode ser usada a não ser que seja instanciada. A exemplo dos tipos de dados primitivos os quais somente podem ser usados quando uma variável de um determinado tipo é declarada, devemos criar uma instância. Uma instância é um objeto do tipo definido pela classe. Qualquer classe (desde que não seja abstract) pode ser instanciada como qualquer outro tipo de dado da linguagem Java. O trecho de código abaixo exibe uma classe chamada Geometria criando um a instância da classe Vértice: public class Geometria { Vértice v = new Vértice(1.2, 3.5); ... } A diferença mais evidente entre a declaração de um objeto de uma classe e a declaração de um dado primitivo reside na necessidade de reservar memória para o objeto através do uso do operador new. Na verdade, esse operador realiza uma série de tarefas: Reserva espaço na memória para a instância da classe Vértice, o qual deve ser suficiente para conter seu estado, isto é, os valores dos seus campos. Realiza a chamada do método construtor. Retorna uma referência para o novo objeto (o qual é atribuído à variável v).

7. Encapsulamento: Os objetos contém atributos e métodos. O encapsulamento trata de dar alguma segurança aos objetos. Exemplo: Um objeto Cliente por exemplo tem atributos como qualquer outro e estes não podem ser acessados por qualquer outro objeto diretamente. Existem dois tipos de atributos, os privados e os publicos. Em UML e OO (orientação a objetos) é definido que para atributos privados usa-se o sinal de “-” antes do nome e para atributos publicos usa-se o sinal de “+” antes do nome.

Para que o encapsulamento exista é preciso deixar os atributos privados e os métodos públicos, assim está sendo garantido que os valores atribuídos aos atributos serão sempre respeitados pelas regras existentes. Exemplo: O atributo CPF deve sempre ter 11 números, se o atributo não for privado, ele perde essa regra (11 números) pois alguém poderia acessar e colocar 12 ou 9 números tornando-o inválido. Como os atributos privados não podem ser acessados diretamente por outros objetos, existem os métodos públicos que são os responsáveis em acessar os atributos e trazer ou levar algum dado para o objeto respeitando as regras.

8. Herança: O que torna a orientação a objetos única é o conceito de herança que no inglês significa inheritance. Herança é um mecanismo que permite que características comuns a diversas classes com comportamentos comuns ou parecidos, sejam abstraídas e centralizadas em uma classe base, ou superclasse. Tem uma relação “É um”. Exemplo: Um Jaguar “é um” carro. Logo ele foi herdado da classe carro, pois contém as características comuns de um carro. A partir dessa superclasse outras classes podem ser especificadas. Portanto uma subclasse que é uma classe herdada da superclasse recebe sem codificação extra as características da superclasse. Ainda podemos adicionar elementos particulares a está subclasse. Na linguagem Java uma subclasse somente pode herdar uma única superclasse diretamente.

Exemplo:   public class Veiculo {       protected String modelo;             public void setModelo(String modelo) { this.modelo = modelo;       }       public String getModelo(){             return this.modelo; } Existem vários tipos de veículos. Dentre os quais podemos citar Carro, moto, etc...   Alguns veículos possuem características específicas. Portanto não seria interessante colocarmos os atributos de todos os veículos dentro da classe Veículo.   Aí que surge o conceito de herança. Podemos criar uma classe específica para cada tipo de veiculo, como será mostrado a seguir.

public class Carro extends Veiculo {         private String categoria;             public void setCategoria(String categoria) {             this.modelo = categoria;       }       public String getCategoria(){             return this.categoria; } A palavra reservada extends indica que a classe Carro é filha da classe Veículo. A classe Carro irá herdar atributos e métodos da classe Veiculo que não estejam com o modificador private. Por exemplo, todas as classes que herdarem da classe Veículo terão o atributo modelo.

9. Polimorfismo: Analisando a palavra Polimorfismo, ela significa muitas formas. Ou seja, para uma árvore de herança, temos muitas formas de objetos e métodos a partir de uma superclasse e suas subclasses. Polimorfismo é o princípio pelo qual usamos objetos construídos a partir de uma árvore de herança, através de referências do tipo de uma superclasse da hierarquia. Formas de polimorfismo: Subclasses Sobrescrita de método Sobrecarga de método ou construtor

10. Tipos de Dados: boolean Pode assumir o valor true ou o valor false char Caractere em notação Unicode de 16 bits. Serve para a armazenagem de dados alfanuméricos. Também pode ser usado como um dado inteiro com valores na faixa entre 0 e 65535. byte Inteiro de 8 bits em notação de complemento de dois. Pode assumir valores entre -27=-128 e 27- 1=127. short Inteiro de 16 bits em notação de complemento de dois. Os valores possívels cobrem a faixa de - 2-15=-32.768 a 215-1=32.767 int Inteiro de 32 bits em notação de complemento de dois. Pode assumir valores entre - 231=2.147.483.648 e 231-1=2.147.483.647.

long. Inteiro de 64 bits em notação de complemento de. dois long Inteiro de 64 bits em notação de complemento de dois.Pode assumir valores entre -263 e 263-1. float Representa números em notação de ponto flutuante normalizada em precisão simples de 32 bits em conformidade com a norma IEEE 754- 1985. O menor valor positivo representável por esse tipo é 1.40239846e-46 e o maior é 3.40282347e+38 double Representa números em notação de ponto flutuante normalizada em precisão dupla de 64 bits em conformidade com a norma IEEE 754-1985. O menor valor positivo representável é 4.94065645841246544e-324 e o maior é 1.7976931348623157e+308

11. Vetores e Matrizes: // 12 primeiros termos da seqüência de Fibonacci: long Fibonacci[] = {1,1,2,3,5,8,13,34,55,89,144}; // Tabela de sen(n*pi/6), sendo n = 0,1,2,...5 float seno[] = {0.0000,0.5000,0.8660,1.0000,0.8660,0.5000}; // Tabela de log(1+n), sendo n = 0,2...99: double tlog[] = new double[100]; for(int n=0; n<100; n++) tlog[i] = Math.log(1+n); // Matriz dos coeficientes double A[][][] = { {1,2,3}, {0,1,3}, {0,0,-1} };

13. Execução Condicional: a) if([condição])   [comando 1]   // Executado se a condição for true else [comando 2]   // Executado se a condição for false Exemplo: if(x<2) System.out.println(“Valor de x MENOR que 2”); System.out.println(“Valor de X MAIOR ou IGUAL a 2”); b) [expressão condicional] ? [expressão 1] : [expressão 2]  c) if ([condição 1])    [comando 1] else if ([condição 2])    [comandos 2]) else if ([condição 3])    [comando 3] .... else    [comando n]

d) switch([expressão]) { case [constante 1]:       [comando 1]      break;   case [constante 2]:       [comando 2]      break;      ...   case [constante n]:      [de comando n]      break;   default:       [comando] } Exemplo: public class test {   public static void main(String args[]) {      int op = 2;     System.out.print("valor de op e: “ + op)     switch(op) {       case 1:          System.out.println("case 1: op="+op);          break;       case 2:          System.out.println("case 2: op="+op);          break;       case 3:          System.out.println("case 3"+op);          break;       default:          System.out.println("default: op nao esta no limite 1..3");     }   }

14. Laço de iteração: a) for ([expressão 1]; [condição]; [expressão 2])   [comando] Exemplo: for(int i=0; i<10; i++) System.out.println(i); b) while([condição])    [comando subjacente] c) do while([condição]);

import java.io.StreamTokenizer; public class sqrt {   public static void main(String args[]) {       double x; StreamTokenizer inp = new StreamTokenizer(System.in);    // Lê um dado double a partir do teclado     System.out.print("x = "); System.out.flush();  try { inp.nextToken(); x = inp.nval; } catch(java.io.IOException e) { x = 0; }     // Decide se é possível calcular a raiz quadrada do     // número dado. Sendo possível, calcula. Do contrário     // emite uma mensagem de aviso     if(x >= 0)       System.out.println("raiz quadrada de x e " + sqrt(x));     else       System.out.println("x e negativo");   }

Exercícios 1) Escreva uma classe que quando instanciada receba dois valores inteiros. Dentro da classe esses dois valores devem ser somados e retornados para a classe que a instanciou. 2) Escreva um loop de repetição de 1 até 100 que a cada múltiplo de 10 retorne o caractere “*” na tela. 3) No tópico (1) retorne agora os dois valores somados 5 vezes.

15. AWT e Swing: A API (Application Programming Interface) para utilizar recursos gráficos é separada em dois componentes principais: – AWT(Abstract Windowing Toolkit): Contém o conjunto de classes necessárias para a construção de programas com interfaces de janelas. – SWING: Contém o conjunto de classes complementares para a construção de interfaces avançadas (somente em Java 1.2)

16. JOptionPane: // Default title and icon JOptionPane.showMessageDialog(null, "Eggs are not supposed to be green.", "Message"); // Custom title, warning icon JOptionPane.showMessageDialog(null, "Eggs are not supposed to be green.", "Inane warning", JOptionPane.WARNING_MESSAGE); // Custom title, error icon JOptionPane.showMessageDialog(null, "Eggs are not supposed to be green.", "Inane error", JOptionPane.ERROR_MESSAGE); // Custom title, no icon JOptionPane.showMessageDialog(null, "Eggs are not supposed to be green.", "A plain message", JOptionPane.PLAIN_MESSAGE); // Custom title, custom icon JOptionPane.showMessageDialog(null, "Eggs are not supposed to be green.", "Inane custom dialog", JOptionPane.INFORMATION_MESSAGE, icon);

// Default icon, custom title int n = JOptionPane.showConfirmDialog( null, "Would you like green eggs and ham?", "An Inane Question", JOptionPane.YES_NO_OPTION); Object[] options = {"Yes, please", "No way!"}; int n = JOptionPane.showOptionDialog( null, "Would you like green eggs and ham?", "A Silly Question", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, //do not use a custom Icon options, //the titles of buttons options[0]); //default button title

17. NetBeans 6.7.1:

18. Eclipse:

Exercícios 1) Criar um JFrame que leia dois valores inteiros e exiba a soma deles em um JTextField. 2) Criar um JFrame que exiba o resultado em um outro JFrame. 3) Criar um JFrame com menu que permita o usuário selecionar a opção de somar ou subtrair dois números inteiros e exiba o resultado em um outro JFrame.

Agradeço a Atenção! UNIVERSITAS SECOMP 2009

Bibliografia http://www.dm.ufscar.br/~waldeck/curso/java/ http://www.webmonkey.com/tutorial/Program_In_Java_-_Part_1 http://www.ic.unicamp.br/~cmrubira/aacesta/java/javatut9.html http://www.dca.fee.unicamp.br/cursos/PooJava/classes/definicao.html http://www.devbr.net/tutoriais/53.html?task=view http://java.sun.com/docs/books/tutorial/uiswing/components/dialog.html