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

Anotações Java

O documento fornece uma introdução abrangente à programação em Java, abordando conceitos fundamentais como variáveis, objetos, herança, polimorfismo, classes abstratas e interfaces. Ele também discute comandos de seleção e iteração, além de explicar a associação entre classes e o uso de arrays. Exemplos de código são apresentados para ilustrar a aplicação prática desses conceitos.

Enviado por

rafaelapilla16
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)
4 visualizações21 páginas

Anotações Java

O documento fornece uma introdução abrangente à programação em Java, abordando conceitos fundamentais como variáveis, objetos, herança, polimorfismo, classes abstratas e interfaces. Ele também discute comandos de seleção e iteração, além de explicar a associação entre classes e o uso de arrays. Exemplos de código são apresentados para ilustrar a aplicação prática desses conceitos.

Enviado por

rafaelapilla16
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

Array Classe Abstrata Comando de Iteração


Comando de Seleção Conceitos Básicos
Selecionar Herança & Poliformismo Interface
Tratamento de Exeções

💡 Java é uma linguagem compilada → JVM (código em java é


transformado em bytecode, sendo assim, qualquer sistema com a
JVM instalada pode rodar esse código)

Criando uma variável


public class Pessoa{
public static void main(String[]args){
//criando uma variável
String nome = Rafaela;
//mostrando na tela
[Link]("Olá " + nome);

para acessar a variável salva basta usar seu nome → ex.: print(X)

Java 1
‐ variável local pertence ao método
‐ variável global pertence à classe
‐ variáveis chuck Norris são as que não morrem
‐ escopo de uma variável é onde ela é visível

Criando um objeto
public class Pessoa{
private String nome;
private int idade;

public String toString(){


return "Pessoa nome = " + nome + ", idade = " + idad
e;
}

public Pessoa(String nome, int idade){


[Link] = nome;
[Link] = idade;
}

public String getNome(){


return [Link];
}

public int getIdade(){


return [Link];
}

public void setNome(String nome){


[Link] = nome;
}

public void setIdade(int idade){


[Link] = idade;
}

Java 2
}

public class NovaPessoa {


public static void main(String[]args){
Pessoa pessoa1 = new Pessoa("Rafaela", 19);
[Link](pessoa1);
}
}

retorno:
Pessoa nome = Rafaela, idade = 19

‐ a classe main é uma classe de entrada, então não é uma boa prática escrever
atributos dentro dessa classe
‐ se algo é criado dentro de um colchetes, ele só vai existir lá dentro por isso o
método de impressão precisou ser escrito junto com a criação do objeto, se
não ele não conseguiria exibir o objeto (variável local → criada dentro do
método)
‐ this. serve para deixar a variável permanente na memória (variável chuck
norris → variáveis que não morrem)
‐ variáveis global pertencem a classe

Entrada de Dados
import [Link];

public class EntradaDeDados {


public static void main(String[] args) {
Scanner scanner = new Scanner([Link]);

[Link]("Digite seu nome: ");


String nome = [Link]();

Java 3
[Link]("Digite sua idade: ");
int idade = [Link]();

[Link]("Olá, " + nome + "! Você tem " + idad


e + " anos.");
}
}

Regra de Negócio
//classe com atributos
public class Pessoa{
private String nome;
private int idade;
private String cpf;

//método contrutor que recebe todos os atributos


//+ criando uma regra de negócio para idade
public Pessoa(String nome, int idade, String cpf){
[Link] = nome;
if(idade < 0){
[Link] = 0;
} else {
[Link] = idade;
}
[Link] = cpf;
//se eu criar um método set preciso escrever a mesma coisa

Herança e Poliformismo
‐ herança serve para reaproveitamento de código

‐ para duas classes interagirem elas precisam se conhecer → objeto de uma


classe interage com o objeto de outra classe
‐ a herança existe quando uma classe mais especializada é criada a partir de
uma classe já existente → subclasse herda os atributos e métodos da

Java 4
superclasse (atributos e métodos de uma subclasse são exclusivos a ela)
subclasses também podem ter subclasses
‐ tipos de métodos quando se tem uma herança

sobre escrito → foi escrito na classe mãe e na classe filha


herdado → foi escrito só na classe mãe
exclusivo → foi escrito só na classe filha
sobre carga → mesmo construtor com parâmetros diferentes
‐ a primeira linha do construtor da subclasse é a chamada do construtor da
superclasse → quando eu crio uma subclasse a primeira coisa que preciso
fazer é armazenar na memória as informações da superclasse

public class Gerente extends Funcionario


//classe Gerente é um tipo de Funcionário

Criando um objeto Gerente

public Gerente (String n, double s, int d) {


super(n, s, d);
nomeSecretário = "Alfredo";
}

→ código sempre chama o que é mais perto

‐ o construtor com a classe menos específica é chamada de classe abstrata

‐ poliformismo é quando um objeto assume a diferentes formas → faço uma


referência apontar para diferentes objetos

Atleta a = new Corredor();


//ao decorrer do código preciso mudar essa referência,
//e eu posso
a = new Nadador();

para que a referência consiga acessar os métodos exclusivos de cada


subclasse eu preciso criar uma relação

Java 5
Corredor c = (Corredor)a;
[Link]();
//não posso escrever [Link] porque atleta não corre, mas c
orredor sim c não é um corredor novo, e sim um que já exist
e (a)

Exemplo visual

tem a sobre carga do método emitir som


na classe teste Animal podemos ver o poliformismo → emir som vai latir e
miar
‐ up casting → eu faço uma referência da superclasse aponta para um objeto
da subclasse
‐ down casting → a minha referência da superclasse está explicitamente
dizendo que ela se comporta como tal subclasse
‐ instanceof: vê se uma referência foi instanciada para determinada classe

Atleta a = new ___

Java 6
[Link]();
[Link]();

if(a instanceof Corredor){


Corredor c = (Corredor)a;
[Link]();
//ou ((Corredor)a).corre();

//esse if só vai rodar se o a lá em cima estiver apontando


//para um new Corredor

‐ para a superclasse acessar um método exclusivo ela precisa se comportar


como a subclasse

Inter i = new Gremio();


[Link];
((Gremio)i).ganha();

‐ uma subclasse não pode subir e ser uma superclasse

Funcionario f = new Estagiario();


Estagiario e = new Estagiario();
// o e nunca vai subir na vida, ele sempre vai ser um
//estagiário, já o f é um funcionário que no momento
//está se comportando como estagiário, futuramente
//esse f pode apontar para gerente por exemplo

Classe Abstrata

💡 classes que eu não consigo gerar objetos a partir dela, não


consigo instanciar → servem como molde para criação de classes
concretas (subclasses)

muitas das vezes as superclasses irão ser abstratas

Java 7
💡 ex: tenho a superclasse deputado com duas subclasses, deputado
federal e deputado estadual. quando eu for criar objetos, com as
informações de cada deputado, eles já estarão dentro da
subclasse, não irei criar um deputado aleatório, irei criar um
deputado ou estadual ou federal. por isso as superclasses não
precisam ser instanciadas

💡 lembrando que para criar uma subclasse eu não preciso


instanciar, eu só estendo da superclasse

método abstrato não tem código dentro dele (sem {}) → Todos os métodos
abstratos herdados da superclasse precisam ser preenchidos para que o
código rode
Se uma classe tem um método abstrato, ela é obrigatoriamente abstrata
também. Porem nem toda classe abstrata precisa de um método abstrato
Criando um método e uma classe abstrata
Método abstrato

public abstract void teste();

Classe abstrata

public abstract class Pessoa

Não posso criar objetos de uma classe abstrata mas posso criar referências
dessa classe
só consigo ter arrays de subclasses
instance of → imprime informações específicas

Interfaces
servem para comunicação entre partes distintas
Regras de interface

Java 8
Todos os métodos precisar ser abstratos e públicos
Não pode conter implementação
Todos os atributos precisam ser constantes
interfaces também servem como modelos (não são classes → não podem
ser instanciadas)
uma classe pode implementar várias interfaces

Criando interface

public interface MinhaInterface{

Classes implementa uma interface ou mais de uma

public class X implements Interface {

public class Y implements Interce1, Interface2{

@Override serve para quando sobrescrevo um método

Herdando uma classe e implementando ao mesmo tempo

public class X extends Y implements Interface {

posso tem um array de interface → dentro desse array tenho várias objetos
que implementaram essa interface

Java 9
Diferença entre Classe Abstrata e Interface
Classes abstratas são feitas para reutilização de código, não são instanciadas
mas posso criar subclasses a partir dela. Já as interfaces servem para
contratos, um modelo que precisa ser seguido, elas não podem ser
instanciadas e nem ter atributos e métodos que não sejam abstratos.

Comando de Seleção (if/else e switch/case)


if

if (i > 7)
[Link]("Valor de i é maior que 7");
if (op == 2)
[Link]("Opção 2");
op = 0;
[Link]("Opção setada para 0 novamente");
}
if (a != 0 && a % 2 == 0)
[Link]("O valor de a é par!");

if/else

if (i > 7)
[Link]("Valor de i é maior que 7");
else
[Link]("Valor de i é menor ou igual a 7");
if (a != 0 && a % 2 == 0)
imprime Dados ();
[Link]("O valor de a é par!");
}
else
imprimeErro();
[Link]("O valor de a não é par!");
}

else/if

Java 10
if (a != 0 && a % 2 == 0) {
imprimeDados ();
[Link]("O valor de a é par!");
}else if (a == 0)
[Link]("O valor de a é 0!");
else if (a % 2 != 0)
[Link]("O valor de a é ímpar!");
else
imprimeErro ();

switch/case

public static void main(String args[]) {


int x=1;
switch(x){
case 1:
[Link]("É 1");
break;
case 5:
[Link]("É 5");
break;
case 10:
[Link]("É 10");
break;
default:
[Link]("Nenhum");
}
}

é importante notar a presença do break após cada um dos cases. Ele é


importante para parar o switch, pois depois de entrar em um case, continuará
entrando nos que estiverem abaixo e, inclusive, no default

Comandos de Iteração (while e for)


while

Java 11
i = 0 ; while (i < 7) {
[Link]("Valor de i é menor que 7");
i++;
}
-------
while (true)
[Link]("Hello world!")
-------
while (x - y <= 15)
x = y * y;

existem casos em que vou precisar usar o break para sair do loop
for

for (int i=0; i<7; i++)


[Link]("Valor de i é menor que 7");

//parênteses seguem a ordem de (valor inicial; condição;


//atualização do valor inicial)

while é usado até a sentença for falsa, já o for corre por determinadas vezes

Associação entre Classes


Tipos de Associação
Associação por composição: Uma classe contém uma ou mais instâncias
de outra classe.

public class Carro {


private Motor motor;
private Roda roda;

public Carro(Motor motor, Roda roda) {


[Link] = motor;
[Link] = roda;

Java 12
}
}

public class Motor {


private int potencia;

public Motor(int potencia) {


[Link] = potencia;
}
}

public class Roda {


private int tamanho;

public Roda(int tamanho) {


[Link] = tamanho;
}
}

Associação por agregação: Uma classe contém uma ou mais referências a


instâncias de outra classe.

public class Departamento {


private List<Funcionario> funcionarios;

public Departamento() {
[Link] = new ArrayList<>();
}

public void addFuncionario(Funcionario funcionario) {


[Link](funcionario);
}
}

public class Funcionario {


private String nome;

public Funcionario(String nome) {

Java 13
[Link] = nome;
}
}

Associação por herança: Uma classe herda as características e


comportamentos de outra classe.

public abstract class Veiculo {


private int velocidade;

public Veiculo(int velocidade) {


[Link] = velocidade;
}

public abstract void acelerar();


}

public class Carro extends Veiculo {


public Carro(int velocidade) {
super(velocidade);
}

@Override
public void acelerar() {
[Link]("Acelerando carro...");
}
}

public class Moto extends Veiculo {


public Moto(int velocidade) {
super(velocidade);
}

@Override
public void acelerar() {
[Link]("Acelerando moto...");
}
}

Java 14
Array
*todas as explicações se tratam de Arrays Unidimensionais, que são
armazenados em uma linha, nem sempre sendo colocas em ordem

Array é uma estrutura na memória que faz com que eu consiga armazenar mais
de uma informação na memória ao mesmo tempo
*todas as variáveis armazenadas em um array precisam ser do mesmo tipo
*todas as variáveis que estão em um array posso acessar pelo mesmo nome
(nome do array)
*cada item do array é um elemento → os elementos são associados a uma
posição numérica

Declarando um Array
*preciso do tipo e do tamanho (quantidade de elementos) para declarar um
array

int[n° de posições] nomeArray;


//ou
int nomeArray[n° de posições];

*eu não posso mudar o tamanho de um array depois que ele já foi criado

Usando um Array
*preciso instanciar

int valorTotal = new int[10];

int valorTotal[0] = 26
int valorTotal[1] = 30

//ou

Java 15
int valorTotal = {26, 30, ...}

*eu só posso usar um array quando os objetos forem instanciados, ou seja,


quando todos os elementos estejam preenchidos com algum valor

Lendo um Array

for(int i = 0; i < [Link]; i++)


valorTotal[i] = 0;
//i é a posição e +args[i] é o conteúdo da posição

Verificando se um Array está nulo

if (myArray == null) {
// The array is null
} else {
// The array is not null
}

//ou

import [Link];

// ...

if ([Link](myArray)) {
// The array is null
} else {
// The array is not null
}

Verificando se um elemento de um Array está nulo

Java 16
if (myArray[i] == null) {
// The element at index i is null
} else {
// The element at index i is not null
}

//ou

String[] myArray = new String[5];


myArray[0] = "Hello";
myArray[1] = null;
myArray[2] = "World";

if (myArray[1] == null) {
[Link]("The element at index 1 is null");
} else {
[Link]("The element at index 1 is not nul
l");
}

Criando um Array de Objetos

Pessoa[]p1 = new Pessoa[4];


//separei um espaço de memória para armazenar 4 objetos
//de pessoa
p1[0] = new Pessoa("José");
p1[1] = new Pessoa("Maria");
p1[2] = new Pessoa("João");
p1[3] = new Pessoa("Ana");

*para pode acessar os métodos preciso do objeto criado → não posso só


reservar espaço na memória e ir criando get e set porque os objetos ainda não
existem
*quando eu apenas reservo o espaço na memória todos os elementos ficam
com o valor padrão, que seria nulo

Java 17
Verificando se há alguma posição nula em um Array de Objetos

for(int i=0; i<[Link]; i++)


if(p1[i] == null)
[Link]("Posição não possui objeto referenci
ado");

Adicionando valores a uma posição de um Array de Objetos

c1[27] = new Carta(7, "ouros"); //insere um objeto diretame


nte
//em uma posição

//ou

for(int i=0; i<[Link]; i++)


p1[i] = new Pessoa("Nome da pessoa "+i); //insere objeto
s
//em todas as posições

Array Bidimensional
*são armazenados em forma de tabela/matriz
*cada célula é um elemento

Declarando um Array Bidimensional

int[Linha][Coluna]valorTotal

int valorTotal[Linha][Coluna]

Instanciando um Array Bidimensional de Objetos

Java 18
valorTotal = new int[10][2]

Percorrendo um Array Bidimensional

for (int i = 0; i < [Link]; i++) {


for (int j = 0; j < myArray[i].length; j++) {
// access each element using myArray[i][j]
[Link](myArray[i][j] + " ");
}
[Link](); // print a newline after each row
}

*uso um laço para linha (i) e outro para coluna (j)

Tratando Exceções
tratamento de exceções precisam aparecem quando o código pode apresentar
algum erro, e para evitá-lo eu lanço (throw) uma exceção
Lançando uma exceção e tratando ela:
*classe de domínio

public class Financeimento{


public double valorTotal;
public double entrada;
public int parcelas;

public financiamento(double valorTotal, double entrada, int


parcelas){
if (entrada < valorTotal * 0.2) {
throw new RuntimeException("A entrada deve ser de no
mínio 20% do valor total)
} else if (parcelas < 6) {
throw new RuntimeException("O número mínio de parcela
s é 6)

Java 19
}

[Link] = valorTotal;
[Link] = entrada;
[Link] = parcelas;
}
}

*classe principal

public class ProgramaPrincipal{


public static void main(String[]args){
double valorTotal = 1000.0;
double entrada = 300;
double parcelas = 10;

try {
financiamento f = new financiamento(valorTotal, entrad
a, parcelas);
[Link]([Link]());
} catch (RuntimeException e) {
[Link]([Link]());
}
}
}

Nesse código estou criando um objeto financiamento e estou pedindo para que
me mostre o valor da prestação que preciso pagar, já como as regras de
negócio estão na classe de domínio e não pode haver interação com a tela eu
lanço uma exceção. Lançando uma exceção eu preciso aderir o try/catch, que
seria tentar executar certo pedaço de código, e se não for possível eu mostro
as exceções que criei na classe de domínio
Tipo de Exceções
Runtime → pode ser tratada com if/else e a JVM não exige esse tratamento
(unchecked → não precisa do try/catch)
Checked → são situações que o java diz que preciso tratar (para x exceção
usar x coisa)

Java 20
File no found exception → quer dizer que não conseguiu encontrar o
arquivo

o bom é a maioria das vezes usar as exceções, pois se começo a usar muito
if/else eu começo a perder o controle do que é regra de negócio e o que é um
tratamento de exceção

Java 21

Você também pode gostar