Você está na página 1de 155

AfroDev

• Apresentação;
• O que é e para que serve Programação;
• 5 principais linguagens de programação;
• Porque programar em Java;
• Plataformas Java;
• Maquina Virtual (JVM);

Agenda • Eclipse / IntelliJ – montagem de ambiente e Debug


• HelloWorld – Primeiro Código
• Conceitos básicos Programação Orientada a Objetos – Java;
• Exercícios de fixação;
• UML – Diagrama de Classe;
• HashSet
• Mariana Mian
Quem sou eu? • Formada em Ciência da Computação com
pós graduação em desenvolvimento de
https://www.linkedin.com/in/mariana-mian56b80210/
software O.O. com MBA em gestão de
mariana_mian@Hotmail.com projetos PMI.
19971707001 • Atuo na área de tecnologia ~15anos.
• Iniciei minha carreira como Desenvolvedora
de software (Java) e hoje atuo como Gerente
executiva de TI.
Apresentação
• Programar significa uma ação de planejar e dar instrução a
alguma coisa para que ela funcione de um jeito específico.
Imagine que você seja o gestor de uma empresa com alguns

O que é funcionários. Ou um professor de uma turma numa escola.

• Numa empresa, não são incomuns situações deste tipo:


programação “fulano, preciso que você faça isso e me entregue os relatórios
até tal hora”. Já num ambiente escolar, é comum ver o professor
falar com os alunos desta forma: “leiam a página tal e depois
completem o exercício”.

• Programar é basicamente isso. Só que não se envolvendo


diretamente com pessoas, mas com códigos e linguagens de
programação que comandam o funcionamento de diversas
funções em computadores, dispositivos móveis, softwares, jogos
eletrônicos, aplicativos, aparelhos eletrônicos e até mesmo
robôs.
• A programação é um dos pilares que sustenta e move o
mundo da tecnologia. Ela simplesmente está em todos os

Para quê a lugares: na televisão, na geladeira, no ar condicionado, nos


aparelhos celulares, nos computadores e aí por vaí.
• E o papel do programador nisso tudo é criar códigos e

programação usar as linguagens de escrita de programação para que todos


esses dispositivos funcionem da maneira como se espera.
• O ato de programar serve para ter certeza, por exemplo,

serve? de que um computador vai mesmo carregar o seu sistema


operacional assim que ele for iniciado. E que não vai agir ou
executar uma tarefa diferente para a qual ele não foi
programado.
O que você • Se você está interessado em como programar
ou ampliar seus conhecimentos na área, é possível
pode fazer que também já tenha pensado em que tipos de
coisas gostaria de criar e desenvolver usando

com códigos e linguagens de programação.

• Pois saiba que as possibilidades são muitas.


programação? Tudo depende do seu interesse com o que você
gostaria de trabalhar e se especializar no seu dia
a dia.
• Python - Criada nos anos 90, a linguagem Python
pode ser usada para várias finalidades na
5 linguagens de programação. Você pode criar aplicações web,
jogos eletrônicos, soluções para sistemas
programação operacionais e até desenvolver inteligência
artificial para a indústria da robótica.
mais usadas • C - A linguagem C foi criada em 1972. Mas isso não
quer dizer que ela esteja desatualizada. Muito pelo
contrário: ela é constantemente melhorada e
continua sendo uma das mais populares e usadas
no mundo da programação. C é amplamente usada
para programar softwares ou funções que se
relacionam diretamente com o hardware de um
dispositivo.
• Java - Surgido na década de 90, a linguagem Java
continua sendo uma das mais usadas na
programação atualmente. E ainda que divida opiniões,
sua sintaxe de codificação é parecida com linguagens
5 linguagens de mais antigas, como a linguagem C. Um dos destaque
da linguagem Java é que ela é multiplataforma. A
partir do momento que o desenvolvedor cria e finaliza
programação um código, ele fica disponível para ser usado em
outras plataformas, tamanho o nível de portabilidade
mais usadas da sua linguagem.
• C++ -Surgida na década de 80, a linguagem C++ é
baseada na linguagem C, só que com melhorias
avançadas, voltadas a aplicações e soluções mais
complexas no universo da computação. Como
especialista em linguagem C++, um programador é
capaz de desenvolver jogos eletrônicos, programas
dedicados tratamento de imagens, tocadores de
áudio, sistemas operacionais e editores de texto.
• C# -Criada e lançada pela Microsoft em 2002, a linguagem C# chegou
para flexibilizar o desenvolvimento de aplicativos. Mas não aplicativos
para dispositivos eletrônicos e móveis, mas para projetos e soluções
para a plataforma .NET Framework, também da gigante.
Um dos diferenciais da linguagem C# é que a sua sintaxe de
5 linguagens de codificação foi baseada nas linguagens Java e C++. Então se você já
domina uma destas linguagens, poderá aprender as particularidades
da linguagem C# sem grandes dificuldades.
programação mais • PHP -Não podemos deixar de mencionar algo sobre linguagem PHP.
usadas Simplesmente porque ela continua sendo uma das mais usadas no
mundo. PHP é o acrônimo para Personal Home Page, que mais tarde
foi transformado em PHP Hipertext Preprocessor.A linguagem PHP é
usada principalmente para criar sites dinâmicos na internet. Ela é
usada em gerenciadores de conteúdo (CMS) que contam com muitos
recursos para publicação de textos, fotos, vídeos e links. É o caso das
plataformas WordPress, Joomla e Drupal.
• O Java é atualmente uma das linguagens mais utilizadas em todo o mundo, em ainda em crescimento nas
empresas, através de novas adoções. Nos últimos anos o Java vem sendo usado por todo o mundo dentre as
características podemos citar as seguintes:
Porque • Aprenda Java e programe em uma qualquer plataforma: Uma das grandes vantagens do Java é que ele além de
Java? ser uma linguagem é uma plataforma de desenvolvimento. Com ele é possível desenvolver aplicações para desktop,
celular, cartão, web, televisão digital, etc. (as plataformas serão descritas melhor no decorrer deste artigo).

• Comunidades: Os grupos de usuários Java são muito fortes em todo o mundo e graças a eles é possível obter
material para estudos de maneira fácil, participar de encontros regionais, palestras e até minicursos.

• Grande número de frameworks: Existem hoje uma variedade de frameworks que visam facilitar o trabalho do
desenvolvedor.

• O Java não roda somente Java: A máquina virtual Java atualmente roda cerca de 350 linguagens com pontos
interessantes, por exemplo, o Groovy linguagem dinâmica, Scala que é específica para concorrência dentre outras
linguagens como JPython , Python, Jruby e o Ruby.

• Desenvolva em qualquer sistema operacional para qualquer sistema operacional: Quando se compila um
arquivo em Java ele gera um bytecode que é interpretado numa JVM. Basta seu sistema operacional ter uma JVM,
é possível executar o Java nos sistemas operacionais Windows, GNU/Linux e Mac.
Montando Ambiente

IDE - intellij ou Eclipse


https://www.jetbrains.com/idea/download

https://www.eclipse.org/downloads/packages/installer

Pacote desenvolvedor –
Clique aqui para baixar o JDK

JRE = Java Runtime Environment, ambiente de execução Java, formado pela JVM
e bibliotecas, tudo que você precisa para executar uma aplicação Java.

JDK = Java Development Kit: faremos o download do JDK do Java SE (Standard


Edition).

Ele é formado pela JRE somado a ferramentas, como o compilador. Tanto o JRE e
o JDK podem ser baixados do site http://www.oracle.com/technetwork/java/.
Para criar um novo
projeto abra a IDE, que
instalamos na aula
anterior, e escolha a
opção Create New
Project.
• Na tela de criação do projeto, devemos escolher a
opção Java, no menu à esquerda, e em seguida clicar
sobre o botão Next.
• Na figura abaixo vemos em Project SDK a versão do
JDK reconhecida pela IDE selecionada.
Não precisa selecionar nada , pois não
iremos iniciar com código pronto.

• Pode ser que a IDE não reconheça a


instalação do JDK e, se esse for o caso,
siga esses passos:
• Clique em New
• Navegue até a pasta onde o JDK foi
instalado
• Clique em Ok para finalizar
Como último
passo, escolha
um nome para o
projeto e clique
em Finish.
• Java é uma linguagem em que todo
código deve estar contido em uma classe,
escrita em um arquivo com a extensão .java.

• Para criar uma classe, clicamos com o


botão direito sobre a pasta src, e
escolhemos a opção new → Java Class.
Instalando - Eclipse
Criando projeto -
Eclipse

• Para criar um novo projeto, vá em File -> New ->


Project. Seleciona Java Project e clique em Next.
PEQUENOS TRUQUES - Eclipse

• O Eclipse possui muitos atalhos úteis para o programador. Sem dúvida os 3 mais importantes de conhecer e de praticar são:
• Ctrl + 1 Aciona o quick fixes com sugestões para correção de erros.
• Ctrl + Espaço Completa códigos
• Ctrl + 3 Aciona modo de descoberta de menu. Experimente digitar Ctrl+3 e depois digitar ggas e enter. Ou então de Ctrl + 3 e digite new class.
• Ctrl + F11 roda a última classe que você rodou. É o mesmo que clicar no ícone verde que parece um botão de play na barra de ferramentas.
• Ctrl + PgUp e Ctrl + PgDown Navega nas abas abertas. Útil quando estiver editando vários arquivos ao mesmo tempo.
• Ctrl + Shift + F Formata o código segundo as convenções do Java
• Ctrl + M Expande a View atual para a tela toda (mesmo efeito de dar dois cliques no título da View)
• Ctrl + Shift + L Exibe todos os atalhos possíveis.
• Ctrl + O Exibe um outline para rápida navegação
• Alt + Shift + X e depois J Roda o main da classe atual. Péssimo para pressionar! Mais fácil você digitar Control+3 e depois digitar Run!. Abuse desde já do
Control+3
Plataformas Java:
O Java não se resume em uma linguagem, mas é uma plataforma de desenvolvimento.

• JSE: Java Standard Edition. A versão básica do Java com ela é possível desenvolver diversos
aplicativos para desktop, normalmente aqueles que querem se aprofundar nessa tecnologia
começam por essa plataforma. Existem pacotes para se desenvolver programas em console ou,
por exemplo, Swing que se pode desenvolver software com interface gráfica.

• JME: Java Micro Edition é a plataforma voltada para o desenvolvimento de embarcados e


dispositivos móveis, atualmente essa plataforma é muito popular entre os celulares. Ela foi
dividida em duas frentes: Para os dispositivos com poder computacional limitado CLDC,
Connected Limited Device Configuration, e dispositivos com um poder computacional um pouco
maior CDC, Connected Device Configuration.
Plataformas Java:
O Java não se resume em uma linguagem, mas é uma plataforma de desenvolvimento.

• Java TV: Dentro da plataforma JME, o Java TV traz uma API que ter permite o desenvolvimento para a
Televisão Digital com recursos como fluxo de áudio e vídeo, acesso aos dados nos canais de transmissão,
sincronia das mídias dentre outros. Esta tecnologia veio a ser amplamente estudada e desenvolvida após a
definição do padrão de televisão digital brasileiro.

• Java FX: Essa plataforma visa a criação da Internet rica, aplicações web com características de um
programa tradicional de um desktop, em diversos dispositivos (desktop, browser, telefone celulares, TVs,
video-games, Blu-rays players etc.).

• JEE: Java Enterprise Edition é uma versão voltada para as empresas e para aplicativos web. Uma grande
característica dessa plataforma é a necessidade de um servidor de aplicação. Recebeu a atualização para a
versão 6, dentre os frameworks dessa plataforma podemos citar: JSP (Java Server Pages): De uma maneira
geral ele executa Java em sua página.
Plataformas Java:

• JPA (Java Persistence API): Ele funciona como um padrão dos padrões de persistência. Com
ele se pode modificar de framework de persistência (hibernate, toplink etc) com impacto zero
em sua aplicação.
• JSF (Java Server Faces): Framework responsável pela camada de visão muito indicado para
programas que utilizarão o padrão MVC (Model View Control), uma de suas características é o
uso do AJAX de maneira nativa.
• Java Card: Programação voltada para o desenvolvimento de cartões inteligentes. Um dos
seus principais benefícios do seu uso é a portabilidade e a segurança. Esses dispositivos vêm
crescendo nos últimos anos e tendem a crescer ainda mais.
Sintaxe Java
Java - Introdução

• Java é uma linguagem de programação orientada a objetos e baseada em classes, muito utilizada
na programação web back-end e na programação mobile para Android.
• O objetivo dessa Aula é construir um programa, que escreve a frase Hello World no terminal
utilizando a linguagem Java.
• E pra chegar nesse resultado daremos dois passos fundamentais no aprendizado do Java que são:
• Criar uma primeira classe
• Criar uma instância dessa classe
• Esses dois passos serão reproduzidos diversas vezes ao escrever programas em Java.
O comando utilizado para escrever no
terminal possui a seguinte estrutura:

• Aqui utilizamos o
objeto System.out para invocar
o método println(), que pode
System.out.println(); receber como parâmetro o
texto que desejamos imprimir
no terminal.
Implementando “Hello World”:
• public class HelloWorld { Classe

Metodo
• public void sayHello() {
• // Imprime a mensagem Hello World! no terminal
• System.out.println("Hello World!");
• }
•}
Classes:
• Uma classe nada mais é do que um projeto que abstrai um conjunto de objetos com
características similares.
• Uma classe define o comportamento de seus objetos através de métodos e os estados possíveis
destes objetos através de atributos.
• Em outros termos, uma classe descreve os serviços providos por seus objetos e quais
informações eles podem armazenar.
Note que uma Classe não tem vida, é só um conceito.
• Mas os Objetos possuem vida.
• Classes não são diretamente suportadas em todas as linguagens, e são necessárias para que
uma linguagem seja orientada a objetos.
• Classes são os elementos primordiais de um diagrama de classes.
CLASSES E
OBJETOS

• Classe: a ideia do que seria um objeto, a


descrição de uma pré-classificação já
existente.

• Objeto: é o real, o que existe, que segue


as ideias definidas acerca daquele objeto
New

Quando damos new em um objeto, ele o inicializa com seus valores default,
0 para números, false para boolean e null para referências.
null é uma palavra chave em java, que indica uma referência para nenhum
objeto.

Se, em algum caso, você tentar acessar um atributo ou método de alguém que
está se referenciando para null, você receberá um erro durante a execução
(NullPointerException)
Instanciar uma Classe
Vamos criar uma nova classe , chamada Program e
instanciar a classe HelloWorld invocando o método SayHello.

public class Program {

public static void main (String args[]) {

HelloWorld helloworld = new HelloWorld();


Usamos o Operador New, para
helloworld.sayHello(); instanciar uma classe.

}
}
}

}
MÁQUINA VIRTUAL Esse código executável (binário) resultante
será executado pelo sistema operacional e,
Linguagem Compilada
por esse motivo, ele deve saber conversar
com o sistema operacional em questão.
Algumas linguagens de programação como C ou
Pascal é necessário compilar o código para
diferentes sistemas operacionais
MÁQUINA VIRTUAL
Linguagem Interpretada

Entre o sistema operacional e a


aplicação podemos encontrar uma
camada que será responsável por
traduzir o código Java.
Essa camada é chamada de Máquina
virtual. A aplicação será executada independente do
sistema Operacional!
Com isso, não precisaremos nos Conversando unicamente com a Java Virtual
preocupar em qual sistema Machine (JVM).
operacional nossa aplicação será
executada.
UML (Unified Modeling Language)
Diagrama de Classes

• O diagrama de classes, tem como objetivo principal a especificação dos


componentes do software e como estes se interligam, do ponto de vista
estrutural, ou seja, da sua estrutura.
• O importante é entender o contexto no qual o diagrama será aplicado, para
então usá-lo da melhor forma.
• Uma classe, na UML (e na Orientação a Objetos também) possui três
compartimentos, sendo para: Nome (primeiro), Atributos (segundo)
e Operações (terceiro).
UML (Unified Modeling Language)
Diagrama de Classes
UML - Os tipos de visibilidade dos atributos
e métodos de uma classe são:

public: é visto por todos os membros internos da classe


e qualquer membro externo à classe em que está
declarado;

private: é visto apenas pelos elementos da classe,


subclasses (métodos de acesso);

protected: os elementos são acessíveis somente pela


própria classe ou pelas subclasses;
UML – Noções de Herança:
UML – Noções de Herança:
• Quando fazemos o uso de um diagrama de classes no dia a dia da
UML – Diagrama de produção de software, nem sempre é necessário/relevante
representar cada classe no menor nível de detalhe , ou seja, com os
Classes três compartimentos, e com todo rigor nas especificações dos
atributos e operações.
• O objetivo é demonstrar as classes, seus relacionamentos, e cada classe com seu
UML – Diagrama de escopo completo.
• Quando a empresa realiza projeto formal do software, utilizando ferramentas case,
Classes modelos de classes que serão utilizados para outra empresa (ou a mesma até) para
entendimento sobre o software a ser construído.
Exemplo com maior detalhamento • O profissional precisa (ou entende ser necessário) dar 100% de contexto às classes,
detalhando seus atributos e suas operações, para que se compreenda melhor o escopo
de cada classe do modelo e como isso compõe o entendimento sobre as relações entre
as classes.
Declarando Variáveis – Regras basicas

Para criar um identificador (nome da variável) em Java, precisamos seguir algumas regras,
listadas a seguir:

• Deve conter apenas letras, _ (underline), $ ou os números de 0 a 9;


• Deve obrigatoriamente se iniciar por uma letra ;
• Deve iniciar com uma letra minúscula ;
• Não pode conter espaços;
• Não podemos usar palavras-chave da linguagem;
• O nome deve ser único dentro de um escopo;
• Como boa pratica – deve iniciar com letra minuscula;
Exercício de fixação:

Uma estação ferroviária é composta por 1 ou mais linhas ferroviárias. Em uma linha ferroviária
podem estar estacionados diversos recursos ferroviários. Recursos ferroviários são vagões,
locomotivas ou trens. Um trem é formado por vagões e locomotivas. Podem existir vagões e
locomotivas estacionadas em uma linha sem estarem na formação de um trem. Uma estação
ferroviária tem uma sigla e uma descrição (que não precisa obrigatoriamente possuir um valor). Uma
linha ferroviária tem um número (que a diferencia de outra linha dentro da mesma estação), uma
extensão em metros e uma descrição (que não precisa obrigatoriamente ter um valor). Um vagão é
descrito por um número de série, tipo, capacidade de carga (valor default igual a 3000 ton),
comprimento entre testeiras e comprimento dos engates (um único valor correspondendo aos dois
lados). Uma locomotiva é descrita por um número de série, capacidade de tração e comprimento. Um
trem é descrito por um prefixo (ex: NAG1010) e data/hora de formação. Um trem é formado em uma
estação ferroviária de origem e tem como destino, uma outra estação ferroviária, ou seja, a estação de
origem não pode ser igual à estação de destino. Todo trem é formado por pelo menos uma
locomotiva e um vagão. Um trem não pode ter mais do que 150 recursos (vagões
e locomotivas).
Elabore um diagrama de classes (UML) ilustrando os conceitos (classes, atributos e relacionamentos)
e restrições mencionados no texto. Não esqueça de colocar os tipos, valor default e multiplicidade
dos atributos.
Restrições:
Um trem é formado por vagões e locomotivas estacionados na mesma linha
Podem existir vagões e locomotivas estacionadas em uma linha sem estarem na formação de um trem
A estação de origem não pode ser igual à estação de destino
Resposta Exercício de fixação:
Sintaxe
Para declarar uma classe em java, utilizamos a palavra reservada class seguida pelo nome da
classe.
Na sequencia, entre chaves, definimos os elementos da classe: atributos, construtores e
métodos.
Sintaxe de declaração de classe:

<modificador de acesso> class NomeDaClasse {

// Local onde atributos, construtores e métodos são criados

}
Sintaxe – modificador de acesso
Precisaremos especificar o modificador de acesso, que, por meio dele informamos a
visibilidade da classe, que pode ser public, private ou default.

public class Produto {

private String nome;


private int quantidade;

public Produto() {
// Código do construtor
}

public void apresentarProduto() {


// Código do método
}

}
A classe Produto foi declarada como public, poderá ser utilizada por todas as classes do projeto.
Regras para nomeação de classes

Ao nomear uma classe algumas convenções devem ser seguidas:

1.Manter o nome simples e descritivo;

2.Usar palavras inteiras, isto é, sem siglas e abreviações;

3.A primeira letra de cada palavra deve estar em caixa alta.


Tipos de variáveis

• Variáveis Locais
• Podem ser utilizadas dentro do método onde foram declaradas, não sendo
acessíveis de outros pontos do programa.

• Variáveis de Classe
• Variáveis declaradas como estáticas são variáveis compartilhadas entre todos os
objetos instanciados a partir de uma classe. Por isso, essas variáveis também são
conhecidas como Variáveis de Classe.
Variáveis
Tipo Descrição
boolean Pode assumir o valor true ou o valor false

Caractere em notação Unicode de 16 bits. Serve para a armazenagem de dados alfanuméricos. Também pode ser usado como um
char 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ível 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. Pode assumir valores entre -263 e 263-1.

Representa números em notação de ponto flutuante normalizada em precisão simples de 32 bits em conformidade com a norma
float IEEE 754-1985. O menor valor positivo representável por esse tipo é 1.40239846e-46 e o maior é 3.40282347e+38

Representa números em notação de ponto flutuante normalizada em precisão dupla de 64 bits em conformidade com a norma IEEE
double 754-1985. O menor valor positivo representável é 4.94065645841246544e-324 e o maior é 1.7976931348623157e+308
Declaração e inicialização
Qual a diferença entre declaração e inicialização?

• A declaração de uma variável já vimos anteriormente. Se trata


deste pequeno comando que une tipo + nome:

• Também já vimos a inicialização de uma variável, que é o


comando abaixo:
Exemplo Tipos Primitivos Float e Double
/*
*

* Exemplo de utilização dos tipos primitivos float e double.


*/
public class ExemploTipoPrimitivo2 {
public static void main(String[] args) {
//Definindo explicitamente que o valor é float.
float a = 10.99f;

//Definindo explicitamente que o valor é double.


double b = 10.3D;

//Atribuindo o valor inteiro para um tipo double.


double c = 5;

/* Atribuindo um valor double, por padrão todos números


com casas decimais são do tipo double. */
double d = 7.2;

System.out.println(a); // Imprime 10.99


System.out.println(b); // Imprime 10.3
System.out.println(c); // Imprime 5.0
System.out.println(d); // Imprime 7.2
}
}
Exercício

• Crie um programa que armazene em variáveis os seguintes dados:

• Seu nome
• Seu endereço
• Sua idade
• Seu estado civil, representado por uma letra (C, S, V, D, E, etc)
• O salário, armazenado como tipo float.

E que depois exiba essas informações no console, uma por linha, como em um pequeno relatório.

DICA para usar no Printf:


%f = ponto flutuante
%d = inteiro
%s = texto
%n = quebra de linha
Resultado Exercício
O IF E O ELSE

A sintaxe é simples:

if (condicaoBooleana) {
codigo; public static void main(String[] args) {
int idade = 18;
}
if (idade < 18) {
System.out.println("Não pode entrar");
Qualquer expressão que retorne true } else {
ou false é uma condição booleana. System.out.println("Entrada Liberada");
}}
Costumamos usar os operadores: < , >
, <= , >=

Você pode concatenar expressões booleanas através dos operadores lógicos "E" e "OU".
O "E" é representado pelo && e o "OU" é representado pelo || .
Ex: if (idade < 18 && !amigoDoDono )
Classe Scanner

import java.util.Scanner;

Para fazer essa ação na prática, é necessário criar um objeto do tipo Scanner
que passa como argumento o objeto System.in dentro construtor

Scanner sc = new Scanner(System.in);

O objeto System.in é o que faz a leitura do que se escreve no teclado


Classe Scanner – Invocando métodos

Como são invocados alguns dos métodos principais:

Scanner sc = new Scanner(System.in);


float numF = sc.nextFloat();
int num1 = sc.nextInt();
byte byte1 = sc.nextByte();
long lg1 = sc.nextLong();
boolean b1 = sc.nextBoolean();
double num2 = sc.nextDouble();
String nome = sc.nextLine();

Sempre seguindo o formato nextTipoDado();


Métodos da Classe Scanner
Método Descrição
close() Fecha o escaneamento de leitura.
Encontra a próxima ocorrência de um padrão ignorando máscaras
findInLine()
ou strings ignorando delimitadores.
Retorna um valor booleano verdadeiro (true) se o objeto Scanner
hasNext()
tem mais dados de entrada.
Retorna um valor booleano como verdadeiro (true) se a próxima
hasNextXyz() entrada a qual Xyz pode ser interceptada como Boolean, Byte,
Short, Int, Long, Float ou Double.
match() Retorna o resultado da pesquisa do último objeto Scanner atual.
Procura e retorna a próxima informação do objeto Scanner que
next()
satisfazer uma condição.
nextBigDecimal(), nextBigInteger() Varre a próxima entrada como BigDecimal ou BigInteger.
Varre a próxima entrada a qual Xyz pode ser interceptado como
nextXyz()
boolean, byte, short, int, long, float ou double.
Mostra a linha atual do objeto Scanner e avança para a próxima
nextLine()
linha.
radix() Retorna o índice atual do objeto Scanner.
Essa operação não é suportada pela implementação de um
remove()
Iterator.
Salta para a próxima pesquisa de um padrão especificado
skip()
ignorando delimitadores.
string() Retorna uma string que é uma representação do objeto Scanner.
Exercício Scanner

1- Crie uma classe Leitor;

2- No console, pergunte Qual seu nome?

3- Leia o nome e imprime Ola (inclua o nome digitado), qual sua idade?;

4- Leia a idade e escreva : Ah! então voce tem : (idade digitada) anos nome digitado
Resposta Exercício Scanner
import java.util.Scanner;

public class Leitor {

public static void main (String [] args) {


Scanner leitor = new Scanner(System.in);

System.out.println(" Qual seu nome? ");


String nome = leitor.next();
System.out.println(" Ola " + nome + ", qual a sua idade?:");
String idade = leitor.next();
System.out.println(" Ah! então voce tem : " + idade +" anos " + nome);

}
O WHILE

while (idade <18){


System.out.println(idade);
O while é um comando para idade = idade +1;
repetir algo (trecho de }
código) enquanto uma
condição for verdadeira.
Exercício – WHILE usando Scanner

Usando apenas a classe scanner e o comando


while , o programa solicitara um numero de
telefone e ira imprimir 5 vezes na tela.

************
O mesmo faremos na sequencia utilizando
texto.

(Digitar um texto e imprimir 5 vezes )


Exercicio – WHILE usando Scanner -
Telefone

import java.util.Scanner;

public class ContaTokens {


public static void main(String[] args) {
int i = 0;
Scanner sc = new Scanner(System.in);
System.out.print("Digite um telefone:");
while(sc.hasNext() && i<6){
i++;
System.out.println("Telefone: "+sc.nextInt());
}
sc.close();
→ System.exit(0); //Encerra o programa
}
}
Exercicio – WHILE usando Scanner –
Texto

import java.util.Scanner;

public class ContaTokens {


public static void main(String[] args) {
int i = 0;
Scanner sc = new Scanner(System.in);
System.out.print("Digite um texto:");
while(sc.hasNext() && i<6){
i++;
System.out.println(”Texto: "+sc.next());
}
sc.close(); //Encerra o programa
→ System.exit(0);
}
}
Exercício Scanner usando 2 classes
Crie duas classes.

1- Crie uma classe 1 e um método onde você digita um texto,


esse método ira ler o que foi digitado no console e imprimir usando o while imprimir
5 vezes.
2 –crie uma nova classe contendo o método main e invocando o classe 1.
Exercício Scanner usando 2 classes
import java.util.Scanner;

public class ContaTokens { public class MainContaTokens {

public void imprimiContaToken(String textoDigitado){ public static void main(String[] args) {


int i = 0;
Scanner sc = new Scanner(System.in); System.out.print("Digite um texto novo:");
textoDigitado = sc.nextLine();
String textoDigitado= "";
while(sc.hasNext() && i <5){
i++; ContaTokens contaTokens = new ContaTokens();
System.out.println("Aqui esta seu texto novo:"+textoDigitado
); contaTokens.imprimiContaToken(textoDigitado);
}
}
sc.close(); //Encerra o programa }
}
}
O FOR

É um comando de loop muito utilizado, for(int i=0; i<2;i=i+1){


parecido com while ,porem, além de System.out.println("olá!");
executar um trecho de código }
repetidamente , ele de deixa um espaço
para iniciar uma variável, informar a
condição que o trecho ira se repetir e
incluir um incremento.
O FOR
switch
A estrutura switch é também chamada de estrutura de múltipla seleção porque compara um valor
com múltiplas alternativas e, uma vez que haja uma correspondência entre eles, é executado um
trecho de código.

switch(valor) {
case alternativa1:
código1;
break;
case alternativa2:
código2;
break;
case default:
códigoPadrão;
}
Switch - Exercício

Crie uma classe

Solicite que a pessoa escolha uma linguagem : Java ou C

Crie um bloco switch, mostrando a frase "Melhor escolha! Esta


linguagem é Orientada a Objetos” Se a escolha for JAVA.

Se a escolha for C mostre a mensagem "Esta liguagem é estruturada”

E se a pessoa digitar qualquer outra opção , mostre a mensagem :

"Linguagem desconhecida"
Switch - Resposta
import java.util.Scanner;

public class ExemploAula5 {

public static void main (String [] args ) {


Scanner leitor = new Scanner(System.in);
System.out.println(" Escolha uma linguagem: Java ou C ");
String nome = leitor.next();

switch (nome) {
case "Java":
System.out.println("Melhor escolha! Esta linguagem é Orientada a Objetos");
break;
case "C":
System.out.println("Esta liguagem é estruturada");
break;
default:
System.out.println("Linguagem desconhecida");
}

}
}
switch

Execute o código
anterior comentando a
palavra
//Break
switch

Neste caso todas as frases imprimiram!!!

A ausência desse comando faz com que a verificação passe para a próxima
alternativa até que todas tenham sido verificadas ou que o comando break seja
encontrado.
Atributos:
• Um atributo é uma variável declarada no corpo de uma classe.
• Os Atributos são os elementos que definem a estrutura de uma classe
(são as características de um objeto).
• Atributos são, basicamente, a estrutura de dados que vai representar a
classe.
• A declaração de um atributo especifica o seu nome, seu tipo (que pode
ser um dos tipos naturais, tais como int, char, double, float, ou o nome de
uma classe, como String ou Pessoa), você pode dar qualquer nome ao
atributo, desde que este nome não corresponda a uma palavra reservada
da linguagem.
• Por questões de padronização, o nome de um atributo sempre começa
com uma letra minúscula.
Métodos:

• Métodos são blocos de código que pertencem a uma classe e tem por
finalidade realizar uma tarefa.
• Os métodos determinam o comportamento dos objetos de uma classe,
métodos são as ações que um objeto pode realizar.
• Um método sempre tem que definir o que retorna, nem que defina que não
há retorno.
Métodos:
Queremos criar um método que saca uma determinada quantidade e não
devolve nenhuma informação para quem acionar esse método:

• class Conta {
• double salario;
• // ... outros atributos ...

• void saca(double quantidade) {
• double novoSaldo = this.saldo - quantidade;
• this.saldo = novoSaldo;
• }
• }
METODO SEM RETORNO - VOID

A palavra chave void diz que, nenhuma informação será enviada de volta a quem pediu.
Ou seja, teremos um método sem retorno.
Caso o método não retorne valor algum, é obrigatória a utilização do tipo void na assinatura do método

public void displayAge()


{
System.out.println(“Age is : ” + age);
}
METODO COM RETORNO - RETURN

É possível associar um valor de retorno a um método.


Para isso, é preciso definir, na frente do nome do método, o tipo do valor a ser retornado.
O tipo pode ser um primitivo ou então uma classe ou interface.
• public int getAge () {

• Int age;

• return age;
• }
O comando return é utilizado para passar o valor requerido de volta para quem chamou o
método e é obrigatório quando o tipo de retorno não é void.
Instância

• Assim, em programação orientada a objetos, a palavra “instanciar”


significa criar.
• Quando falamos em “instanciar um objeto”, criamos fisicamente uma
representação concreta da classe. Instância é a concretização de uma
classe.
• Quem faz o papel de instanciador em Java é o new.
• New trata de reservar memória o suficiente para o objeto e criar
automaticamente uma referência a ele.
• Para new conseguir determinar o objeto, precisamos usar o método
construtor que será usado como base para instanciar a classe e gerar o
objeto.
Os 4 pilares da Programação Orientada a
Objetos:

• Quando se programa orientado a objetos alguns itens são essenciais para


caracteriza-lo, a partir desses itens é que toda a lógica pode ser aplicada e
consequentemente todas as vantagens dessa metodologia podem ser
aproveitadas.

• Abstração
• Encapsulamento
• Herança
• Polimorfismo
Abstração:

• Abstração para a OO, nada mais é do que você observar comportamentos e


estruturas do dia a dia, e transformá-los em uma linguagem computacional.

Esse pilar, como o próprio nome diz, visa abstrair algo do mundo real e
transforma-lo em um objeto na programação.
Esse objeto será composto por uma identidade, propriedades e métodos.
Dessa forma fica mais simples trazer para dentro da programação o problema
que precisa ser resolvido ou o processo que precisará ser automatizado.
Encapsulamento

• O encapsulamento é uma das principais técnicas que define a programação


orientada a objetos.
• Essa pilar visa a proteção de variáveis importantes dentro de uma classe que
não podem ser manipuladas diretamente.
• Para fazermos um paralelo com o que vemos no mundo real, temos o
encapsulamento em outros elementos.
• Por exemplo, quando clicamos no botão ligar da televisão, não sabemos o
que está acontecendo internamente.
• Podemos então dizer que os métodos que ligam a televisão estão
encapsulados.
Herança

Uma das grandes vantagens da programação orientada a objetos é justamente


o reaproveitamento do código fonte, isso só é possível graças a herança.
Com ela uma classe pode herdar as propriedades de uma classe mestra
como por exemplo, a classe cachorro herda as propriedades da classe
mamífero.
Essa analogia indica que o cachorro tem características próprias, mas ele é
um mamífero e compartilha das mesmas características que um gato, por
exemplo, porém cada qual com suas peculiaridades.
Polimorfismo

• Outro ponto essencial na programação orientada a objetos é o chamado


polimorfismo.
• Na natureza, vemos animais que são capazes de alterar sua forma
conforme a necessidade, e é dessa ideia que vem o polimorfismo na
orientação a objetos.
• Como sabemos, os objetos filhos herdam as características e ações de seus
“ancestrais”.
Entretanto, em alguns casos, é necessário que as ações para um mesmo
método seja diferente.
• Em outras palavras, o polimorfismo consiste na alteração do funcionamento
interno de um método herdado de um objeto pai.
Exercício de fixação

Criar uma classe Conta com os seguintes atributos:


• titular;
• numeroConta;
• saldo;

• Criar um metodo void para sacar dinheiro;


• Crirar um metodo deposito que retorne novo saldo da conta do tipo doble
Resposta :

public class Conta {

int numero;
String titular;
double saldo;

void saca(double quantidade) {


double novoSaldo = this.saldo - quantidade;
this.saldo = novoSaldo;
}

double deposita (double valorDeposito) {


double novoSaldo = this.saldo + valorDeposito;
this.saldo = novoSaldo;
return novoSaldo;
Curiosidade:
Exercício de fixação

• Criar uma classe de nome Programa, instanciar o Objeto Conta e


testar os parâmetros e métodos criados anteriormente.
Resposta :

public class Programa {

public static void main(String[] args) {


Conta minhaConta;

minhaConta = new Conta();

minhaConta.titular = "Mari";
minhaConta.saldo = 100000.0;
minhaConta.deposita(1000.00);
minhaConta.saca(1300.00);

System.out.println("Saldo atual: " + minhaConta.saldo);


System.out.println("Titular: " + minhaConta.titular);
Exercício de Fixação
Escreva uma classe Carro com os atributos :

• String cor;
• String modelo;
• double velocidadeAtual;
• double velocidadeMaxima;

• E os seguintes métodos:

• void liga() -> Apenas imprimi a mensagem que o carro esta ligado;
• void acelera(double quantidade) -> recebe o valor que será a velocidade atual;
• int pegaMarcha() -> dependendo da velocidade a marcha será diferente;

• Se a velocidade for <0 retorno -1 (marcha)


• Se a velocidade for >=0 e menor que 40 retorno 1 (marcha)
• Se a velocidade for >=40 e menor que 80 retorno 2 (marcha)
• Se não retorno 3(marcha)
Resposta :
public class Carro {
String cor;
String modelo;
double velocidadeAtual;
double velocidadeMaxima;

//liga o carro
void liga() {
System.out.println("O carro está ligado");
}

//acelera uma certa quantidade


void acelera(double quantidade) {
double velocidadeNova = quantidade;
this.velocidadeAtual = velocidadeNova;
}

//devolve a marcha do carro


int pegaMarcha() {
if (this.velocidadeAtual < 0) {
return -1;
}
if (this.velocidadeAtual >= 0 && this.velocidadeAtual < 40) {
return 1;
}
if (this.velocidadeAtual >= 40 && this.velocidadeAtual < 80) {
return 2;
}
return 3;
Resposta :
import java.util.Scanner;

public class TestaCarro {

public static void main(String[] args) {


Carro meuCarro;
meuCarro = new Carro();
meuCarro.cor = "Azul";
meuCarro.modelo = "Onix";
meuCarro.velocidadeAtual = 0;
meuCarro.velocidadeMaxima = 80;

// liga o carro
meuCarro.liga();

try (Scanner leitor = new Scanner(System.in)) {


System.out.println(" DIGITE a velocidade: ");
meuCarro.velocidadeAtual = Double.parseDouble(leitor.next());
}
// acelera o carro
meuCarro.acelera(meuCarro.velocidadeAtual);

System.out.println("Velocidade atual é:" +meuCarro.velocidadeAtual+"KM/h");


System.out.println("Macha atual é:" + meuCarro.pegaMarcha());

}
Entendendo - Java

•Java é uma plataforma completa de execução, considerando os três pilares:

•A máquina virtual java (JVM);


•Um completo conjunto de APIs (bibliotecas);
•A linguagem Java.

Como começar um programa?

A linguagem Java possui várias regras que devem ser seguidas para que um programa possa ser
entendido e executado pela JVM.

class MinhaClasse {

//variáveis, métodos

}
Utilizamos a palavra chave class, em seguida informamos o nome da classe e abrimos e fechamos as
chaves.
Entendendo - Java

As classes são abstrações do mundo real para o código

class Aluno {

String nome;
String matricula;

public void realizarMatricula() {}

Por exemplo, se precisarmos criar um cadastro de alunos, podemos criar uma classe chamada Aluno
com atributos e métodos
Entendendo - Java

Declarando Variáveis

Existem variáveis locais primitivas ou de referencia, elas são locais na memória utilizado para armazenar
algum valor, para que possa ser acessado ou utilizado posteriormente.

Dois dos tipos primitivos são:


•char: contém apenas um caracter, exemplo: ‘a’, ‘b’, ‘c’;
•boolean: um valor booleano pode ser apenas true ou false.

String nome; // declara uma variável do tipo String


nome = “Mariana Mian”; // inicializa com um valor
int idade = 39; // declara e inicializa na mesma linha
System.out.println(nome+” ”+idade); // imprime o valor das variáveis na tela
Entendendo - Java

Convenções de Código Java

As convenções de código são uma boa prática de programação.


Utilizando as boas praticas seremos capazes de escrever códigos mais “ limpos ” e legíveis.

Padrões de nomeação recomendados:


Classes e interfaces: o nome das classes e/ou interfaces deve ter a primeira letra maiúscula. Caso o nome
seja formado por várias palavras, a primeira letra de cada palavra seguinte também deve ser maiúscula.

Métodos: o nome dos métodos deve ter a primeira letra minúscula. Caso o nome também seja formado
por várias palavras, a primeira letra de cada palavra seguinte deve ter a primeira letra maiúscula.

Variáveis: a nomeação das variáveis segue o mesmo padrão dos métodos. São recomendados nomes
curtos e significativos, como nomeDoAluno, saldoDaConta;

Constantes: variáveis que são constantes são criadas marcando-as como static e final. Devem ser
nomeadas com todas as letras maiúsculas
Entendendo - Java

Java é Case Sensitive: isto significa que o Java diferencia letras


maiúsculas de minúsculas, por exemplo: uma variável
chamada mensagem é diferente de outra chamada Mensagem.
Entendendo - Java

Quando uma classe é executada, a máquina virtual procura pelo método main().
Este método é o ponto de partida de todas as aplicações Java, e deve ser assinado desta forma:

public static void main(String args[]) {

//insira seu código aqui

}
Entendendo - Java

Conhecendo os Arrays

Um array é um objeto que pode armazenar vários valores. Contudo, cada array pode armazenar apenas
valores de um mesmo tipo

Podemos criar arrays de duas formas diferentes:

Int[] arrayDeInteiros = new int[2]; O primeiro (arrayDeInteiros) é um array que pode armazenar apenas dois
arrayDeInteiros[0] = 30; elementos, como foi definido no momento da instanciação.
arrayDeInteiros[1] = 50;

int[] outroArray = {230,150,2011}; O segundo array (outroArray), por sua vez, recebeu os valores no momento de
sua criação, e teve, implicitamente, seu tamanho definido para três

Para acessarmos o primeiro elemento de um array utilizamos o índice 0


Entendendo - Java
Operadores Aritméticos

O Java possui operadores para a realização de funções como: adição, subtração, multiplicação e divisão. Assim
como na álgebra, estes possuem uma ordem de precedência, ou seja, alguns cálculos são realizados antes de
outros.

Os símbolos de operadores aritméticos são:


• + – Operador de adição (também utilizado para concatenar
Strings);
• - – Operador de subtração;
• / – Operador de divisão (retorna apenas a parte inteira da
divisão, ignorando o resto);
• * – Operador de multiplicação;
• % – Operador de resto (retorna o resto da divisão).

Talvez vocês não conheçam o operador “%”.


Ele é responsável em nos retornar o resto da divisão.
Por exemplo: 5 dividido por 2 tem como resultado 2 e resto 1, logo 5%2 é igual a 1.
Entendendo - Java Operadores Aritméticos

public class OperadoresAritmeticos {

public static void main(String args[]){


int resultado = 0;
resultado = 10 + 5;
System.out.println(resultado); // imprime 15

resultado = resultado - 5;
System.out.println(resultado); // imprime 10

resultado = resultado / 2;
System.out.println(resultado); // imprime 5;

resultado = resultado * 10;


System.out.println(resultado); // imprime 50

resultado = resultado + 2;
resultado = resultado % 5;
System.out.println(resultado); // imprime 2
System.out.println(“Resultado: ” + resultado); //imprime “Resultado: 2”
}

}
Break

O break anteriormente vimos que pode ser utilizado para sair de um switch, mas também
podemos utilizá-lo para parar um while ou for.
Considere que temos um texto dividido em três seções separadas por um -, como o número de uma conta 00-
234-2333.
Agora, desejamos encontrar a posição do primeiro caractere - para extrair a primeira seção de dígitos dessa
conta.
String conta = "00-234-2333";
int posicao = 0;
Nesse caso, ao encontrar a
while(posicao < conta.length( )) { primeira ocorrência do
char c = conta.charAt(posicao); caractere -
o laço é encerrado
if(c == '-') {
break;
}

posicao++;
}
System.out.println(conta.substring(0, posicao));
return

O comando return também é utilizado para parar uma execução, geralmente de dentro de um método,
encerrando-o na linha em que return é declarado e um valor é retornado.

Exemplo retornamos true se um número for par e false se ele for ímpar.

public boolean isPar(double value) {


if(value % 2 == 0) {
return true;
}

return false;
}
Observe que uma vez que a expressão value % 2 == 0 seja verdadeira, o comando return true será
executado e o método será encerrado.
Índice de massa corporal – Exercício
Apresente uma classe Java que implementa o cálculo e a interpretação do índice de massa
corporal de um indivíduo adulto

• O Índice de Massa Corporal (IMC), que é uma medida utilizada pela Organização Mundial de Saúde para avaliar o grau de
obesidade de um indivíduo, é calculado pela relação entre o peso (em kg) dividido pelo quadrado da altura (em metros)

Levando em consideração indivíduos adultos, têm-se as seguintes classificações:

1.Valores de IMC abaixo de 18,5: adulto com baixo peso;


2.Valores de IMC maior ou igual a 18,5 e menor que 25,0: adulto com peso adequado;
3.Valores de IMC maior ou igual a 25,0 e menor que 30,0: adulto com sobrepeso;
4.Valores de IMC maior ou igual a 30,0: adulto com obesidade.
Resposta Calculo IMC
import java.util.Scanner;
public class CalculoIMC {
public static void main(String[] args) {
Scanner ler = new Scanner(System.in);
double pc, alt, vlrIMC;
System.out.printf("Informe o peso corporal (em kg):\n");
pc = ler.nextDouble();
System.out.printf("\nInforme a altura (em metros: 1,77 por exemplo):\n");
alt = ler.nextDouble();
vlrIMC = IMC(pc, alt); // chamando o metodo IMC e passando pc e altura
System.out.printf("\nResultados...:\n");
System.out.printf("IMC..........: %.2f\n", vlrIMC);
System.out.printf("Classificação: %s\n", interpretaIMC(vlrIMC));
}
public static double IMC(double pc, double alt) {

return(pc / (alt * alt));


}
public static String interpretaIMC(double vlrIMC) {
if (vlrIMC < 18.5)
return("baixo peso");
else if (vlrIMC < 25.0)
return("peso adequado");
else if (vlrIMC < 30.0)
return("sobrepeso");
else
return("obesidade");
}
}
Constantes

Uma constante é declarada quando precisamos lidar com dados que não devem ser alterados durante a
execução do programa.
Para isso, utilizamos a palavra reservada final para que a variável seja inicializada uma única vez.

final float PI = 3.1416F;


final String NOME_PAGINA = “home”;

Por convenção, usamos letras maiúsculas para declarar constantes e assim distingui-las das variáveis.

static final int DAYS_IN_WEEK = 7;


Exercício de logica - utilizando constante

• - Ler 3 números inteiros da entrada, imprimir o menor e o maior


• Faça o exercício de 2 formas , uma usando If outra usando For.
import java.util.Scanner;

Com IF public class MenorMaiorNumeroComIf {


public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num;
int mínimo = Integer.MAX_VALUE;
int máximo = Integer.MIN_VALUE;

System.out.print("Entre com o primeiro inteiro: ");


num = sc.nextInt();
if (num < mínimo) {
mínimo = num;
}
if (num > máximo) {
máximo = num;
}

System.out.print("Entre com o segundo inteiro: ");


num = sc.nextInt();
if (num < mínimo) {
mínimo = num;
}
if (num > máximo) {
máximo = num;
}

System.out.print("Entre com o terceiro inteiro: ");


num = sc.nextInt();
if (num < mínimo) {
mínimo = num;
}
if (num > máximo) {
máximo = num;
}

System.out.println("O menor numero eh: " + mínimo);


System.out.println("O maior numero eh: " + máximo);
}
}
Com For import java.util.Scanner;

public class MenorMaiorNumeroComFor {


public static void main(String[] args) {
final int NÚMEROS_A_LER = 3;
Scanner sc = new Scanner(System.in);
int mínimo = Integer.MAX_VALUE;
int máximo = Integer.MIN_VALUE;

for (int i = 0; i < NÚMEROS_A_LER; i++) {


System.out.print("Entre com o proximo inteiro: ");
int num = sc.nextInt();
if (num < mínimo) {
mínimo = num;
}
if (num > máximo) {
máximo = num;
}
}

System.out.println("O menor numero eh: " + mínimo);


System.out.println("O maior numero eh: " + máximo);
}
}
Exercício
• Faça um programa onde a pessoa ira digitar um valor e o sistema ira
apresentar a tabuada.
• Utilizem looping
• Incluam um tratamento de exceção , se a pessoa digitar um numero
menor que zero, imprimir uma mensagem de tabuada invalida.
Resultado import java.util.Scanner;

public class Tabuada {

public static void main(String[] args) {


Scanner ler = new Scanner(System.in);
System.out.println("digite um numero p/ tabuada :");

int numero = ler.nextInt();

if (numero >=0 ) {

for (int i = 0; i <= 10; i++) {

System.out.println(numero + "x" + i + "=" + numero * i);


}
} else{
System.out.println("numero invalido, tabuada não existe");
}
}
}
Interface

A interface é um recurso muito utilizado em Java, bem como na maioria das linguagens orientadas a
objeto, para “obrigar” a um determinado grupo de classes a ter métodos ou propriedades em comum
para existir em um determinado contexto.
Porem, serão implementados em cada classe de uma maneira diferente

Utilizando interface em Java


Dentro das interfaces existem somente assinaturas de métodos e propriedades, cabendo à classe que a
utilizará realizar a implementação das assinaturas, dando comportamentos práticos aos métodos.
Como no exemplo a seguir:

public interface FiguraGeometrica


{
public String getNomeFigura();
public int getArea();
public int getPerimetro();
}
Interface – realizando a chamada

Para realizar a chamada/referência a uma interface por uma determinada classe, é necessário adicionar
a palavra-chave implements ao final da assinatura da classe que irá implementar a interface escolhida.

Sintaxe

public class nome_classe implements nome_interface

•nome_classe – Nome da classe a ser implementada.


•nome_Interface – Nome da interface a ser implementada pela classe.

public interface FiguraGeometrica


{
public String getNomeFigura();
public int getArea();
public int getPerimetro();
}
public class Quadrado implements FiguraGeometrica {
Interface – Exemplo private int lado;

public int getLado() {


return lado;
}

public void setLado(int lado) {


this.lado = lado;
public interface FiguraGeometrica }
@Override
{ public int getArea() {
public String getNomeFigura(); int area = 0;
public int getArea(); area = lado * lado;
public int getPerimetro();
return area;
} }
@Override
public int getPerimetro() {
int perimetro = 0;

perimetro = lado * 4;
return perimetro;
}
@Override
public String getNomeFigura() {
return "quadrado";
}
}
Interface – Diferença com Herança
Ao contrário da herança que limita uma classe a herdar somente uma classe pai por vez, é possível que uma
classe implemente varias interfaces ao mesmo tempo.
Imagine, por exemplo, uma interface chamada Veiculo e outra chamada Motor.

Interface Veiculo Interface Motor


public interface Motor {
public interface Veiculo {
public String getModelo();
public String getNome();
public String getFabricante();
public String getId();
}
}
Interface – Crie uma classe carro que implementa veiculo e motor.

Obs: Não precisa construir o main(), apenas entender a sintaxe de


implementar uma interface.

Interface nada mais que uma espécie de contrato de regras que uma classes deve seguir em um
determinado contexto.
Como em Java não existe herança múltipla, a interface passa a ser uma alternativa!
public class Carro implements Veiculo,Motor{

@Override
public String getId() {

@Override
public String getNome() {

}
Resposta - Interface
@Override
public String getFabricante() {

@Override
public String getModelo() {

}
}
Array - Java

Cada item em um array é chamado de elemento, e cada elemento é acessado pelo número,
o índice.
Como acessamos os elementos do Array?
Lembrando que sempre iniciamos a leitura do índice 0.

Declarando Arrays

int[] a = new int[4]; //declarando array


Descobrindo o tamanho de um array

Por padrão, cada array sabe seu próprio tamanho, independente de quantos valores forem inseridos.
O array armazena na variável de instância o método length, que retorna o tamanho do array especificado.

public class TamanhoArray {

public static void main(String[] args) {

int[] arrayUm = {12, 3, 5, 68, 9, 6, 73, 44, 456, 65, 321};


int[] arrayDois = {43, 42, 4, 8, 55, 21, 2, 45};

if (arrayDois.length > 8) {
System.out.println("Tamanho do ArrayDois - Maior que 8!");
} else {
System.out.println("Tamanho do ArrayDois - Menor que 8!");
}
System.out.println("\nTamanho do ArrayUm = " + arrayUm.length);
}
}
Percorrendo Arrays

A instrução for aprimorado, como é conhecida, serve para obter elementos de um array, sem a
possibilidade de alterá-los. Se caso houver necessidade de modificar os elementos, isso pode ser feito
com a instrução for controlada por contador.

Na sintaxe do for aprimorado é dividida pelos seguintes parâmetros:

•O tipo com um identificador (parâmetro);

•O nome do array no qual serão feitas as iterações.

for ( parâmetro : nomeDoArray )


instrução
Percorrendo Arrays

public class Percorrendo_Arrays_For_Aprimorado {


public static void main(String[] args) {
int[] arrayNum = {87, 68, 52, 5, 49, 83, 45, 12, 64};
int somaArray = 0;
//ADICIONA O VALOR DE CADA ELEMENTO AO TOTAL
for(int i : arrayNum)
somaArray += i;

System.out.printf("Total de elementos arrayNum: %d\n", somaArray);


}
}
Herança – Na pratica

A herança é um dos principais pilares da programação orientada a objetos, ela


permite a criação de novas classes a partir de outras.

Quando criamos novas classes que derivam da primeira, chamamos de subclasse e a


classe já existente chamamos de superclasse.

Para facilitar o entendimento vamos criar um exemplo de uma modelagem de uma


escola, representando alunos, professores e funcionários; pois é provável que tenhamos
algumas características comuns entre eles
Herança
Segue abaixo um diagrama de classe exemplificando o uso de
Herança. public class Animal {

public class Cachorro extends Animal {

public class Gato extends Animal {

Acima tem-se a definição de Animal que é a superclasse e das classes Cachorro e Gato que herdam tudo da
classe Animal.
Neste exemplo na classe Animal não tem nada, porém se tivesse atributos ou métodos eles seriam Herdados
pelas suas subclasses Cachorro e Gato.
Vale salientar que devemos atentar para a visibilidade dos atributos e métodos no caso da Herança, lembre-
se que tudo que é privado não é herdado, pois pertence unicamente à classe detentora.
Herança – é um

Normalmente na Herança usamos o termo "É um".

Por exemplo, podemos dizer que um carro É UM automóvel, portanto temos que um carro herda os atributos
e métodos de um automóvel, assim como um caminhão também É UM automóvel.

Neste exemplo temos uma hierarquia de herança onde um Carro e um Caminhão herdam atributos e
métodos comuns entre eles que estão definidos numa superclasse Automóvel.

Para o anterior a herança também é válida pois Cachorro É UM Animal e Gato também É UM Animal.
Herança – Novas classes

Iremos criar novas classes que possuem características (atributos e métodos) próprias, porem, elas
também possuem caracteristicas comuns como:
os atributos nome, data de nascimento e CPF.

Para conseguirmos referenciar o construtor “pai” iremos usar a chamada super para nome, cpf e data.

A palavra super representa uma chamada de método ou acesso a um atributo da superclasse, por isso tem
esse nome.

Iremos usar a palavra super para ivocar o construtor da superclasse Pessoa,que recebe os três parâmetros
e preenche os atributos do objeto.

Então, quando criarmos um objeto do tipo Aluno, por exemplo, utilizando


“new Aluno(“nome”,”cpf”,new Date())”,
A classe Aluno invocará o construtor Pessoa(String,String,Date), e então seus atributos serão preenchidos
com os dados enviados por parâmetro.
Herança

Sobrescrevendo métodos :
– Subclasse pode redefinir métodos da superclasse :

• É possível acessar o método original da superclasse:


super.nomeDoMetodo(...)

– Para invocar o construtor da superclasse explicitamente:


super(); // pode-se passar parâmetros se necessário

• Se for chamado dessa forma, tem que ser o primeiro comando no construtor da subclasse!
Herança – Classe Pessoa

Crie uma classe pessoa ;

Crie os atributos nome, cpf e data_nascimento.

Crie um construtor (método) pessoa que recebe como parâmetro nome, cpf
data_nascimento.
Herança – Classe Pessoa (resposta)
Crie uma classe pessoa ;
Crie os atributos nome, cpf e data_nascimento
Crie um construtor (método) pessoa que recebe como parâmetro nome, cpf
data_nascimento

import java.util.Date;
public class Pessoa {
public String nome;
public String cpf;
public Date data_nascimento;

public Pessoa(String _nome, String _cpf, Date _data) {


this.nome = _nome;
this.cpf = _cpf;
this.data_nascimento = _data;
}
}
Herança – Classe Funcionário e Aluno
Crie uma classe Funcionario ;

Crie os atributos: salario e cargo;


Crie um construtor (método) funcionario que recebe como parâmetro nome, cpf
data_nascimento , que contenha os atributos da classe Pessoa (usando o super);
Crie uma classe Aluno ;

Crie os atributos: Diciplina;


Crie um construtor (método) Aluno que recebe como parâmetro nome, cpf
data_nascimento , que contenha os atributos da classe Pessoa (usando o super);
Crie uma classe Professor ;

Crie os atributos: Matricula;


Crie um construtor (método) professor que recebe como parâmetro nome, cpf
data_nascimento , que contenha os atributos da classe Pessoa (usando o super);

Crie uma classe Main que imprima os dados de Funcionário, Aluno e Professor.
Classes Funcionário

import java.util.Date;

public class Funcionario extends Pessoa { A construção super(...) é a


public Funcionario(String _nome, String _cpf, Date _data) { chamada para o método
super(_nome, _cpf, _data); construtor
} da classe pai, a superclasse de
public double salario; Pessoa
public String cargo;
}
Classes Professor

import java.util.Date;

public class Professor extends Pessoa {


public Professor(String _nome, String _cpf, Date _data)
{
super(_nome, _cpf, _data);
}
public double salario;
public String disciplina;
}
Classe- Aluno

import java.util.Date;

public class Aluno extends Pessoa {

public Aluno(String _nome, String _cpf, Date _data) {


super(_nome, _cpf, _data);
}
public String matricula;
}
Classe- Main
import java.util.Date;

public class Main {


public static void main(String[] args) {
Aluno i = new Aluno("Fulana de tal", "987.765.543-21", new Date());
System.out.println("Veja como os atributos foram preenchidos\n\nNome: " + i.nome);
System.out.println("CPF: " + i.cpf);
System.out.println("Data de nascimento: " + i.data_nascimento.toString());
i.matricula = "JAVA";
System.out.println("Matricula: " + i.matricula);

Professor prf = new Professor("Mariana Mian", "123.344.543-21", new Date());


System.out.println("Veja como os atributos nome do professor foram preenchidos\n\nNome: " + prf.nome);
System.out.println("CPF: " + prf.cpf);
System.out.println("Data de nascimento: " + prf.data_nascimento.toString());
prf.disciplina = "prof. Java";
prf.salario = 100.00D;
System.out.println("Diciplina: " + prf.disciplina);
System.out.println("Salario" + prf.salario);

Funcionario func = new Funcionario ( "funcionaria top", "678.987.456.-09",new Date());


System.out.println("Veja como os atributos nome do professor foram preenchidos\n\nNome: " + func.nome);
System.out.println("CPF: " + func.cpf);
System.out.println("Data de nascimento: " + func.data_nascimento.toString());
func.salario = 12.000D;
func.cargo = "Diretora";
System.out.println("salario " + func.salario );
System.out.println("cargo " + func.cargo );

}
}
Herança

Iremos construir o sistema abaixo, representado pelo diagrama UML.


Contrua uma classe testaFuncionario para executar o sistema.
Herança – Resposta
public class Gerente extends Funcionario {
private int senharecebida;
public int senha;
public void getSenha() {
super.setSenha(senharecebida);
}

public boolean autentica (int testaSenha) {


System.out.println(testaSenha + " autentica classe gerente");
if (testaSenha == super.senhaPassada ) {
System.out.println("Acesso Permitido");
return true;
}else {
System.out.println("Acesso negado");
return false;
}
}

}
Herança – Resposta

public class TestaHerancaFuncionario {


public static void main (String [] args) {

Gerente gerenteBanco = new Gerente ();

gerenteBanco.setNome("Mariana Mian");
gerenteBanco.setCpf("123.456.321-89");
gerenteBanco.setSenha (1234);
gerenteBanco.autentica(1234);
gerenteBanco.setSalario (120.000);
}

}
Exercício simples / Lógica
Crie um algoritmo que recebe 2 números e
Soma a quantidade de vezes o num1 com a
quantidade recebida no numero num2 através de
somas.
(ex: 2 e 3 = 2 + 2 + 2).
Do While
Do-while
A estrutura de repetição do-while é uma variação da estrutura while.
Existe uma diferença sutil, porém importante, entre elas.
Em um laço while, a condição é testada antes da primeira execução das instruções que compõem seu
corpo.
Desse modo, se a condição for falsa na primeira vez em que for avaliada, as instrução desse laço não
serão executadas nenhuma vez.
Em um laço do-while, por outro lado, a condição somente é avaliada depois que suas instruções são
executadas pela primeira vez, assim, mesmo que a condição desse laço seja falsa antes de ele iniciar, suas
instruções serão executadas pelo menos uma vez.

Exercício de fixação:
do{
Usando o Do-While enquanto a pessoa não chegar
//instruções a serem
aos 18 anos exiba a mensagem : ("você não tem
executadas
permissão para entrar");
}while(True)
Resposta Do-While

public class teste{


int x = 15;
do{
System.out.println ("você não tem permissão para entrar");
X++;
}while(x<18);
}
}
Classe String
Sabemos que uma String tem a capacidade de armazenar uma sequencia de caracteres.
A declaração de uma String é bem simples, porem, essa classe possui diversas características que não
são óbvias principalmente para quem tem seu primeiro contato com ela.

Por exemplo, um objeto String é imutável, o que significa que o texto que ele carrega nunca é
alterado.

Sempre que um texto precisa ser modificado é utilizado mais espaço em memória para que uma
nova String seja criada contendo a nova versão dele.
String

Criando uma String:

Uma String é formada de forma semelhante a um tipo primitivo ( tipo da variável, um nome = o valor).
A diferença é que o compilador entende que qualquer texto entre aspas duplas é uma String.

O valor especial null ->É possível declarar uma variável como sendo do tipo String sem inicializá-la com um valor.
Ex: String Nome;
Desta maneira a variável será criada com valor padrão Null.

class Pessoa {
String nome ;
}

class PessoaTeste {

public static void main(String[] args) {


Pessoa p = new Pessoa();

System.out.println(p.nome);
}
}
Como testar igualdade entre String
A comparação entre Strings utilizando o operador de igualdade (==) retornará true se as
duas referências apontarem para o mesmo objeto na memória.
String s1 = "a";
String nome = “Mariana"; String s2 = "a";
String apelido = “Mariana”; if (s1 == s2) {
System.out.println(“ Neste caso, Nome e apelido
if(nome == apelido) { são iguais");}
System.out.println(“ Neste caso, Nome e apelido são iguais"); else {
}else{ System.out.println(“ SQN");
System.out.println(“ SQN"); }
}

Neste caso o texto "Nome e apelido são iguais" não será


impresso, visto que nome e apelido apontam para objetos
diferentes.
Como testar igualdade entre String
Equals

Equals é um método da classe Object utilizado para testar a relação de igualdade entre dois
objetos.
Esse método está presente em todas as classes, porque todas elas derivam de Object.
A forma como essa comparação será feita pode ser determinada por quem está escrevendo a
classe e no caso de String.

String nome1 = "Mariana";


String nome2 = "Mariana";

if (nome1.equals(nome2)) {
System.out.println("Os nomes são iguais!");
} else {
System.out.println("Os nomes são diferentes!");
}
Como testar igualdade entre String
equalsIgnoreCase

Esse método ignora a distinção entre letras maiúsculas e minúsculas nas duas strings
comparadas.

String nome1 = "Mariana";


String nome2 = "mariana";

if(nome1.equalsIgnoreCase(nome2)) {
System.out.println("Os nomes são iguais!");
}
Como testar igualdade entre String
equalsIgnoreCase

Esse método ignora a distinção entre letras maiúsculas e minúsculas nas duas strings
comparadas.

String nome1 = "Mariana";


String nome2 = "mariana";

if(nome1.equalsIgnoreCase(nome2)) {
System.out.println("Os nomes são iguais!");
}
Como testar igualdade entre String
compareTo

Esse método pode retornar 0 se as strings forem iguais, um número negativo se a string que
invoca o compareTo for menor que a string que é passada como um argumento e um número
positivo se a string que invoca o compareTo for maior que a string que é passada como
argumento.

String nome1 = "Mariana";


String nome2 = "Mari";

System.out.println("nome2.compareTo(nome1) = "+nome2.compareTo(nome1));
System.out.println("nome1.compareTo(nome2) = "+nome1.compareTo(nome2));

Neste caso teremos um numero positivo pois Mariana é maior que Mari.
Como testar igualdade entre String
compareToIgnoreCase

É uma função que compara textos lexigraficamente, ignorando se as letras são maiúsculas ou
minúsculas. No exemplo abaixo fazemos duas comparações, uma utilizando compareTo e a
outra usando compareToIgnoreCase para analisarmos as diferenças.

String texto = "A API de Strings é uma das mais utilizadas na linguagem Java";
String linguagem = texto.substring(texto.indexOf("Java"), texto.length());

if (linguagem.compareToIgnoreCase("java") == 0) {
System.out.println("compareToIgnoreCase: Encontrei a linguagem! Ela é " + linguagem);
}
if(linguagem.compareTo("java") == 0) {
System.out.println("compareTo: Encontrei a linguagem! Ela é " + linguagem);
}
Principais métodos da classe String
Existem muitos métodos nesta classe e aqui falaremos sobre os mais utilizados.

concat
Existem duas formas de unir duas ou mais sequências de
caracteres. A mais comum dentre elas é utilizando o operador
de adição

String nomeCompleto = nome + sobrenome;

Uma outra forma de fazer isso é utilizando o método concat.


Isso é menos comum, mas ainda é possível.

String nomeCompleto = nome.concat(sobrenome);


Principais métodos da classe String
String.valueOf
valueOf é um método estático da classe String, que não precisa
de uma instância para ser invocado. Ele converte um tipo
primitivo em um objeto do tipo String

public class Testa_Metodo_valueOf {

public static void main(String[] args) {

double numero = 102939939.939;


boolean booleano = true;

System.out.println("Retorna Valor : " +String.valueOf(numero));


System.out.println("Retorna Valor: " + String.valueOf(booleano));
}}
Principais métodos da classe String
Length
Retorna o comprimento do texto em uma String.
No exemplo abaixo é impresso o comprimento do texto.

String nomeCurso = "Java";

System.out.printf("\nTamanho da variável nomeCurso: %d",


nomeCurso.length());

trim()
Remove espaços antes e depois da string
Ex.: " Aula ".trim() -> “Aula”
Exercício

Ler uma temperatura em graus Celsius e apresentá-la


convertida em graus Fahrenheit.

A fórmula de conversão é: F=(9*C+160) / 5, sendo F a


temperatura em Fahrenheit e C a temperatura em Celsius.
Exercício - resposta

Import java.util.Scanner;
public class Converte
{
public static void main(String args[])
{
Scanner input = new Scanner(System.in);
double C, F;

System.out.print("Digite a temperatura em Graus Celsius:" );


C = input.nextDouble();

F = ( 9 * C + 160 ) / 5;

System.out.printf(" A temperatura convertida para Fahrenheit é:" +F);


}
}
Principais métodos da classe String
charAt
Retorna o caractere em uma localização específica em uma String.
Esse método possui um parâmetro do tipo inteiro que é usado como índice,
retornando a partir dessa posição inserida nesse parâmetro.
É importante lembrar que o índice sempre começa a ser contado do número 0
(zero) em diante.
Sendo assim a posição do caractere “a” em Mari é 1 e não 2, como se poderia
deduzir.
String nomeCurso = "JAVA";

if(nomeCurso.charAt(1) == ‘A’) {
System.out.println(“O caractere A está na posição 1”);
}
A mensagem "O caractere A está na posição 1" será impressa, uma vez
que o caractere A está na posição 1 da cadeia de caracteres.
Principais métodos da classe String
toUpperCase
Retorna uma nova string com o conteúdo da original
convertido para letras maiúsculas, mantendo a original
inalterada.
toLowerCase
De forma semelhante ao anterior, o toLowerCase retorna uma
cópia de uma string com todas as letras convertidas para
minúsculo, mantendo a original inalterada.

String nomeA = “mari";


String nomeB = “MARIANA";

System.out.println(nomeA.toUpperCase());
System.out.println(nomeB.toLowerCase());
Principais métodos da classe String
indexOf e lastIndexOf
Permitem a localização de caracteres e substrings especificados em strings.

indexOf
Localiza a primeira ocorrência de um caractere em uma string. Se o método localizar o caractere, é retornado o índice
do caractere na String, caso contrário retorna
-1. Existem duas versões do indexOf que procuram caracteres em uma String.
•1ª versão – aceita um inteiro que é conhecido como o número do índice na String.
•2ª versão – aceita dois argumentos inteiros – o caractere e o índice inicial em que a pesquisa da String deve iniciar.

lastIndexOf
Localiza a última ocorrência de um caractere em uma string. O método procura do fim da
string em direção ao começo, se encontrar o caractere é retornado o seu índice na string,
caso contrário retorna
-1. Existem duas versões do lastIndexOf que pesquisam por caracteres em uma string.
•1ª versão – utiliza um inteiro do caractere.
•2ª versão – aceita 2 argumentos – um inteiro de caractere e o índice a partir do qual iniciar
a pesquisa de trás para frente.
Principais métodos da classe String

String letras = "abcadefghijklmcopqrsdeftuvz";

//TESTA indexOf PARA LOCALIZAR UM CARACTERE EM UM STRING

System.out.printf("Último 'c' está localizado no index %d\n", letras.indexOf('c'));


System.out.printf("Último 'a' está localizado no index %d \n", letras.indexOf('a', 1));

//-1 NÃO EXISTE


System.out.printf("'$' está localizado no index %d\n\n", letras.indexOf('$'));

//TESTA lastIndexOf PARA LOCALIZAR UM CARACTERE EM UMA STRING

System.out.printf("Último 'c' está localizado no index %d\n", letras.lastIndexOf('c'));


System.out.printf("Último 'a' está localizado no index %d\n", letras.lastIndexOf('a', 5));
System.out.printf("Último '$' está localizado no index %d\n", letras.lastIndexOf('$'));

//TESTA indexOf PARA LOCALIZAR UMA SUBSTRING EM UMA STRING


System.out.printf("\"def\" está localizado no index %d\n", letras.indexOf("def"));

//2 argumento string e outro o ponto inicial que começará a pesquisa


System.out.printf("\"def\" está localizado no index %d\n", letras.indexOf("def", 7));
System.out.printf("\"hello\" está localizado no index %d\n\n", letras.indexOf("hello"));
Exercício classe String

Elaborem um Programa para gerar a citação a partir de um nome .


Ex.: Mariana Mian Almeida -> ALMEIDA, M. M.
(ultimo nome toda maiúsculo, inicial primeiro nome. Inicial segundo nome)

Você também pode gostar