Você está na página 1de 35

POO – Java

Classes no Java
prof.silvano.oliveira@gmail.com
Classes
• Para que a JVM crie objetos:
• Ela precisa saber qual classe o objeto pertence
• Na classe estão definidos os atributos e métodos
• Programamos classes e depois as usamos
• Tudo em JAVA são classes
• Menos os tipos primitivos
• Uma classe define um novo tipo
• Componentes da classe
• São os membros da classe
Prof Silvano Oliveira (POO - Java) 2
Definição de classe
Declaração

[Opções] class NomeClasse {


[atributos]
[construtores]
[métodos]
}

Corpo

Prof Silvano Oliveira (POO - Java) 3


Exemplo
public class Lampada {
private boolean ligada;
private double potencia; Atributos
public Lampada() {
ligada = false; Construtor
}

public void ligar() {


ligada = true;
}
public void desligar() {
ligada = false;
Métodos
}
public boolean estaLigada() {
return ligada;
}
}

Prof Silvano Oliveira (POO - Java) 4


O que fazer
• Edite o arquivo fonte
• Salve com a extensão .java
• Se a classe for public o nome do arquivo deve ser o mesmo
nome da classe com a extensão .java
• Compile com o javac
• Será criado o arquivo .class que contém a classe a ser usada
• Este arquivo deverá estar no CLASSPATH da JVM
• CLASSPATH é o lugar onde a JVM procura as classes
• Variável de ambiente CLASSPATH
• Crie um programa que use a classe
• Objetos dessa classe podem ser criados e manipulados

Prof Silvano Oliveira (POO - Java) 5


import java.util.Scanner

Exemplo

Prof Silvano Oliveira (POO - Java) 6


Atributos
• São as variáveis de instância
• Fazem parte de cada objeto (instância)
• Declarada fora dos métodos
• "Vivem" enquanto o objeto "viver"
• São pré-inicializadas
• boolean ➔ false exemplo:
public int x;
• tipo aritmético ➔ 0 private float y;
• char ➔ ‘\u0000’ Ponto p1;
• class ➔ null
• Obs: Todo objeto possui um identificador chamado this, que
é uma referência para o próprio objeto.
Prof Silvano Oliveira (POO - Java) 7
this
• Todo objeto possui um atributo que é uma
referência a ele mesmo
• Usado para acesso a membros do próprio objeto
• this.membro
• Evita conflito
• Com parâmetros de métodos, por exemplo
• Exemplo class Qualquer {
int x, y;
public void mover(int x,int y){
this.x = x;
this.y = y;
}
}
Prof Silvano Oliveira (POO - Java) 8
Métodos
• Declaração de método:
• <opcoes> tipoRetorno nomeMetodo (parametros)
• public int metodo(float x)
• Passagem de parâmetros:
• Deve ser informados o tipo e identificador dos parâmetros.
• Funciona no método como uma variável normal
• Passam o valor do identificador

Prof Silvano Oliveira (POO - Java) 9


Métodos
• Corpo do método:
• Implementa as operações do método
• Fica entre chaves ({ })
• Variáveis podem ser criadas
• Ela é dita local
• Não é pré-inicializada.
• Só existe enquanto o método está em execução

Prof Silvano Oliveira (POO - Java) 10


Construtores
• Mesmo nome da classe
• Não possui retorno
• Podem ser vários
• Diferença na quantidade e tipo dos parâmetros
• Construtor padrão é fornecido
• Se não houver pelo menos um definido
• Não possui parâmetros
• É chamado na execução do new
Prof Silvano Oliveira (POO - Java) 11
public class Ponto {
private double x,y;
Outro exemplo public Ponto() {
x = 0; y = 0;
}
• Ponto public Ponto (double x, double y) {
• Plano cartesiano this.x = x; this.y = y;
}
• Coordenadas X e Y public void moverPara (double x, double y) {
• Pode ser movido de lugar this.x = x; this.y = y;
• Podemos saber sua }
distância da origem public double getX () {
return x;
}
public double getY () {
return y;
}
public double distanciaOrigem () {
double distancia;
distancia = (double)Math.sqrt(x*x +y*y);
return distancia;
}
public String toString () {
return "Ponto ("+x+","+y+")";
}
Prof Silvano Oliveira (POO - Java) } 12
Elementos do modelo de objetos
• Abstração
• Uma abstração denota as características essenciais de um
objeto que o distingue de todas as outras espécies de
objetos e assim provê limites conceituais bem definidos,
sempre relativos à perspectiva de um observador.
• Encapsulamento
• Encapsulamento é o processo de esconder todos os detalhes
de um objeto que não contribuem para suas características
essenciais

Prof Silvano Oliveira (POO - Java) 13


Visibilidade
• Proteção de acesso
• Proteger o interior da classe
• Explicitar o que usuários (da classe) precisa saber
• pode ser:
• private: Apenas membros da classe têm acesso
• protected: Membros da classe e subclasses
• public: Todos têm acesso
• default: Apenas membros do mesmo pacote

Prof Silvano Oliveira (POO - Java) 14


Proteção de acesso
• Interface
• Visão externa da classe
• O que os objetos da classe fazem
• Definem o “contrato” da classe
• O que o cliente precisa conhecer da classe
• Implementação
• Visão interna da classe
• Como os objetos fazem as operações
• Representação interna
• cliente não precisa (nem deve) conhecer a implementação
• Realizam o contrato definitivo pela interface
Prof Silvano Oliveira (POO - Java) 15
Proteção de acesso
• Atributos fazem parte a implementação
• Declare-os como private
• Nem todos os métodos fazem parte da interface
• Métodos que servem para auxiliar outros métodos
• Declare-os private
• Deixe public apenas o que o cliente deve saber
• Métodos da interface

Prof Silvano Oliveira (POO - Java) 16


Convenção de nomes
• Variáveis e Métodos:
• Use minúsculas.
• Se o nome consiste de várias palavras, concatene-as e use a
primeira letra de cada uma delas em maiúsculo.
• Variáveis: raio e area
• Método: calcularArea
• Nomes de Classes:
• Use a Primeira letra de cada palavra em maiúscula
• Classe: Circulo, Ponto, NumeroComplexo
Prof Silvano Oliveira (POO - Java) 17
CONVENÇÃO DE NOMENCLATURA
• Classes e interfaces: A primeira letra deve ser maiúscula e,
caso o nome seja formado por mais de uma palavra, as
demais palavras devem ter de uma palavra as demais
palavras devem ter sua primeira letra maiúscula também
(CamelCase);
• Métodos: A primeira letra deve ser minúscula e após
devemos aplicar o camelCase;
• Variáveis: Da mesma forma que métodos;
• Constantes: Todas as letras do nome devem ser maiúsculas
e caso seja formada por mais de uma palavra separada por
underscore (sublinhado).

Prof Silvano Oliveira (POO - Java) 18


CONVENÇÃO DE NOMENCLATURA - EXEMPLOS

Classes Métodos Variáveis Constantes


Carro desligar motor COMBUSTIVEL
CursoJavaIniciante iniciarModulo quantidadeModulos NOME_CURSO
Hotel reservarSuiteMaster nomeReservaSuite TAXA_SERVICO

Prof Silvano Oliveira (POO - Java) 19


CONTROLE DE FLUXO

break e continue

Prof Silvano Oliveira (POO - Java) 20


CONTROLE DE FLUXO

break e continue

Prof Silvano Oliveira (POO - Java) 21


Exercícios
• Criar um projeto chamado ARRAY, e nele colocar as
classes abaixo:
1. Crie um programa que percorra um array de 10
posições e imprima o seu conteúdo. (Array01.java)
vetor = {2, 4, 6, 8, 10, 12, 14, 16, 18, 20}
2. Escreva um programa que some todos os valores
contidos no array da questão anterior e calcule a
média. (Array02.java)

Prof Silvano Oliveira (POO - Java) 22


Exercícios
• Criar um projeto chamado ARRAY, e nele colocar as classes
abaixo:
3. Desenvolva um programa que dado o array de 10
números inteiros da questão 01, multiplique o primeiro
elemento pelo seguinte, o resultado deve então ser
multiplicado pelo próximo elemento até que todos os
elementos sejam percorridos. Imprima o valor final.
(Array03.java)
4. Utilizando a classe Scanner, já apresentada em módulos
anteriores, faça um programa que permita o usuário
efetuar a entrada de 10 números quaisquer. Faça um
algoritmo que ordene estes números. (Array04.java)
Prof Silvano Oliveira (POO - Java) 23
Solução do Exercício (01)
• Crie um programa que percorra um array de 10 posições
e imprima o seu conteúdo. (Array01.java)
• vetor = {2, 4, 6, 8, 10, 12, 14, 16, 18, 20}

Prof Silvano Oliveira (POO - Java) 24


01 Array01.java
public class Array01 {
public static void main(String[] args) {
int[] vet = {2,4,6,8,10,12,14,16,18,20};

for (int i=0; i<vet.length; i++) {


System.out.println(vet[i]);
}
}
}

Prof Silvano Oliveira (POO - Java) 25


Solução do Exercício (02)
• Escreva um programa que some todos os valores
contidos no array da questão anterior e calcule a média.
(Array02.java)

Prof Silvano Oliveira (POO - Java) 26


02 Array02.java
public class Array02 {
public static void main(String[] args) {
int[] vet = {2,4,6,8,10,12,14,16,18,20};
double soma = 0;
double media = 0;

for (int i=0; i<vet.length; i++) {


soma += vet[i];
}
media = soma/vet.length;
System.out.println("Soma: " + soma);
System.out.println("Media: " + media);
}
}

Prof Silvano Oliveira (POO - Java) 27


Solução do Exercício (03)
• Desenvolva um programa que dado o array de 10
números inteiros da questão 01, multiplique o primeiro
elemento pelo seguinte, o resultado deve então ser
multiplicado pelo próximo elemento até que todos os
elementos sejam percorridos. Imprima o valor final.
(Array03.java)

Prof Silvano Oliveira (POO - Java) 28


03 Array03.java
public class Array03 {
public static void main(String[] args) {
int[] vet = {2,4,6,8,10,12,14,16,18,20};
double mult = 1;

for (int i=0; i<vet.length; i++) {


mult *= vet[i];
}
System.out.println("Multiplicacao: " + mult);
}
}

Prof Silvano Oliveira (POO - Java) 29


Solução do Exercício (04)
• Utilizando a classe Scanner, já apresentada em módulos
anteriores, faça um programa que permita o usuário
efetuar a entrada de 10 números quaisquer. Faça um
algoritmo que ordene estes números. (Array04.java)

Prof Silvano Oliveira (POO - Java) 30


import java.util.Scanner;
public class Array04 {
04 Array04.java public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] vet = new int[10];

for (int i=0; i<vet.length; i++) {


System.out.print("Digite o numero " + (i+1) + ": ");
vet[i] = sc.nextInt();
}
// Organizar
for (int i=0; i<vet.length-1; i++) {
for (int j=i+1; j<vet.length; j++) {
if (vet[i]>vet[j]) {
int temp = vet[i];
vet[i] = vet[j];
vet[j] = temp;
}
}
}
// Imprimir
for (int i=0; i<vet.length; i++) {
System.out.print(vet[i] + "|");
}
}
}

Prof Silvano Oliveira (POO - Java) 31


04 Array04.java import java.util.Arrays;
import java.util.Scanner;
public class Array04 {
Outra solução public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] vet = new int[10];

for (int i=0; i<vet.length; i++) {


System.out.print("Digite o numero " + (i+1) + ": ");
vet[i] = sc.nextInt();
}
// Organizar
Arrays.sort(vet);

// Imprimir
for (int i=0; i<vet.length; i++) {
System.out.print(vet[i] + "|");
}
}
}

Prof Silvano Oliveira (POO - Java) 32


Exercício
1. Uma classe que permite cadastrar pessoas com
nome, email e telefone. Um método deve exibir o
cartão de visita desta pessoa.
2. Uma classe que simula uma calculadora de 4
operações, calculando dois números fornecidos pelo
usuário e exibindo o resultado quando solicitado.

Prof Silvano Oliveira (POO - Java) 33


Resposta 1 – classe Principal

public class Principal {


public static void main(String[] args) {
Pessoa pessoa = new Pessoa();
pessoa.lerCartao();
pessoa.imprimirCartao();
}
}

Prof Silvano Oliveira (POO - Java) 34


Resposta 1 – classe Pessoa
import java.util.Scanner; public String getNome() {
public class Pessoa { return nome;
static String nome; }
static String email; public void setNome(String nome) {
static String fone; this.nome = nome;
private Scanner sc; }
void lerCartao() { public String getEmail() {
sc = new Scanner(System.in); return email;
System.out.print("Nome: "); }
nome = sc.nextLine(); public void setEmail(String email) {
System.out.print("email: "); this.email = email;
email = sc.nextLine(); }
System.out.print("Fone: "); public String getFone() {
fone = sc.nextLine(); return fone;
} }
void imprimirCartao() { public void setFone(String fone) {
System.out.println(getNome()); this.fone = fone;
System.out.println(getEmail()); }
System.out.println(getFone()); }
}

Prof Silvano Oliveira (POO - Java) 35

Você também pode gostar