0% acharam este documento útil (0 voto)
12 visualizações217 páginas

Introdução ao Java: Primeiros Passos

O documento é um guia introdutório ao Java, abordando sua história, instalação, sintaxe, variáveis, tipos de dados, operadores, estruturas condicionais e laços de repetição. Ele destaca a portabilidade do Java através da Java Virtual Machine (JVM) e fornece exemplos práticos de código. Além disso, o documento inclui conceitos de programação orientada a objetos e manipulação de dados com a classe Scanner.

Enviado por

M R K S
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
12 visualizações217 páginas

Introdução ao Java: Primeiros Passos

O documento é um guia introdutório ao Java, abordando sua história, instalação, sintaxe, variáveis, tipos de dados, operadores, estruturas condicionais e laços de repetição. Ele destaca a portabilidade do Java através da Java Virtual Machine (JVM) e fornece exemplos práticos de código. Além disso, o documento inclui conceitos de programação orientada a objetos e manipulação de dados com a classe Scanner.

Enviado por

M R K S
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

Java — Primeiro Módulo

INTRODUÇÃO
AO JAVA
Fuctura Tecnologia
CAIO VITAL Escola de Software Livre
Lógica de Programação Java
01. Breve História 09. Operadores Aritméticos
02. Instalação 10. Operadores de Atribuição
03. Olá, Mundo! 11. Operadores Relacionais
04. Exibindo Mensagens 12. Operadores Lógicos
05. Sintaxe do Java 13. Estruturas Condicionais
06. Variáveis 14. Laços de Repetição
07. Tipos de Dados 15. Vetores (Arrays)
08. Recebendo Dados 16. Listas: ArrayList
Orientação a Objetos
01. POO 09. Modificadores de Propriedade
02. Método Construtor 10. Modificador Final
03. Encapsulamento 11. Modificador Static
04. Herança 12. Sets (Conjuntos)
05. Polimorfismo 13. Maps (Mapas)
06. Classes Abstratas 14. Lista de Exercícios
07. Interfaces
08. Tratamento de Exceções
Java — Primeiro Módulo
BREVE HISTÓRIA
Origem e Capacidade
Foi criada pela Sun Microsystems nos anos 90 e se tornou
uma das linguagens mais populares do mundo.

Com Java, é possível criar aplicações rápidas, seguras e robustas.


Java é uma poderosa linguagem de programação que funciona
em diferentes plataformas.

Java está em todo lugar: TVs, celulares, carros e até satélites;


Antes do Java
As linguagens de programação eram divididas em duas categorias:

Compiladas: O código compilado é gerado para um sistema


específico (como Windows ou Linux). Para rodar em outro sistema,
programa precisará ser recompilado.

Interpretadas: o código é interpretado e executado linha por linha


em tempo real. As linguagens interpretadas são mais lentas.
Como o Java funciona?
O código Java é primeiro compilado para um formato intermediário
chamado bytecode. Esse bytecode não é código de máquina
específico de nenhum sistema, tornando-o mais portável.

Interpretação: Em vez de ser executado diretamente pelo sistema


operacional, o bytecode é interpretado pela JVM, que converte
o bytecode em código de máquina específico para o sistema
onde está sendo executado.
Write Once, Run Anywhere
Java roda em qualquer sistema que tenha suporte
à Java Virtual Machine (JVM), ou Máquina Virtual Java.

Ou seja, com a JVM, não importa em qual sistema um programa


foi escrito, seja Windows, Linux ou Mac OS, ele rodará
sem a necessidade de modificações.
Mais sobre o Java
Para executar aplicações desenvolvidas em Java, é preciso
instalar o JRE (Java Runtime Environment).

Para criá-las, é preciso instalar o JDK (Java Development Kit).

O bytecode Java é processado pela JVM. É trabalho


da JVM chamar os recursos necessários ao processador
para executar o bytecode.
Java — Primeiro Módulo
INSTALAÇÃO
Instalação
Primeiro passo:
Instalar um JDK. Para instalar o JDK no Windows: Link

Segundo passo:
Instalar um Ambiente de Desenvolvimento(IDE): Link
Primeiro Programa
OLÁ, MUNDO!
Primeiro Programa
➡️
1. Selecione File New ➡️ Java Project
2. Dê um nome ao projeto ➡️ Finish
3. Botão direito do mouse ➡️ pasta src➡️ ➡️
New package
4. Dê um nome ao pacote ➡️ Finish
5. Botão direito do mouse no pacote ➡️ ➡️
New Class
6. Dê um nome à classe ➡️ ➡️
Marque a caixa main Finish
7. Dentro das chaves internas { } escreva o seguinte:
8. [Link]("Olá, mundo!");
Primeiro Programa
EXIBINDO
UMA MENSAGEM
Instruções [Link]
[Link](“Olá, Mundo!”);
➡️ Imprime o texto e pula uma linha.

[Link](“Olá, Mundo!”);
➡️ Apenas imprime o texto no console.

[Link](“Olá, Mundo!”);
➡️ Imprime um texto que pode ser formatado
Java — Primeiro Módulo
SINTAXE DO JAVA
O main
Quando executamos um programa Java, o computador
procura automaticamente pelo main e começa a executar
as instruções ali dentro.

É como o arquivo executável(.exe) de um programa.


Sintaxe
Alguns pontos importantes sobre a sintaxe inicial do Java.

Toda instrução ou comando termina com ponto-e-vírgula(;)

O código é delimitado por chaves de abertura e fechamento.

As chaves que vimos no primeiro programa são da classe


e, dentro delas, as chaves do main.
Sintaxe
Java é case sensitive: Isso significa que as palavras-chave,
identificadores e outros elementos da linguagem
são diferenciados por letras maiúsculas e minúsculas.

Convenção de nomes: Em Java usamos o camelCase para nomear


variáveis, métodos e classes. A primeira letra da primeira palavra
é minúscula (exceto em classes) e a primeira letra de cada palavra
subsequente é maiúscula.
Lógica de Programação
VARIÁVEIS
O que é uma variável?
Uma variável é como uma “caixa” que é usada
para guardar valores de dados.

Esta caixa só pode guardar um único valor por vez.

No entanto, o valor guardado na caixa pode mudar


inúmeras vezes durante a execução do algoritmo.
Variáveis

O que são?
variáveis são estruturas que armazenam dados
na memória durante a execução do programa.

No Java
Java é uma linguagem fortemente tipada. Cada variável
deve ter um tipo declarado antes de ser utilizada.
Declaração

No Java é possível declarar uma varíavel sem valor.

Exemplo de declaração de variável:


➡️ tipo nomeDaVariável
➡️ int idade;
Inicialização

Porém, para que uma variável possa ser utilizada,


será preciso inicializá-la, ou seja, passar
algum valor para ela.

Exemplo de declaração e inicialização


➡️ tipo nomeDaVariável = valor
➡️ int idade = 35;
Lógica de Programação
TIPOS DE DADOS
Tipos de Dados

Podemos resumir os tipos de dados a três:

1. Tipo Numérico para valores numéricos;


2. Tipo Alfanumérico para valores textuais;
3. Tipo Lógico para valores verdadeiros ou falsos.
Tipos Numéricos

Tipos de dados numéricos representam números


como inteiros ou decimais.

Para armazenarmos um valor inteiro, usamos int.


int idade = 35;
Para armazenarmos um valor decimal, usamos double.
double salario = 2345.69; // separamos com ponto
Tipos Alfanuméricos

Dados alfanuméricos são compostos por caracteres


(letras, números ou sinais gráficos).

Quando queremos armazenar apenas um caractere:


char letra = ‘B’; // usamos aspas simples
Quando queremos armazenar um conjunto de caracteres:
String nome = “Tadeu”; // usamos aspas duplas
Tipo Lógico

O tipo lógico é mais conhecido como booleano.

É um tipo de dado que pode assumir


apenas dois valores: verdadeiro ou falso.

boolean estaLigado = true;


boolean diaUtil = false;
Lógica de Programação
RECEBENDO DADOS
A classe Scanner

Vamos abstrair uma informação um pouco avançada.

Para recebermos uma entrada de dados do teclado


no Java, precisamos importar da biblioteca
[Link] a classe Scanner e, depois, instanciá-la.
A classe Scanner

Scanner scan = new Scanner([Link]);

[Link]("Qual seu nome? ");


String nome = [Link]();

[Link]("Digite sua idade: ");


int idade = [Link]();
Lógica de Programação
OPERADORES
ARITMÉTICOS
Operadores Aritméticos

Para somar: Operador de adição +


Para subtrair: Operador de subtração -
Para multiplicar: Operador de multiplicação *
Para dividir: Operador de divisão /
Para o resto de uma divisão: Operador %
Precedência

Os parênteses são usados para definir a ordem


de avaliação.

Em uma expressão, o conteúdo dentro dos parênteses


é avaliado primeiro.
Concatenação

O operador + também tem a função de concatenação:

String nome = “Tadeu”;


String sobrenome = “Silva”;

[Link](nome + sobrenome);
Operadores Unários

Os operadores ++ e -- em Java são usados


para incrementar ou decrementar um valor em 1.

Eles podem ser usados como prefixos ou sufixos.


Operadores Unários

int x = 1; int y = 2;
[Link](x++); [Link](--y);
[Link](x); [Link](y);
[Link](++x); [Link](y--);
Lógica de Programação
OPERADORES
DE ATRIBUIÇÃO
Operadores de Atribuição

Para definir ou sobrescrever o valor de uma variável,


usamos os operadores de atribuição.

O operador básico é o sinal de igual (=).

Há um operador de atribuição para cada operador


aritmético.
Atribuição com Adição

O operador += soma o valor atual da variável


com outro valor e atribui o resultado de volta à variável.

int x = 5;
x += 3; // Equivalente a x = x + 3, ou seja, x agora vale 8.

Em outras palavras, x recebe ele mesmo acrescido de 3.


Atribuição com Subtração

O operador -= subtrai um valor da variável


e atribui o resultado de volta à variável.

int x = 10;
x -= 4; // Equivalente a x = x - 4, então x agora vale 6.

Em outras palavras, x recebe ele mesmo decrescido de 4.


Atribuição com Multiplicação

O operador *= multiplica o valor da variável


por outro valor e atribui o resultado.

int x = 7;
x *= 2; // Equivalente a x = x * 2, agora x vale 14.

Ou seja, x recebe ele mesmo multiplicado por 2.


Atribuição com Divisão

O operador /= divide o valor da variável


por outro valor e atribui o resultado.

int x = 20;
x /= 5; // Equivalente a x = x / 5, então x agora vale 4.

Em outras palavras, x recebe ele mesmo dividido por 5.


Atribuição com Módulo

O operador %= calcula o resto da divisão da variável


por outro valor e atribui o resultado.

int x = 10;
x %= 3; // Equivalente a x = x % 3, agora x vale 1.

Ou seja, x recebe o resto da divisão dele mesmo por 3.


Lógica de Programação
OPERADORES
RELACIONAIS
Operadores Relacionais

Operador Relacional é todo operador que obtém a relação


do membro a esquerda com o membro à sua direita.

Estrutura básica

<membro a esquerda> OPERADOR <membro a direita>


Operadores Relacionais

Os operadores relacionais em Java são usados para


comparar dois valores e retornar um valor booleano
(verdadeiro ou falso) como resultado.

Ou seja, cada operação feita com um operador relacional


deverá sempre ter como resultado true ou false.
Operadores Relacionais

Temos 6 operadores relacionais:


Maior que: valor 1 > valor 2
Menor que: valor 1 < valor 2
Maior ou igual a: valor 1 >= valor 2
Menor ou igual a: valor 1 <= valor 2
Igual a: valor 1 == valor 2
Diferente de: valor 1 != valor 2
OPERADORES RELACIONAIS
LEITURA DA
OPERADOR EXPRESSÃO
EXPRESSÃO

== x == y x é igual a y

!= x != y x é diferente de y

> x>y x é maior que y

>= x >= y x é maior ou igual a y

< x<y x é menor que y

<= x <= y x é menor ou igual a y


Lógica de Programação
A VARIÁVEL
BOOLEANA
A variável booleana true false
uma variável booleana em Java pode armazenar apenas
um dos dois valores: verdadeiro(true) ou falso(false).

Operações lógicas como “a <= b” ou “x > y” resultam


em um valor booleano que pode ser armazenado
em uma variável booleana.
Lógica de Programação
OPERADORES
LÓGICOS
Operadores Lógicos true false
Os operadores lógicos em Java são utilizados
para avaliar expressões booleanas.

Em Java, usamos três operadores para operações lógicas:

&& (AND), || (OR) e ! (NOT)


Operadores Lógicos true false
O operador && (e comercial ou ampersand) retorna true
somente se ambas as expressões forem verdadeiras.

O operador || (barra vertical ou pipe) retorna true


se pelo menos uma das expressões for verdadeira.

O operador ! inverte o valor da expressão booleana.


TABELA VERDADE
(&& E ||)

Posso ir à praia?
Proposição A: É um dia de sol.
Proposição B: É final de semana.

Proposição A Proposição B A && B


verdadeiro verdadeiro verdadeiro

verdadeiro falso falso

falso verdadeiro falso

falso falso falso


TABELA VERDADE
(&& E ||)

Dia de Descanso?
Proposição A: Você está de férias.
Proposição B: É final de semana.

Proposição A Proposição B A || B
verdadeiro verdadeiro verdadeiro

verdadeiro falso verdadeiro

falso verdadeiro verdadeiro

falso falso falso


Lógica de Programação
ESTRUTURAS
CONDICIONAIS
Estruturas Condicionais

Também conhecidas como Desvio Condicional,


Tomada de Decisão ou mesmo Verificação de Expressões.

As estruturas condicionais são construções comuns


e essenciais no desenvolvimento de software.
Sintaxe

A sintaxe básica é

if (valor booleano/expressão booleana) {


-- instrução a ser executada caso a expressão seja true
}
Sintaxe
Uma estrutura é delimitada por chaves de abertura e fechamento,
ou seja, não é necessário o uso do ponto-e-vírgula.

Instruções: Ações individuais, terminam com ;.


Estruturas: Blocos de código, delimitados por chaves {}.
Sintaxe

if (true) {
-- instrução a ser executada caso a expressão seja true
} else {
-- instrução a ser executada caso a expressão seja false

}
Sintaxe

if (true) {
--instrução a ser executada caso a expressão seja true
} else if (true) {
--instrução a ser executada caso outra expressão seja true
} else {
--instrução a ser executada caso nenhuma seja true
}
Operador Ternário

O operador ternário é um operador condicional


que temos na linguagem Java, juntamente ao if e ao else.

Ele é uma forma resumida para definir uma condição


e escolher por um dentre dois valores.
Operador Ternário

A sintaxe do operador ternário é:

variavel = (condicao) ? valor1 : valor2;

Se a condição for verdadeira, o valor1 é atribuído


à variável. Caso contrário, será atribuído o valor2.
Lógica de Programação
SWITCH CASE
Switch Case

É uma estrutura de controle que permite testar


condições para determinar qual instrução
será executada em seguida.

É uma forma resumida de escrever múltiplos “if else if”.


Estrutura do Switch Case

switch (expressão) {
case valor1: -- execute esta instrução;
break;
case valor2: -- execute esta instrução;
break;
default: -- execute esta instrução;
Considerações

1. A expressão (variável) usada deve ser inicializada.


2. Deve conter um tipo aceito, como int ou String;
3. Os valores nos cases não podem se repetir.

4. Os valores nos cases não podem ser uma variável.


5. O break encerra a execução do switch.
Lógica de Programação
LAÇOS
DE REPETIÇÃO
Laços de Repetição

São estruturas que permitem repetir um bloco de código


várias vezes. Também são conhecidas como loops.

São usadas para executar, repetidamente,


uma instrução ou bloco de instrução enquanto
determinada condição estiver sendo satisfeita.
Considerações

Laços de repetição têm quatro elementos fundamentais:

A inicialização define o ponto de partida da repetição.


A condição define o momento de parada da repetição.
O corpo contém as instruções que devem se repetir.
A iteração atualiza a contagem para a próxima repetição.
O laço de repetição While

O while(enquanto) executa um bloco de código enquanto


uma condição for verdadeira.

A condição é testada antes.

Sendo verdadeira, o bloco de código será executado.


O processo é repetido até que a condição se torne falsa.
A estrutura do laço while

while(condição verdadeira) {

-- instrução a ser executada;


-- variável de controle;
//O laço deve conter a lógica que torna a condição falsa.
}
O laço de repetição Do While

No caso do laço do-while, o bloco de código é executado


pelo menos uma vez, mesmo que a condição seja falsa.

Depois dessa execução, a condição é testada


e o processo se repete até que ela se torne falsa.
A estrutura do laço do while

do {

-- instrução a ser executada;


-- variável de controle;
//O laço deve conter a lógica que torna a condição falsa.
} while (condição verdadeira);
O laço de repetição For

usado para executar um bloco de código


um número específico de vezes.

A quantidade de repetições é determinada


durante a estruturação deste laço.
A estrutura do laço for

for (inicialização; condição; iteração) {

-- instrução a ser executada;

}
Dentro da estrutura haverá a determinação do início,
a condição de parada e a maneira como deve iterar.
Comandos break e continue

São muito usados em estruturas de repetição;

O Continue serve para ignorar trechos de código.

O Break é utilizado para sair de uma estrutura.


Comandos break e continue

for (int i = 0; i < 10; i++) { for (int i = 0; i < 10; i++) {
if (i == 4) { if (i == 4) {
break; continue;
} }
[Link](i); [Link](i);
} }
Lógica de Programação
VETORES
OU ARRAYS
Vetores ou Arrays

Arrays, como são conhecidos pelo Java, podem ser


identificados como uma coleção ordenada de valores
de um único tipo.

Os valores em um array são chamados de elementos


e são acessados por meio de índices numéricos inteiros.
Sintaxe

tipo[] nomeDoArray = new tipo[tamanho];


int[] valores = new int[5];

Onde tipo é o tipo de dados dos elementos do array,


nomeDoArray é o nome dado ao array e tamanho
é o número de elementos que o array pode armazenar.
Observações

Um array não precisa ser inicializado ao criar,


mas também não poderá ser utilizado.

Quando um array é declarado, cada elemento


recebe um valor padrão: 0 para números,
false para booleanos e null para referências.
Sintaxe

Ao declarar um array, é preciso especificar seu tamanho.

double[] notas = new double[6];


String[] alunos = new String [3];

Todo índice de um array começa em 0.


Formas de Declaração

tipo[] nomeDoArray = new tipo[tamanho];


tipo[] nomeDoArray;
nomedoArray = new tipo[tamanho];

tipo[] nomeDoArray = new tipo[] {valor1, valor2, valor3...};


Esta última forma define o tamanho do array pela
quantidade de valores inseridos entre as chaves;
Acessando Posições

String [] nomes = new String [3];

nomes [0] = “José”;


nomes [1] = “Maria”;

[Link] (nomes[0]);
Lógica de Programação
LISTAS:
ARRAYLISTS
Listas, Lists ou ArrayLists

São uma coleção de elementos em ordem linear.

Uma Lista pode ser mantida ordenada ou não.

As operações mais comuns de uma coleção


do tipo Lista são: adição, remoção, acesso a elementos,
pesquisa e quantidade de elementos.
Listas, Lists ou ArrayLists

Assim como o Scanner, para usar uma ArrayList, será


preciso importar dois elementos da biblioteca [Link],
que são a List e a ArrayList. No Eclipse, podemos usar
o atalho CTRL + SHIFT + O para organizar as importações.

import [Link];
import [Link];
Sintaxe

List<tipo> nomeDaVariavel;
nomeDaVariavel = new ArrayList<>();

OU

List<tipo> nomeDaVariavel = new ArrayList<>();


Métodos Comuns

Método add (adicionar) ➡️ [Link](elemento);


Método get (acessar/pegar) ➡️ [Link](elemento);
Método remove (remover) ➡️ [Link](elemento);
Método set (alterar) ➡️ [Link](posição, novoElemento);
Método contains (contém) ➡️ [Link](elemento);
Método size (tamanho) ➡️ [Link]();
Lógica de Programação
CLASSES
INVÓLUCRO
Wrapper Classes

Tipos primitivos como int, char, double, são eficientes


em termos de desempenho, mas não podem ser usados
diretamente em coleções, porque essas coleções
trabalham apenas com objetos.
Wrapper Classes

Para resolver esse problema, o Java oferece as Classes


Invólucro (ou Wrapper Classes), que são versões objeto
dos tipos primitivos.

Elas permitem que tratar os tipos primitivos


como objetos, possibilitando o uso deles em coleções.
Wrapper Classes

Cada tipo primitivo tem sua classe invólucro


correspondente:

int ➡️ Integer
char ➡️ Character
double ➡️ Double
boolean ➡️ Boolean
Lógica de Programação
FOR EACH
(PARA CADA)
For Each

O for each é uma estrutura de repetição que permite


percorrer cada elemento de uma coleção, como listas,
de forma simples e clara.
Sintaxe

A sintaxe básica do for each é a seguinte:

for (tipoElemento elemento : colecao) {


// Bloco de código a ser executado para cada elemento
}
tipoElemento é o tipo de dados dos elementos, que são
variáveis que representarão cada item na coleção.
Exemplo de Uso

String[] frutas = {"maçã", "banana", "laranja"};

for (String fruta : frutas) {


[Link]("Fruta: " + fruta);
}

O código acima exibirá uma linha para cada fruta.


Quando Usar?

Quando você deseja percorrer todos os elementos


de uma coleção e não precisa modificar a coleção
durante a iteração.

Quando a ordem dos elementos é importante


(como em um List).
Limitações

Não é indicado quando precisamos modificar a coleção,


como, por exemplo, quando precisamos adicionar
ou remover elementos durante a iteração.

Não fornece um índice do elemento atual,


o que pode ser necessário em algumas situações.
Java - Primeiro Módulo
PROGRAMAÇÃO
ORIENTADA
A OBJETOS
Introdução

Sistemas grandes são difíceis de gerenciar.

Para facilitar o controle, é uma boa prática dividi-los


em partes menores e separar suas responsabilidades.

Isso não só melhora a organização, mas também facilita


a manutenção e a flexibilidade do sistema.
Introdução

Fazemos isso usando objetos, que têm atributos


e métodos, todos definidos dentro de classes.
As classes, por sua vez, são organizadas em pacotes.

Esses conceitos são fundamentais em Java


e são sempre usados ao programar nessa linguagem.
Classes

Uma classe é uma estrutura que abstrai um conjunto


de objetos com características similares.

Uma classe define as propriedades dos seus objetos


através de atributos e possíveis comportamentos
desses objetos através de métodos.
Atributos

Atributos são características que uma classe pode ter.

A classe Gato, por exemplo, poderia ter os atributos:

String nome;
double peso;
String corDoPelo;
Métodos

Métodos são os comportamentos que uma classe pode ter.

A classe Gato, por exemplo, poderia ter os métodos:

comer();
dormir();
miar();
Instâncias/Objetos

Um objeto é, em tempo de execução,


uma instância de uma classe na memória.

Utilizamos a palavra reservada new


para criar uma nova instância.

Gato tadeu = new Gato(); // Objeto na memória


Instâncias/Objetos

A variável de referência nesse momento aponta para


um novo objeto do tipo Gato na memória.

Quando uma variável de determinado tipo é declarada,


foi declarada uma referência para determinado objeto.

Gato tadeu; // Foi declarada uma variável de referência.


Criando a classe Gato

public class Gato {

String nome; // atributo do tipo String


double peso; // atributo do tipo double
String corDoPelo; // atributo do tipo String
Criando a classe Gato

public void comer() { // método comer


[Link]("O gato está comendo.");

}
public void miar() { // método miar
[Link]("Miau!");
Componentes de um Método

Nome: utilizado para chamar o método;


Lista de parâmetros: Define os valores que o método
vai receber. Pode ser nenhum ou n.
Corpo: Define o que vai acontecer quando o método
for chamado;
Retorno: A resposta que será devolvida ao final
do processamento do método. Pode ser void (vazio).
Componentes de um Método

retorno nome (parâmetros) {

void depositar (double valor) {


saldo += valor;
}
objeto de referência ➡️ Conta c = new Conta();
invocando o método ➡️ [Link](499.95);
A palavra-chave THIS

É muito usada dentro de métodos que recebem


parâmetros com o mesmo nome de atributos
de instância da classe para diferenciar entre os dois.

Ou seja, se um parâmetro de um método


recebe o mesmo nome de um atributo da classe,
é ideal usar o this para diferenciá-los.
A palavra-chave THIS

class Funcionario {
double salario;

double calcularAumento(double porcentagem) {


return [Link] * porcentagem / 100;
}
A palavra-chave THIS

void aumentarSalario(double porcentagem) {


double aumento = [Link](porcentagem);
[Link] += aumento;
}
Java - Primeiro Módulo
O MÉTODO
CONSTRUTOR
O método construtor

Construtores são métodos especiais usados


para inicializar um objeto.

São chamados na criação do objeto, ao usarmos


a palavra-chave new.
O método construtor

O construtor tem o mesmo nome da classe


e não tem um tipo de retorno.

É possível ter vários construtores em uma classe


com diferentes números de parâmetros.

Garantem que objeto seja válido no momento da criação.


O método construtor

Caso um construtor não seja declarado, uma classe


tem um construtor vazio implícito, gerado a partir
do momento da criação da classe.

Porém, caso seja declarado um construtor com qualquer


parâmetro, o construtor vazio deixa de ser implícito
e passa a ser necessária a declaração para ser usado.
O método construtor

public Gato() { }

public Gato (String nome, double peso, String corDoPelo) {


[Link] = nome;
[Link] = peso;
[Link] = corDoPelo;
}
Java - Primeiro Módulo
ENCAPSULAMENTO
Encapsulamento

Encapsulamento é um dos conceitos fundamentais


de Programação Orientada a Objetos.

Ele permite que os dados e o código que age sobre eles


sejam agrupados em uma única unidade, protegendo
os membros de uma classe de serem acessados
por outras classes.
Encapsulamento

O encapsulamento ajuda a manter o código organizado


e fácil de entender, além de aumentar a segurança
e a flexibilidade dos sistemas.

O encapsulamento é implementado através


do uso de modificadores de acesso.
Implementação

Os principais modificadores são:

public
membros marcados como public podem ser acessados
por qualquer classe dentro do projeto.
Implementação

Os principais modificadores são:

private
membros marcados como private só podem ser acessados
pela própria classe em que foram definidos.
Implementação

Os principais modificadores são:

protected
membros marcados como protected podem ser acessados
pela própria classe em que foram definidos e por suas
subclasses.
Métodos Getters e Setters

Os métodos “getters” são usados para acessar


os valores dos atributos de uma classe
de maneira controlada.

O método “getter” geralmente tem o nome get seguido


pelo nome do atributo com a primeira letra maiúscula.
private String nome; ➡️ public String getNome( )
Métodos Getters e Setters

Os métodos “setters” são usados para modificar


os valores dos atributos de uma classe
de maneira controlada.

O método “setter” geralmente tem o nome set seguido


pelo nome do atributo com a primeira letra maiúscula.
private String nome; ➡️ public void setNome( )
Aplicação

public class Conta {


private String titular;
private double saldo;

public String getTitular() {


return titular;
}
Aplicação

public void setTitular(String titular) {


[Link] = titular;
}

public double getSaldo() {


return saldo;
}
Java - Orientação a Objetos
HERANÇA
Herança

Herança é um conceito fundamental da programação


orientada a objetos que permite que uma classe
herde os atributos e métodos de outra classe.

Isso permite criar uma nova classe com base


em uma classe existente e reutilizar seu código.
Herança

A nova classe é chamada de subclasse ou classe filha;


a classe existente é chamada de superclasse
ou classe pai/mãe.

A herança permite a criação de hierarquias de classes


e organização de código de maneira mais eficiente.
Implementação

A implementação utiliza a palavra-chave extends.


Para criar uma subclasse, usa-se a sintaxe:

class Subclasse extends Superclasse

Em Java, uma classe só pode herdar de uma outra classe,


ou seja, não existe herança múltipla.
Implementação

public class Animal {


private String nome;
private String peso;

public Animal (String nome, double peso) {


[Link] = nome;
[Link] = peso;
Implementação

public class Gato extends Animal {


private String raca;

public Gato(String nome, double peso, String raca) {


super(nome, peso); // chamando o construtor de Animal
[Link] = raca;
}
Implementação

public class Cachorro extends Animal {


private String pelo;

public Cachorro(String nome, double peso, String pelo) {


super(nome, peso); // chamando o construtor de Animal
[Link] = pelo;
}
Java - Orientação a Objetos
POLIMORFISMO
Polimorfismo

É o terceiro pilar da Programação Orientada a Objetos.

Permite que um objeto possa agir de forma diferente


ou que um objeto possa ser tratado como se fosse
de outro tipo. Isso significa que um objeto pode ter
várias formas e comportamentos diferentes.
Polimorfismo

Isso é possível porque a subclasse herda os métodos


e propriedades da superclasse e pode sobrescrever
ou adicionar novos comportamentos.

O polimorfismo possibilita tornar o código mais flexível.


Polimorfismo Estático

public class Calculadora {

public int somar(int num1, int num2) {


return num1 + num2;
}
(...)
Polimorfismo Estático

public double somar(double num1, double num2) {


return num1 + num2;

}
Polimorfismo Estático

O Polimorfismo Estático pode ser aplicado


em métodos dentro de uma mesma classe.

Também conhecido como sobrecarga ou overload.

No exemplo, o nome do método é o mesmo,


mas os parâmetros são de tipos diferentes.
Polimorfismo Dinâmico

public class CalcEspecial extends Calculadora {

public double somar(double a, double b) {


[Link]("Usando a calculadora
especial para somar");
return [Link](a, b);
(...)
Polimorfismo Dinâmico

@Override
public double somar(double a, double b) {
[Link]("Usando a calculadora
especial para somar");
return [Link](a, b);
}
Polimorfismo Dinâmico

O Polimorfismo Dinâmico é aplicado em métodos


herdados da superclasse.

É também conhecido como sobrescrita ou override.

No exemplo, o nome e os parâmetros são os mesmos,


mas a implementação é diferente.
Java - Orientação a Objetos

CLASSES
ABSTRATAS
Classes Abstratas

Uma classe abstrata é uma classe base que não pode


ser instanciada, mas que fornece uma estrutura
comum para outras classes que a estendem.

Pode conter métodos abstratos que devem


ser implementados pelas subclasses,
garantindo consistência entre elas.
Classes Abstratas

As classes abstratas são usadas para evitar a duplicação


de código, auxiliar na herança e no polimorfismo
e fornecer uma estrutura básica para as subclasses.

Em outras palavras, é uma classe que serve de modelo


para outras classes.
Classes Abstratas

Utilizada a palavra-chave abstract;


➡️ public abstract class Carro { } ⬅️ classe abstrata
➡️ public abstract void acelerar( ); ⬅️ método abstrato

1. Classes abstratas não podem ser instanciadas.

2. Podem ou não ter métodos abstratos.


Métodos Abstratos

Métodos abstratos são métodos que não podem ter corpo.

Um método abstrato obriga que a classe seja abstrata.

A subclasse concreta de uma classe abstrata


deve implementar todos os métodos abstratos.
Na Prática

public abstract class Veiculo {


String marca;
String modelo;

public abstract void abastecer();


Na Prática

public class Carro extends Veiculo {

@Override
public void abastecer() {
[Link](“Abastecendo o carro com gasolina”);

}
Na Prática

public class ScooterEletrica {

@Override
public void abastecer() {
[Link](“Carregando a scooter na tomada”);

}
Java - Orientação a Objetos
INTERFACES
Interfaces

Interfaces são classes completamente abstratas.

São geralmente usadas para especificar comportamentos


que as classes que a implementam devem por em prática.
Interfaces

Quando implementamos uma interface, sabemos


exatamente quais métodos precisamos fornecer.

Isso cria um contrato claro que facilita a organização


e o planejamento do código.
Interfaces

Para declarar uma interface, usamos a palavra-chave


interface no lugar de class.

1. A classe que implementar usará a palavra implements;


2. Não podem ser instanciadas, apenas implementadas;
3. Uma classe pode implementar mais de uma interface;
Na Prática

public interface Ferramenta {

// Métodos que devem ser implementados pelas classes


void usar();
void guardar();

}
Na Prática

public class Martelo implements Ferramenta {

@Override
public void usar() {
[Link]("O martelo está sendo usado
para bater pregos.");
}
Na Prática

@Override
public void guardar() {
[Link]("O martelo foi guardado na caixa
de ferramentas.");
}
}
Na Prática

public class Serra implements Ferramenta {

@Override
public void usar() {
[Link]("A serra está sendo usada
para serrar madeira.");
}
Na Prática

@Override
public void guardar() {
[Link]("A serra foi guardada no painel
de serras");
}
}
Diferenças

A principal diferença entre classes abstratas


e interfaces é que classes abstratas podem conter
atributos e métodos, enquanto interfaces
geralmente contém apenas métodos.

Uma classe pode herdar apenas de uma outra classe,


enquanto uma classe pode implementar várias interfaces.
Quando usar?

Classe Abstrata: Usada quando há uma relação


hierárquica clara, onde uma classe base compartilha
atributos e comportamentos com suas subclasses.

Interface: Usada para definir um contrato que várias


classes diferentes podem seguir, independentemente
de suas posições na hierarquia de herança.
Exemplos - Classes Abstratas

Para definir uma base para um conjunto de classes.

Para definir um comportamento que pode


ser compartilhado por um conjunto de classes.

Para forçar as classes a implementar um determinado


comportamento.
Exemplos - Interfaces

Para definir um contrato que as classes devem


cumprir.

Classes diferentes podem ser tratadas como instâncias


da mesma interface, facilitando o polimorfismo.

Para simplificar a implementação de um componente.


Java - Primeiro Módulo
TRATAMENTO
DE EXCEÇÕES
Tratamento de Exceções

O tratamento de exceções em Java é um mecanismo


que permite ao programador lidar com erros e exceções
que podem ocorrer durante a execução de um programa.

Isso é feito através do uso de blocos try, catch e finally,


além de palavras-chave como throw e throws.
Tratamento de Exceções

try {
-- códigos que podem gerar uma situação de exceção.
} catch (Exception ex) {
bloco de tratamento associado à condição de exceção
Exception ou as subclasses, identificada pelo objeto ex
}
Tratamento de Exceções

finally {
bloco de código que sempre será executado, havendo ou
não exceções (Não é obrigatório na estrutura)
Tratamento de Exceções

Observe o método abaixo:

public double dividir (int a, int b) {


return a / b;
}
Se "b" for igual a zero, ocorrerá uma exceção do tipo
"ArithmeticException" no momento da divisão.
Tratamento de Exceções

try {
double resultado = dividir (10, 0);
[Link](”O resultado é “ + resultado);

} catch (ArithmeticException ex) {


[Link]("Impossível dividir por zero");
}
Java - Primeiro Módulo
THROW / THROWS
Throw

A palavra-chave throw é usada para lançar


manualmente uma exceção.
Podemos usar isso ao detectarmos uma situação
em que desejamos forçar uma exceção a ocorrer.

Com throw, podemos criar e disparar uma exceção


no momento desejado.
Sintaxe

throw new TipoDeExcecao("Mensagem de erro");

Vamos reescrever o método dividir(int a, int b) {}


Sintaxe

public double dividir(int a, int b) {


if (b == 0) {
throw new ArithmeticException("Não é possível
dividir por zero!");
}
return a / b;
}
Sintaxe

try {
double resultado = dividir(10, 0);
[Link]("O resultado é: " + resultado);
} catch (ArithmeticException ex) {
[Link]("Erro: " + [Link]());
// Vai imprimir "Erro: Não é possível dividir por zero!"
}
Throws

A palavra-chave throws é usada na assinatura


de um método para indicar que ele pode lançar
determinadas exceções.

Ela é uma forma de avisar o programador que,


ao chamar aquele método, ele precisa lidar
com uma possível exceção.
Sintaxe

public void nomeDoMetodo() throws TipoDeExcecao {


// código que pode lançar a exceção
}

Isso não muda o comportamento do método,


mas informa que quem o chamar deve estar
preparado para tratar essa exceção.
Sintaxe
public double dividir(int a, int b) throws
ArithmeticException {
if (b == 0) {
throw new ArithmeticException("Não é possível
dividir por zero!");
}
return a / b;
}
Throws

Se um método está marcado com throws, significa


que quem chamar esse método deve estar preparado
para tratar a exceção ou propagar a exceção adiante.

Isso ajuda a manter o código mais robusto, pois


o programador sabe antecipadamente que o método
pode falhar em determinadas situações.
Throws - Sem Try/Catch

public static void main(String[] args) {


//vai lançar ArithmeticException e encerrar o programa
double resultado = dividir(10, 0);

[Link]("O resultado é: " + resultado);


// Não será executado
}
Throws - Com Try/Catch

try {
double resultado = dividir(10, 0); // Pode lançar exceção
[Link]("O resultado é: " + resultado);
} catch (ArithmeticException ex) { // Tratamento
[Link]("Erro: " + [Link]());
}
Java - Primeiro Módulo
MODIFICADORES
DE PROPRIEDADE
Modificadores Final e Static

Os modificadores final e static são palavras-chave


que controlam características de classes, métodos
e variáveis, garantindo organização e segurança
no código.
Java - Primeiro Módulo
MODIFICADOR
FINAL
Modificador Final

O modificador final em Java pode ser usado em variáveis,


métodos e classes.

O comportamento muda dependendo de onde é aplicado.


Modificador Final

Quando você declara uma variável como final,


está dizendo que o valor dela não pode ser alterado
depois de ser inicializado, como uma constante.

Se for uma variável de objeto (não primitiva), o que fica


constante é a referência ao objeto, mas os atributos do
objeto podem mudar.
Final em variáveis

final int idade = 30;

idade = 35; // Isso vai dar erro, pois idade é final.


Final em variáveis

final Pessoa pessoa = new Pessoa("Carlos");


// Podemos mudar o nome da pessoa
[Link]("Ana");
[Link]([Link]); // Vai imprimir "Ana"
// Não podemos fazer 'pessoa' apontar para outro objeto
pessoa = new Pessoa("João"); // Isso vai dar erro
Modificador Final

Um método marcado como final não pode ser sobrescrito


(ou seja, reescrito) por uma classe filha.

Por fim, quando uma classe é marcada como final,


significa que ninguém pode herdar dessa classe.
Final em Métodos

public class Utilidades {


public final void mostrarMensagem() {
[Link]("Exemplo de mensagem");
}

Não seria possível a uma subclasse fazer o @Override


de um método final herdado da superclasse.
Final em Classes

final class Utilidades {


public static void mostrarMensagem() {
[Link]("Exemplo de mensagem");
}

// Não é possível estender uma classe final.


class OutraUtilidade extends Utilidades { }
Java - Primeiro Módulo
MODIFICADOR
STATIC
Modificador Static

O modificador static é usado principalmente


em variáveis e métodos.

Ele significa que o membro da classe pertence à própria


classe e não a uma instância específica da classe.
Modificador Static

Uma variável static é compartilhada


por todas as instâncias da classe.

Se um objeto alterar o valor dessa variável,


todas as instâncias verão a mudança.
Modificador Static

class Contador {
public static int total = 0;

public Contador() {
total++; // Quando um objeto é criado, o total aumenta
}
}
Modificador Static

Contador c1 = new Contador();


Contador c2 = new Contador();
[Link]([Link]);

// Vai imprimir 2, pois é a mesma variável para todos.


Modificador Static

Um método static pode ser chamado sem precisar


criar um objeto da classe.

Ele pertence à classe em si, e não a um objeto específico.


Modificador Static

class Matematica {
public static int somar(int a, int b) {
return a + b;
}
}
// Não precisa criar um objeto para usar o método
[Link]([Link](3, 5));
Modificador Static

Um bloco static é executado uma vez quando a classe


é carregada na memória, mesmo antes de qualquer
instância ser criada.
Modificador Static

class Inicializacao {
static {
[Link]("Bloco static executado!");
}
}
Inicializacao obj1 = new Inicializacao(); // Ao criar o
primeiro objeto, o bloco static já terá sido executado
Java - Primeiro Módulo
COMPLEMENTOS
Java - Primeiro Módulo
SETS
Sets ou Conjuntos

Set é uma coleção que não permite elementos duplicados


e também não garante ordem de inserção, a menos
que uma implementação específica seja usada,
como o LinkedHashSet.

As operações mais comuns em um Set são: adição,


remoção, pesquisa e verificação de existência.
Sets ou Conjuntos

Assim como em outras coleções, é preciso importar


o Set e a sua implementação da biblioteca [Link].

import [Link];
import [Link];
Sintaxe do Set

Set<tipo> nomeDaVariavel;
nomeDaVariavel = new HashSet<>();

OU

Set<tipo> nomeDaVariavel = new HashSet<>();"


Métodos Comuns

Método add ➡️ [Link](elemento);


Método remove ➡️ [Link](elemento);
Método contains ➡️ [Link](elemento);
Método size ➡️ [Link]();
Método isEmpty ➡️ [Link]();
Java - Primeiro Módulo
MAPS
Map

Map é uma coleção que armazena pares de chave-valor.


Cada chave é única, mas os valores podem ser duplicados.

As operações mais comuns em um Map são: adicionar,


remover, acessar valores a partir de chaves
e verificar se uma chave existe.
Map

Para usar Map, é necessário importar o Map


e sua implementação da biblioteca [Link].

import [Link];
import [Link];
Sintaxe do Map

Map<chave, valor> nomeDaVariavel;


nomeDaVariavel = new HashMap<>();

OU

Map<chave, valor> nomeDaVariavel = new HashMap<>();


Sintaxe do Map

Método put ➡️ [Link](chave, valor);


Método get ➡️ [Link](chave);
Método remove ➡️ [Link](chave);
Método containsKey ➡️ [Link](chave);
Método containsValue ➡️ [Link](valor);
Método size ➡️ [Link]();
Fuctura Tecnologia
Escola de Software Livre

Java - Primeiro Módulo


OBRIGADO!

Você também pode gostar