instituto federal de educaÇÃo instituto federal de...

Post on 15-Sep-2020

0 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

INSTITUTO FEDERAL DE EDUCAÇÃO INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO

GRANDE DO NORTEGRANDE DO NORTE

INTRODUÇÃO A LINGUAGEM JAVAINTRODUÇÃO A LINGUAGEM JAVA

ÉDocente: Éberton da Silva Marinhoe-mail: ebertonsm@gmail.com

eberton.marinho@ifrn.edu.br

Curso de Tecnologia em Sistemas para Internet

13/11/2013

SUMÁRIO

Conceitos BásicosPOO em Java

JAVAC it Bá iConceitos Básicos

HISTÓRICO

A linguagem de programação Java foi criada em 1991 por James GoslingI i i l t li i i h O kInicialmente a linguagem iria chamar-se Oak(Carvalho) em referência a árvore que era visível pela janela de James Goslingpela janela de James Gosling.A mudança de nome ocorreu pois já existia uma linguagem de programação com este nome, então linguagem de programação com este nome, então a linguagem foi rebatizada para Java.

CARACTERÍSTICAS

Linguagem de programação orientada a objetos; a exceção dos seus tipos primitivos, tudo são classes ou instâncias de uma classe Oferece classes ou instâncias de uma classe. Oferece mecanismos de abstração, encapsulamento e hereditariedadeAmbiente de desenvolvimento composto pelo compilador, interpretador, gerador de documentação e etc.;Ambiente de execução que pode ser praticamente qualquer máquina que possua Java RuntimeEnvironment (JRE) instalado, uma máquina virtual Java (JVM); Independente de plataforma; virtual Java (JVM); Independente de plataforma;

CARACTERÍSTICAS

f A linguagem Java é muito familiar para os programadores C/C++ ;Aplicações Java são executadas em ambiente próprio Aplicações Java são executadas em ambiente próprio (JRE) o que inviabiliza a intrusão de código malicioso; Mais segurança“Sem ponteiros”. A manipulação dos endereços de memória (alocação e desalocação de memória) ficam

t d JVM A JVM i i por conta da JVM. A JVM possui um mecanismo (garbage collector) que recupera a memória alocada para objetos não referenciados pelo programaj gPermite Multithreading; Java permite a execução de múltiplas rotinas concorrentemente, bem como

i d i i ã d t i timecanismos de sincronização de tais rotinas

MÁQUINA VIRTUAL JAVA - JVMA máquina virtual java (JVM) é uma máquina imaginária que emula uma aplicação em uma máquina realmáquina real.É a JVM que permite a portabilidade do código Java isto ocorre porque todo código Java é Java, isto ocorre porque todo código Java é compilada para um formato intermediário, bytecode, este formato é então interpretado pela JVM.Cada Sistema Operacional que tenha uma JVM instalada pode executar o código Java

COLETOR DE LIXO – GARBAGECOLLECTION

Em muitas das linguagens de programação, inclusive C e C++, a responsabilidade pela liberação do espaço que não mais será utilizado é liberação do espaço que não mais será utilizado é do programador

nem sempre é fácil gerenciar o que está e o que não nem sempre é fácil gerenciar o que está e o que não está sendo utilizadoa má gerência da memória ocasiona muitas vezes o

d ilh ( k fl ) estouro de pilha (stack overflow) entre outros problemas.

Na linguagem de programação Java a Na linguagem de programação Java a responsabilidade pela gerência da memória é do Coletor de lixo (Garbage Collector)( g )

FASES DE UM PROGRAMA JAVA

1. Criação do código fonte (Programa.java);2. Compilação do código fonte e geração do

b t d (P l )bytecode (Programa.class);3. Interpretação do bytecode pela máquina virtual;

C d b d li d 4. Conversão do bytecode em linguagem de máquina.

HOTSPOT

f As informações, relativas ao ambiente no qual a aplicação está sendo executada, são utilizadas pela JVM para fazer otimizações em tempo de execução e JVM para fazer otimizações em tempo de execução e havendo necessidade o código que está sendo interpretado é transformado em instruções nativas do i t i l ( ódi d á i ) sistema operacional (código de máquina) em um

processo de compilação dinâmica.Esta transformação em tempo de execução é realizada Esta transformação em tempo de execução é realizada pelo JIT, Just-in-time compiler. O fato do código (bytecode) ser transformado, em tempo de execução,

em código de máquina permite que a JVM mude a estratégia de compilação em busca de um melhor desempenho, em um ciclo de “aprendizado” contínuo.desempenho, em um ciclo de aprendizado contínuo.

JRE E JDKJRE: O Java Runtime Environment contém tudo aquilo que um usuário comum precisa para executar uma aplicação Java (JVM e bibliotecas) executar uma aplicação Java (JVM e bibliotecas), como o próprio nome diz é o “Ambiente de execução Java”;ç ;JDK: O Java Development Kit é composto pelo JRE e um conjunto de ferramentas úteis ao desenvolvedor Java.

VERSÕES DO JAVA

JDK 1 0 (1996) P i i ãJDK 1.0 (1996): Primeira versão;JDK 1.1 (1997): Adição das bibliotecas JDBC, RMI e etc;J2SE 1.2 (1998) - Playground: A partir daqui todas as ( ) yg p qversões Java foram denominadas de Java 2 Standard Edition e foi adicionado o Framework Collections e etc.;J2SE 1.3 (2000) – Kestrel: Inclusão das bibliotecas JNDI J2SE 1.3 (2000) Kestrel: Inclusão das bibliotecas JNDI, JavaSound e etc.;J2SE 1.4 (2002) – Merlin: Palavra reservada “assert”, biblioteca NIO e etc ;biblioteca NIO e etc.;6. J2SE 5.0 (2004) – Tiger: Apesar da versão ser 1.5, agora é chamada apenas de 5. Adições importantes como: E ã A t b i g G i f h tEnumeração, Autoboxing, Generics, for-each e etc;7. JSE 6 (2006) – Mustang: Entre outras alterações houveram mudança na nomenclatura (remoção do 2 –J2SE) lh i ifi ti fJ2SE) e melhora significativa na performance.

FERRAMENTAS DO JDKj C il d d li Jjavac: Compilador da linguagem Java;java: Interpretador Java;jdb D b d Jjdb: Debugador Java;java -prof: Interpretador com opção para gerar estatísticas sobre o uso dos métodos;estatísticas sobre o uso dos métodos;javadoc: Gerador de documentação;jar: Ferramenta que comprime, lista e expande;j q p , p ;appletviewer: Permite a execução e debug de applets sem browser;javap: Permite ler a interface pública das classes;extcheck: Detecta conflitos em arquivos Jarextcheck: Detecta conflitos em arquivos Jar.

INSTALAÇÃO DO JDKD l d Download:

http://www.oracle.com

JAVA_HOME: Indica o diretório onde foi instalado o JDK, muito utilizado por frameworks , pe por outros programas para localizar o JDK;PATH: Identifica o local onde encontram-se as f t d d l i t ( il d ferramentas de desenvolvimento (compilador, interpretador, gerador de documentação e etc.), devemos adicionar o diretório JAVA HOME\bin;_ ;CLASSPATH: Identifica diretório onde o ClassLoader pode encontrar classes que são

tili d l li ãutilizadas pela sua aplicação.

IDE NETBEANS

REQUISITOS BÁSICOS

JDK InstaladoMáquina com uma capacidade de processamento

á lrazoável

INSTALAÇÃO DO JDKBaixar o JDK do site da sun:

http://www.oracle.com I i i d i t l ã d JDKIniciar o processo de instalação do JDKAceitar termos e licenças de uso

Configurar ambiente de trabalhoConfigurar ambiente de trabalho

PRIMEIRO PROGRAMAbli l P i i P {public class PrimeiroPrograma {

public static void main(String[] args) {

System.out.println("Olá Mundo!!");

System.out.println("Meu primeiro programa em Java.");

}}

}

DEFINIÇÕES

Cl É t t d t íd Classe: É a estrutura que, quando construída, produzirá um objeto, dizemos “todo objeto é instância de alguma classe”;Objeto: Em tempo de execução, quando a JVM encontra a palavra reservada new é criada uma instância da classe apropriada;instância da classe apropriada;Estado: É definido pelo conjunto de atributos de uma classe, isto é, cada instância da classe possuirá um

t d i d d t d d i bj testado independente dos demais objetos.Comportamento: São os métodos da classe, comportamento é aquilo que uma classe faz p q q(algoritmos), muitas vezes, um determinado comportamento (método) muda o estado do objeto, isto é após a execução do método um ou mais atributos é, após a execução do método um ou mais atributos mudaram de valor;

NOMENCLATURA

Identificadores válidos: Definem as regras para que o compilador identifique o nome como válidoválido.

1 Devem iniciar com uma letra cifrão ($) ou 1. Devem iniciar com uma letra, cifrão ($) ou sublinhado/underscore (_);

2. Após o primeiro caractere podem ter qualquer combinação de letras, caracteres e números;

3. Não possuem limite de tamanho;Nã d l d4. Não podem ser palavras reservadas;

5. Identificadores são case-sensitive isto é, “Nome” e “nome” são identificadores diferentes.nome são identificadores diferentes.

NOMENCLATURA - EXEMPLOS

CONVENÇÃO DE NOMENCLATURA DAÇSUN1. Classes e interfaces: A primeira letra deve ser

maiúscula e, caso o nome seja formado por mais de uma palavra as demais palavras devem ter de uma palavra, as demais palavras devem ter sua primeira letra maiúscula também (CamelCase);( );

2. Métodos: A primeira letra deve ser minúscula e após devemos aplicar o camelCase;

3. Variáveis: Da mesma forma que métodos;4. Constantes: Todas as letras do nome devem ser

maiúsculas e caso seja formada por mais de uma palavra separada por underscore.

CONVENÇÃO DE NOMENCLATURA DAÇSUN - EXEMPLOS

TIPOS PRIMITIVOS, OPERADORESOPERADORESE CONTROLE DE FLUXO

TIPOS DE DADOS

CONVERSÕES ENTRE TIPOS JAVA

OPERADORES

OPERADORES

OPERADORES

OPERADORES

CONTROLE DE FLUXO

CONTROLE DE FLUXO

CONTROLE DE FLUXO

CONTROLE DE FLUXO

CONTROLE DE FLUXO

break e continue

CONTROLE DE FLUXO

break e continue

ENTRADA DE DADOS//importe a classe Scanner para utilizar a leitura pelo teclado//importe a classe Scanner para utilizar a leitura pelo teclado//Similar ao #include do Cimport java.util.Scanner;public class Leitura {p {

public static void main(String[] args) {// crie a variável de leitura dos dadosScanner s = new Scanner(System.in);// use os métodos de leitura específicos do tipo desejadoSystem.out.print("digite uma linha: ");String linha = s.nextLine(); // le a linhaS t t i t("digit ")System.out.print("digite um numero: ");int i = s.nextInt(); // le um inteiroSystem.out.print("digite um numero: ");double d = s.nextDouble(); // le um ponto-flutuantedouble d s.nextDouble(); // le um ponto flutuanteSystem.out.print(" Primeira linha: "+linha);System.out.print(" Primeiro número: "+i);System.out.print(" Segundo número: « +d);

}}

ARRAYS UNIDIMENSIONAISArrays são objetos que armazenam múltiplas variáveis do mesmo tipo ou do Arrays são objetos que armazenam múltiplas variáveis do mesmo tipo ou do mesmo sub-tipoUm array é um objeto que armazena um número pré-definido de elementos, isto é, o seu tamanho é definido no momento da sua construção.Seus elementos são acessados através de índices que iniciam-se sempre por 0 (zero), ou seja, um array de tamanho quatro terá índices 0, 1, 2 e 3.Exemplo:

1. int[] jogoSena; //Declaração2.3 j S i t[6] //C i ã3. jogoSena = new int[6]; //Criação4.5. jogoSena[0] = 23; //Inicialização da posição 06 j S [1] 12 //I i i li ã d i ã 16. jogoSena[1] = 12; //Inicialização da posição 17. jogoSena[2] = 55; //Inicialização da posição 28. jogoSena[3] = 02; //Inicialização da posição 39 j S [4] 07 //I i i li ã d i ã 49. jogoSena[4] = 07; //Inicialização da posição 410.jogoSena[5] = 19; //Inicialização da posição 5

ARRAYS UNIDIMENSIONAIS

O t f d i i i li ãOutras formas de inicialização

i t[] t J S = {23 12 55 02 07 19}int[] outroJogoSena = {23, 12, 55, 02, 07, 19};

No exemplo acima acontecem quatro coisas em No exemplo acima, acontecem quatro coisas em apenas uma linha:

I. Declaração de uma referência a um array de inteiros chamado outroJogoSena;II. Criação de um array com seis posições;III Inicialização das posições com os valores 23 12 III.Inicialização das posições com os valores 23, 12, 55, 02, 07 e 19;IV. Atribuição do novo objeto (array) a referência

t J SoutroJogoSena;

ARRAYS UNIDIMENSIONAIS

Para conhecer o tamanho total de um array basta você acessar o atributo length.

P i i i ã (í di ) d l é Primeira posição (índice): de qualquer array é sempre 0;Última posição (índice): é sempre o seu tamanho – 1 p ç ( ) p(length - 1).

ARRAYS MULTIDIMENSIONAIS

A função destes arrays é a mesma dos seus irmãos unidimensionais porém arraysmultidimensionais permitem a construção de multidimensionais permitem a construção de estruturas de dados mais ricas.

EXERCÍCIOS

PROGRAMAÇÃO ORIENTADA APROGRAMAÇÃO ORIENTADA AOBJETOS

POR QUE POO?O di d ã i t d bj t O paradigma de programação orientado a objeto também utiliza o paradigma estruturadoEm Orientação a Objetos os problemas são Em Orientação a Objetos os problemas são resolvidos pensando-se em interações entre diferentes objetos. Já no paradigma Estruturado

l bl d d procura-se resolver os problemas decompondo-os em funções e dados que somados formarão um programa.programa.Dizemos que um objeto encapsula a lógica de negócios, concentrando a responsabilidade em

ú i d i i bili d i pontos únicos do sistema, viabilizando um maior reuso do código pela modularidade desta abordagem.abordagem.

POOBenefícios da abordagem orientada a objetos:

Modularidade: Uma vez criado um objeto pode ser passado por todo o sistema;passado por todo o sistema;Encapsulamento: Detalhes de implementação ficam ocultos externamente ao objeto;Reuso: Uma vez criado um objeto pode ser utilizado em outros programas;M t ibilid d M t ã é li d t Manutenibilidade: Manutenção é realizada em pontos específicos do seu programa (objetos).

CLASSES E OBJETOS

Objetos são “coisas” que temos no mundo real e abstraímos no mundo virtual para que possamos manipulá los na resolução de problemas Um manipulá-los na resolução de problemas. Um objeto no mundo real sempre possui estado e comportamento, isto é, ele possui características p , , pe ações que são pertinentes a sua natureza.

CLASSES E OBJETOS

Objetos são instâncias das classes.

CLASSES E OBJETOS

Implementação

CLASSES E OBJETOS

O que mudou?Qual o resultado da execução deste programa

MÉTODOS

O conjunto de métodos define o comportamento de um objeto

MÉTODOS

MÉTODOS

Podemos melhorar um pouco mais a nossa classe atribuindo valores default para alguns atributos e adicionando alguns atributos para representar e adicionando alguns atributos para representar o piloto

POOEm uma análise mais refinada e crítica é possível perceber que os atributos nomePiloto, idadePilotoe habilidadePiloto não fazem parte de um carro e habilidadePiloto não fazem parte de um carro de corrida, na verdade quem tem estes atributos é o piloto.p

POOO novo método acelerar será da seguinte forma:

POODois problemas1. A velocidade atual ficou maior que a velocidade

máxima do carro (padrão é 100);máxima do carro (padrão é 100);2. Não respeitou o algoritmo de aceleração do veículo

que permite o aumento de velocidade em intervalos de 10 unidades mais um adicional de acordo com a habilidade do piloto.

ENCAPSULAMENTO Isolamento entre as partes do programa

Uma das principais formas de fazer isso é proibindo o acesso direto às variáveis de um objeto por objetos acesso direto às variáveis de um objeto por objetos externos.Definição de Pacoteç

Usamos pacotes para organizar as classes semelhantes. Pacotes, a grosso modo, são apenas pastas ou diretórios do i t i l d fi d i sistema operacional onde ficam armazenados os arquivos

fonte de Java e são essenciais para o conceito de encapsulamento, no qual são dados níveis de acesso as lclasses.

Java possui um pacote padrão que é utilizado quando programamos, mesmo embora não seja recomendado pela Sun usá-lo.

ENCAPSULAMENTOModificadores de acesso

public: Qualquer objeto pode acessar o membro;d f lt Q l bj t d t d default: Qualquer objeto do mesmo pacote pode acessar o membro e subclasses de outros pacotes;protected: O membro é acessível apenas por objetos p otecte : O e o é acess ve ape as po o je os do mesmo pacote;private: O membro é acessível apenas internamente ( ó i bj t )(próprio objeto);

ENCAPSULAMENTONós iremos limitar o acesso aos atributos da classe CarroCorrida de forma que estes só possam ser acessado internamentepossam ser acessado internamente.

ENCAPSULAMENTOC U ili é d Convenção: Utilizar métodos getters e setters para fornecer meios de modificar os estados das variáveis

ENCAPSULAMENTOnumeroIdentificacao: Este atributo deve ser acessado e atribuído/modificado (getter e setterforam criados) por qualquer objeto Pensando no foram criados) por qualquer objeto. Pensando no mundo real o número de identificação é variável, isto é, a direção do campeonato pode mudar , ç p paleatoriamente entre corridas.velocidadeAtual: Este atributo pode apenas ser acessado (getter), isto ocorre pois desejo que a velocidade dos meus carros de corrida sejam

difi d t é d ét d f () modificadas apenas através dos métodos frear() e acelerar()

ENCAPSULAMENTOvelocidadeMaxima: Ninguém pode acessar ou modificar/atribuir valores para este atributo (sem getter ou setter) pois no meu modelo de corrida getter ou setter) pois, no meu modelo de corrida de carros, a velocidade máxima de cada um é pré-definida e não será alterada. O carro já é criado jsabendo que pode alcançar a velocidade máxima de 100 unidades de velocidade (Km/h, velocidade d l ) b d l d da luz e etc.), observe que o meu modelo de carro de corrida é assim para fins didáticos, mas normalmente nós iremos implementar o atributo normalmente nós iremos implementar o atributo velocidadeMaxima de forma que seja função de outras variáveis como motor, potência, chassis e , p ,etc;

ENCAPSULAMENTOpiloto: Este atributo pode ser acessado e modificado/atribuído (getter e setter) por outros objetos do programa Pensando no modelo seria o objetos do programa. Pensando no modelo seria o seguinte: Nós podemos trocar de piloto do carro entre corridas, durante as corridas e ainda deixá-,lo sem piloto quando estiver parado, logo eu preciso de meios para que isto seja possível.

CONSTRUTORÉÉ um bloco responsável pela criação da classe. Ele é executado toda a vez que utilizamos a palavra reservada newpalavra reservada newSua única função é criar uma instância (objeto) da classe da classe. Quando o construtor não é explicitamente declarado o compilador insere o construtor declarado o compilador insere o construtor default, isto é, um construtor sem parâmetros e com o corpo vazio.Construtor implícitopublic CarroCorrida() {}}

CONSTRUTORPara mostrar uma implementação do construtor nós iremos definir que a velocidade máxima de um veiculo e o seu número de identificação são definidos durante a e o seu número de identificação são definidos durante a sua construção

public CarroCorrida(Integer numeroIdentificacao, Double velocidadeMaxima) {

this.numeroIdentificacao = numeroIdentificacao;

this.velocidadeMaxima = velocidadeMaxima;

}

A l d thi i ifi ó t A palavra reservada this significa que nós estamos acessando o membro do próprio objeto que está sendo instanciadoinstanciado.

CONSTRUTORPara instanciar a classe CarroCorrida podemos fazer da seguinte maneira:

class Corrida {public static void main(String[] args) {p ( g[] g ) {//Criacao dos carros que irao correrCarroCorrida carroEquipeVelocidade = new CarroCorrida(1, 100.0);CarroCorrida carroEquipeTrapaceiros = new CarroCorrida(2 100 0);CarroCorrida carroEquipeTrapaceiros = new CarroCorrida(2, 100.0);//...

CONSTRUTOR

EXERCÍCIOS

DÚVIDAS

e-mail:ebertonsm@gmail.comeberton.marinho@ifrn.edu.br

Endereço eletrônico da disciplina: http://docente.ifrn.edu.br/ebertonmarinho

7070

top related