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

70
INSTITUTO FEDERAL DE EDUCAÇÃO INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE GRANDE DO NORTE INTRODUÇÃO A LINGUAGEM JAVA INTRODUÇÃO A LINGUAGEM JAVA É Docente: Éberton da Silva Marinho e-mail: [email protected] [email protected] Curso de Tecnologia em Sistemas para Internet 13/11/2013

Upload: others

Post on 15-Sep-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: INSTITUTO FEDERAL DE EDUCAÇÃO INSTITUTO FEDERAL DE ...docente.ifrn.edu.br/ebertonmarinho/disciplinas/estrutura-de-dados/aula01...COLETOR DE LIXO – GARBAGE COLLECTION |Em muitas

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: [email protected]

[email protected]

Curso de Tecnologia em Sistemas para Internet

13/11/2013

Page 2: INSTITUTO FEDERAL DE EDUCAÇÃO INSTITUTO FEDERAL DE ...docente.ifrn.edu.br/ebertonmarinho/disciplinas/estrutura-de-dados/aula01...COLETOR DE LIXO – GARBAGE COLLECTION |Em muitas

SUMÁRIO

Conceitos BásicosPOO em Java

Page 3: INSTITUTO FEDERAL DE EDUCAÇÃO INSTITUTO FEDERAL DE ...docente.ifrn.edu.br/ebertonmarinho/disciplinas/estrutura-de-dados/aula01...COLETOR DE LIXO – GARBAGE COLLECTION |Em muitas

JAVAC it Bá iConceitos Básicos

Page 4: INSTITUTO FEDERAL DE EDUCAÇÃO INSTITUTO FEDERAL DE ...docente.ifrn.edu.br/ebertonmarinho/disciplinas/estrutura-de-dados/aula01...COLETOR DE LIXO – GARBAGE COLLECTION |Em muitas

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.

Page 5: INSTITUTO FEDERAL DE EDUCAÇÃO INSTITUTO FEDERAL DE ...docente.ifrn.edu.br/ebertonmarinho/disciplinas/estrutura-de-dados/aula01...COLETOR DE LIXO – GARBAGE COLLECTION |Em muitas

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;

Page 6: INSTITUTO FEDERAL DE EDUCAÇÃO INSTITUTO FEDERAL DE ...docente.ifrn.edu.br/ebertonmarinho/disciplinas/estrutura-de-dados/aula01...COLETOR DE LIXO – GARBAGE COLLECTION |Em muitas

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

Page 7: INSTITUTO FEDERAL DE EDUCAÇÃO INSTITUTO FEDERAL DE ...docente.ifrn.edu.br/ebertonmarinho/disciplinas/estrutura-de-dados/aula01...COLETOR DE LIXO – GARBAGE COLLECTION |Em muitas

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

Page 8: INSTITUTO FEDERAL DE EDUCAÇÃO INSTITUTO FEDERAL DE ...docente.ifrn.edu.br/ebertonmarinho/disciplinas/estrutura-de-dados/aula01...COLETOR DE LIXO – GARBAGE COLLECTION |Em muitas

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 )

Page 9: INSTITUTO FEDERAL DE EDUCAÇÃO INSTITUTO FEDERAL DE ...docente.ifrn.edu.br/ebertonmarinho/disciplinas/estrutura-de-dados/aula01...COLETOR DE LIXO – GARBAGE COLLECTION |Em muitas

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.

Page 10: INSTITUTO FEDERAL DE EDUCAÇÃO INSTITUTO FEDERAL DE ...docente.ifrn.edu.br/ebertonmarinho/disciplinas/estrutura-de-dados/aula01...COLETOR DE LIXO – GARBAGE COLLECTION |Em muitas

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.

Page 11: INSTITUTO FEDERAL DE EDUCAÇÃO INSTITUTO FEDERAL DE ...docente.ifrn.edu.br/ebertonmarinho/disciplinas/estrutura-de-dados/aula01...COLETOR DE LIXO – GARBAGE COLLECTION |Em muitas

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.

Page 12: INSTITUTO FEDERAL DE EDUCAÇÃO INSTITUTO FEDERAL DE ...docente.ifrn.edu.br/ebertonmarinho/disciplinas/estrutura-de-dados/aula01...COLETOR DE LIXO – GARBAGE COLLECTION |Em muitas

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.

Page 13: INSTITUTO FEDERAL DE EDUCAÇÃO INSTITUTO FEDERAL DE ...docente.ifrn.edu.br/ebertonmarinho/disciplinas/estrutura-de-dados/aula01...COLETOR DE LIXO – GARBAGE COLLECTION |Em muitas

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.

Page 14: INSTITUTO FEDERAL DE EDUCAÇÃO INSTITUTO FEDERAL DE ...docente.ifrn.edu.br/ebertonmarinho/disciplinas/estrutura-de-dados/aula01...COLETOR DE LIXO – GARBAGE COLLECTION |Em muitas

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.

Page 15: INSTITUTO FEDERAL DE EDUCAÇÃO INSTITUTO FEDERAL DE ...docente.ifrn.edu.br/ebertonmarinho/disciplinas/estrutura-de-dados/aula01...COLETOR DE LIXO – GARBAGE COLLECTION |Em muitas

IDE NETBEANS

Page 16: INSTITUTO FEDERAL DE EDUCAÇÃO INSTITUTO FEDERAL DE ...docente.ifrn.edu.br/ebertonmarinho/disciplinas/estrutura-de-dados/aula01...COLETOR DE LIXO – GARBAGE COLLECTION |Em muitas

REQUISITOS BÁSICOS

JDK InstaladoMáquina com uma capacidade de processamento

á lrazoável

Page 17: INSTITUTO FEDERAL DE EDUCAÇÃO INSTITUTO FEDERAL DE ...docente.ifrn.edu.br/ebertonmarinho/disciplinas/estrutura-de-dados/aula01...COLETOR DE LIXO – GARBAGE COLLECTION |Em muitas

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

Page 18: INSTITUTO FEDERAL DE EDUCAÇÃO INSTITUTO FEDERAL DE ...docente.ifrn.edu.br/ebertonmarinho/disciplinas/estrutura-de-dados/aula01...COLETOR DE LIXO – GARBAGE COLLECTION |Em muitas

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.");

}}

}

Page 19: INSTITUTO FEDERAL DE EDUCAÇÃO INSTITUTO FEDERAL DE ...docente.ifrn.edu.br/ebertonmarinho/disciplinas/estrutura-de-dados/aula01...COLETOR DE LIXO – GARBAGE COLLECTION |Em muitas

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;

Page 20: INSTITUTO FEDERAL DE EDUCAÇÃO INSTITUTO FEDERAL DE ...docente.ifrn.edu.br/ebertonmarinho/disciplinas/estrutura-de-dados/aula01...COLETOR DE LIXO – GARBAGE COLLECTION |Em muitas

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.

Page 21: INSTITUTO FEDERAL DE EDUCAÇÃO INSTITUTO FEDERAL DE ...docente.ifrn.edu.br/ebertonmarinho/disciplinas/estrutura-de-dados/aula01...COLETOR DE LIXO – GARBAGE COLLECTION |Em muitas

NOMENCLATURA - EXEMPLOS

Page 22: INSTITUTO FEDERAL DE EDUCAÇÃO INSTITUTO FEDERAL DE ...docente.ifrn.edu.br/ebertonmarinho/disciplinas/estrutura-de-dados/aula01...COLETOR DE LIXO – GARBAGE COLLECTION |Em muitas

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.

Page 23: INSTITUTO FEDERAL DE EDUCAÇÃO INSTITUTO FEDERAL DE ...docente.ifrn.edu.br/ebertonmarinho/disciplinas/estrutura-de-dados/aula01...COLETOR DE LIXO – GARBAGE COLLECTION |Em muitas

CONVENÇÃO DE NOMENCLATURA DAÇSUN - EXEMPLOS

Page 24: INSTITUTO FEDERAL DE EDUCAÇÃO INSTITUTO FEDERAL DE ...docente.ifrn.edu.br/ebertonmarinho/disciplinas/estrutura-de-dados/aula01...COLETOR DE LIXO – GARBAGE COLLECTION |Em muitas

TIPOS PRIMITIVOS, OPERADORESOPERADORESE CONTROLE DE FLUXO

Page 25: INSTITUTO FEDERAL DE EDUCAÇÃO INSTITUTO FEDERAL DE ...docente.ifrn.edu.br/ebertonmarinho/disciplinas/estrutura-de-dados/aula01...COLETOR DE LIXO – GARBAGE COLLECTION |Em muitas

TIPOS DE DADOS

Page 26: INSTITUTO FEDERAL DE EDUCAÇÃO INSTITUTO FEDERAL DE ...docente.ifrn.edu.br/ebertonmarinho/disciplinas/estrutura-de-dados/aula01...COLETOR DE LIXO – GARBAGE COLLECTION |Em muitas

CONVERSÕES ENTRE TIPOS JAVA

Page 27: INSTITUTO FEDERAL DE EDUCAÇÃO INSTITUTO FEDERAL DE ...docente.ifrn.edu.br/ebertonmarinho/disciplinas/estrutura-de-dados/aula01...COLETOR DE LIXO – GARBAGE COLLECTION |Em muitas

OPERADORES

Page 28: INSTITUTO FEDERAL DE EDUCAÇÃO INSTITUTO FEDERAL DE ...docente.ifrn.edu.br/ebertonmarinho/disciplinas/estrutura-de-dados/aula01...COLETOR DE LIXO – GARBAGE COLLECTION |Em muitas

OPERADORES

Page 29: INSTITUTO FEDERAL DE EDUCAÇÃO INSTITUTO FEDERAL DE ...docente.ifrn.edu.br/ebertonmarinho/disciplinas/estrutura-de-dados/aula01...COLETOR DE LIXO – GARBAGE COLLECTION |Em muitas

OPERADORES

Page 30: INSTITUTO FEDERAL DE EDUCAÇÃO INSTITUTO FEDERAL DE ...docente.ifrn.edu.br/ebertonmarinho/disciplinas/estrutura-de-dados/aula01...COLETOR DE LIXO – GARBAGE COLLECTION |Em muitas

OPERADORES

Page 31: INSTITUTO FEDERAL DE EDUCAÇÃO INSTITUTO FEDERAL DE ...docente.ifrn.edu.br/ebertonmarinho/disciplinas/estrutura-de-dados/aula01...COLETOR DE LIXO – GARBAGE COLLECTION |Em muitas

CONTROLE DE FLUXO

Page 32: INSTITUTO FEDERAL DE EDUCAÇÃO INSTITUTO FEDERAL DE ...docente.ifrn.edu.br/ebertonmarinho/disciplinas/estrutura-de-dados/aula01...COLETOR DE LIXO – GARBAGE COLLECTION |Em muitas

CONTROLE DE FLUXO

Page 33: INSTITUTO FEDERAL DE EDUCAÇÃO INSTITUTO FEDERAL DE ...docente.ifrn.edu.br/ebertonmarinho/disciplinas/estrutura-de-dados/aula01...COLETOR DE LIXO – GARBAGE COLLECTION |Em muitas

CONTROLE DE FLUXO

Page 34: INSTITUTO FEDERAL DE EDUCAÇÃO INSTITUTO FEDERAL DE ...docente.ifrn.edu.br/ebertonmarinho/disciplinas/estrutura-de-dados/aula01...COLETOR DE LIXO – GARBAGE COLLECTION |Em muitas

CONTROLE DE FLUXO

Page 35: INSTITUTO FEDERAL DE EDUCAÇÃO INSTITUTO FEDERAL DE ...docente.ifrn.edu.br/ebertonmarinho/disciplinas/estrutura-de-dados/aula01...COLETOR DE LIXO – GARBAGE COLLECTION |Em muitas

CONTROLE DE FLUXO

break e continue

Page 36: INSTITUTO FEDERAL DE EDUCAÇÃO INSTITUTO FEDERAL DE ...docente.ifrn.edu.br/ebertonmarinho/disciplinas/estrutura-de-dados/aula01...COLETOR DE LIXO – GARBAGE COLLECTION |Em muitas

CONTROLE DE FLUXO

break e continue

Page 37: INSTITUTO FEDERAL DE EDUCAÇÃO INSTITUTO FEDERAL DE ...docente.ifrn.edu.br/ebertonmarinho/disciplinas/estrutura-de-dados/aula01...COLETOR DE LIXO – GARBAGE COLLECTION |Em muitas

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);

}}

Page 38: INSTITUTO FEDERAL DE EDUCAÇÃO INSTITUTO FEDERAL DE ...docente.ifrn.edu.br/ebertonmarinho/disciplinas/estrutura-de-dados/aula01...COLETOR DE LIXO – GARBAGE COLLECTION |Em muitas

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

Page 39: INSTITUTO FEDERAL DE EDUCAÇÃO INSTITUTO FEDERAL DE ...docente.ifrn.edu.br/ebertonmarinho/disciplinas/estrutura-de-dados/aula01...COLETOR DE LIXO – GARBAGE COLLECTION |Em muitas

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;

Page 40: INSTITUTO FEDERAL DE EDUCAÇÃO INSTITUTO FEDERAL DE ...docente.ifrn.edu.br/ebertonmarinho/disciplinas/estrutura-de-dados/aula01...COLETOR DE LIXO – GARBAGE COLLECTION |Em muitas

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).

Page 41: INSTITUTO FEDERAL DE EDUCAÇÃO INSTITUTO FEDERAL DE ...docente.ifrn.edu.br/ebertonmarinho/disciplinas/estrutura-de-dados/aula01...COLETOR DE LIXO – GARBAGE COLLECTION |Em muitas

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.

Page 42: INSTITUTO FEDERAL DE EDUCAÇÃO INSTITUTO FEDERAL DE ...docente.ifrn.edu.br/ebertonmarinho/disciplinas/estrutura-de-dados/aula01...COLETOR DE LIXO – GARBAGE COLLECTION |Em muitas

EXERCÍCIOS

Page 43: INSTITUTO FEDERAL DE EDUCAÇÃO INSTITUTO FEDERAL DE ...docente.ifrn.edu.br/ebertonmarinho/disciplinas/estrutura-de-dados/aula01...COLETOR DE LIXO – GARBAGE COLLECTION |Em muitas

PROGRAMAÇÃO ORIENTADA APROGRAMAÇÃO ORIENTADA AOBJETOS

Page 44: INSTITUTO FEDERAL DE EDUCAÇÃO INSTITUTO FEDERAL DE ...docente.ifrn.edu.br/ebertonmarinho/disciplinas/estrutura-de-dados/aula01...COLETOR DE LIXO – GARBAGE COLLECTION |Em muitas

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.

Page 45: INSTITUTO FEDERAL DE EDUCAÇÃO INSTITUTO FEDERAL DE ...docente.ifrn.edu.br/ebertonmarinho/disciplinas/estrutura-de-dados/aula01...COLETOR DE LIXO – GARBAGE COLLECTION |Em muitas

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).

Page 46: INSTITUTO FEDERAL DE EDUCAÇÃO INSTITUTO FEDERAL DE ...docente.ifrn.edu.br/ebertonmarinho/disciplinas/estrutura-de-dados/aula01...COLETOR DE LIXO – GARBAGE COLLECTION |Em muitas

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.

Page 47: INSTITUTO FEDERAL DE EDUCAÇÃO INSTITUTO FEDERAL DE ...docente.ifrn.edu.br/ebertonmarinho/disciplinas/estrutura-de-dados/aula01...COLETOR DE LIXO – GARBAGE COLLECTION |Em muitas

CLASSES E OBJETOS

Objetos são instâncias das classes.

Page 48: INSTITUTO FEDERAL DE EDUCAÇÃO INSTITUTO FEDERAL DE ...docente.ifrn.edu.br/ebertonmarinho/disciplinas/estrutura-de-dados/aula01...COLETOR DE LIXO – GARBAGE COLLECTION |Em muitas

CLASSES E OBJETOS

Implementação

Page 49: INSTITUTO FEDERAL DE EDUCAÇÃO INSTITUTO FEDERAL DE ...docente.ifrn.edu.br/ebertonmarinho/disciplinas/estrutura-de-dados/aula01...COLETOR DE LIXO – GARBAGE COLLECTION |Em muitas

CLASSES E OBJETOS

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

Page 50: INSTITUTO FEDERAL DE EDUCAÇÃO INSTITUTO FEDERAL DE ...docente.ifrn.edu.br/ebertonmarinho/disciplinas/estrutura-de-dados/aula01...COLETOR DE LIXO – GARBAGE COLLECTION |Em muitas

MÉTODOS

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

Page 51: INSTITUTO FEDERAL DE EDUCAÇÃO INSTITUTO FEDERAL DE ...docente.ifrn.edu.br/ebertonmarinho/disciplinas/estrutura-de-dados/aula01...COLETOR DE LIXO – GARBAGE COLLECTION |Em muitas

MÉTODOS

Page 52: INSTITUTO FEDERAL DE EDUCAÇÃO INSTITUTO FEDERAL DE ...docente.ifrn.edu.br/ebertonmarinho/disciplinas/estrutura-de-dados/aula01...COLETOR DE LIXO – GARBAGE COLLECTION |Em muitas

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

Page 53: INSTITUTO FEDERAL DE EDUCAÇÃO INSTITUTO FEDERAL DE ...docente.ifrn.edu.br/ebertonmarinho/disciplinas/estrutura-de-dados/aula01...COLETOR DE LIXO – GARBAGE COLLECTION |Em muitas

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

Page 54: INSTITUTO FEDERAL DE EDUCAÇÃO INSTITUTO FEDERAL DE ...docente.ifrn.edu.br/ebertonmarinho/disciplinas/estrutura-de-dados/aula01...COLETOR DE LIXO – GARBAGE COLLECTION |Em muitas

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

Page 55: INSTITUTO FEDERAL DE EDUCAÇÃO INSTITUTO FEDERAL DE ...docente.ifrn.edu.br/ebertonmarinho/disciplinas/estrutura-de-dados/aula01...COLETOR DE LIXO – GARBAGE COLLECTION |Em muitas
Page 56: INSTITUTO FEDERAL DE EDUCAÇÃO INSTITUTO FEDERAL DE ...docente.ifrn.edu.br/ebertonmarinho/disciplinas/estrutura-de-dados/aula01...COLETOR DE LIXO – GARBAGE COLLECTION |Em muitas

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.

Page 57: INSTITUTO FEDERAL DE EDUCAÇÃO INSTITUTO FEDERAL DE ...docente.ifrn.edu.br/ebertonmarinho/disciplinas/estrutura-de-dados/aula01...COLETOR DE LIXO – GARBAGE COLLECTION |Em muitas

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.

Page 58: INSTITUTO FEDERAL DE EDUCAÇÃO INSTITUTO FEDERAL DE ...docente.ifrn.edu.br/ebertonmarinho/disciplinas/estrutura-de-dados/aula01...COLETOR DE LIXO – GARBAGE COLLECTION |Em muitas

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);

Page 59: INSTITUTO FEDERAL DE EDUCAÇÃO INSTITUTO FEDERAL DE ...docente.ifrn.edu.br/ebertonmarinho/disciplinas/estrutura-de-dados/aula01...COLETOR DE LIXO – GARBAGE COLLECTION |Em muitas

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

Page 60: INSTITUTO FEDERAL DE EDUCAÇÃO INSTITUTO FEDERAL DE ...docente.ifrn.edu.br/ebertonmarinho/disciplinas/estrutura-de-dados/aula01...COLETOR DE LIXO – GARBAGE COLLECTION |Em muitas

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

Page 61: INSTITUTO FEDERAL DE EDUCAÇÃO INSTITUTO FEDERAL DE ...docente.ifrn.edu.br/ebertonmarinho/disciplinas/estrutura-de-dados/aula01...COLETOR DE LIXO – GARBAGE COLLECTION |Em muitas

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()

Page 62: INSTITUTO FEDERAL DE EDUCAÇÃO INSTITUTO FEDERAL DE ...docente.ifrn.edu.br/ebertonmarinho/disciplinas/estrutura-de-dados/aula01...COLETOR DE LIXO – GARBAGE COLLECTION |Em muitas

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;

Page 63: INSTITUTO FEDERAL DE EDUCAÇÃO INSTITUTO FEDERAL DE ...docente.ifrn.edu.br/ebertonmarinho/disciplinas/estrutura-de-dados/aula01...COLETOR DE LIXO – GARBAGE COLLECTION |Em muitas

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.

Page 64: INSTITUTO FEDERAL DE EDUCAÇÃO INSTITUTO FEDERAL DE ...docente.ifrn.edu.br/ebertonmarinho/disciplinas/estrutura-de-dados/aula01...COLETOR DE LIXO – GARBAGE COLLECTION |Em muitas

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() {}}

Page 65: INSTITUTO FEDERAL DE EDUCAÇÃO INSTITUTO FEDERAL DE ...docente.ifrn.edu.br/ebertonmarinho/disciplinas/estrutura-de-dados/aula01...COLETOR DE LIXO – GARBAGE COLLECTION |Em muitas

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.

Page 66: INSTITUTO FEDERAL DE EDUCAÇÃO INSTITUTO FEDERAL DE ...docente.ifrn.edu.br/ebertonmarinho/disciplinas/estrutura-de-dados/aula01...COLETOR DE LIXO – GARBAGE COLLECTION |Em muitas

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);//...

Page 67: INSTITUTO FEDERAL DE EDUCAÇÃO INSTITUTO FEDERAL DE ...docente.ifrn.edu.br/ebertonmarinho/disciplinas/estrutura-de-dados/aula01...COLETOR DE LIXO – GARBAGE COLLECTION |Em muitas

CONSTRUTOR

Page 68: INSTITUTO FEDERAL DE EDUCAÇÃO INSTITUTO FEDERAL DE ...docente.ifrn.edu.br/ebertonmarinho/disciplinas/estrutura-de-dados/aula01...COLETOR DE LIXO – GARBAGE COLLECTION |Em muitas
Page 69: INSTITUTO FEDERAL DE EDUCAÇÃO INSTITUTO FEDERAL DE ...docente.ifrn.edu.br/ebertonmarinho/disciplinas/estrutura-de-dados/aula01...COLETOR DE LIXO – GARBAGE COLLECTION |Em muitas

EXERCÍCIOS

Page 70: INSTITUTO FEDERAL DE EDUCAÇÃO INSTITUTO FEDERAL DE ...docente.ifrn.edu.br/ebertonmarinho/disciplinas/estrutura-de-dados/aula01...COLETOR DE LIXO – GARBAGE COLLECTION |Em muitas

DÚVIDAS

e-mail:[email protected]@ifrn.edu.br

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

7070