• Nenhum resultado encontrado

Java Básico. Igor

N/A
N/A
Protected

Academic year: 2022

Share "Java Básico. Igor"

Copied!
28
0
0

Texto

(1)

+

Java Básico

Igor Ebrahim ([email protected])

1

(2)

Módulo 3

Programação Orientada a Objetos

2

(3)

Programação Orientada a Objetos

O que é POO?

Baseada na representação de objetos do mundo real

Vantagens

Facilidade de Manutenção

Maior reuso

(4)

Objetos

Um objeto possui:

Identidade: permite destingui-lo de outros

Estados: características

Comportamentos: o que pode ser feito com ele (ou nele)

Por exemplo:

Os estados de uma conta bancária são o seu número e o seu saldo

Os comportamentos atribuídos a uma conta bancária são a habilidade de realizar depósitos e saques

Note que o comportamento de um objeto pode modificar seus estados

(5)

Classes

Um objeto é definido por uma classe

Características (atributos)

Comportamentos (métodos)

Comportamentos (métodos)

Múltiplos objetos podem ser criados (instanciados) por uma única classe

Classe conceito

Objeto materialização

(6)

Objetos x Classes

Uma Uma Uma

Uma classeclasseclasseclasse

((((conceitoconceitoconceitoconceito)))) Um Um Um Um objetoobjetoobjetoobjeto ((((materializaçãomaterializaçãomaterializaçãomaterialização))))

Conta Bancária

Número: 123-1 Saldo: R$5.257

Número: 142-5 Saldo: R$1.245.069

Número: 653-2 Saldo: R$16.833

Múltiplos Múltiplos Múltiplos

Múltiplos objetosobjetosobjetosobjetos definidosdefinidosdefinidosdefinidos por

por por

por umaumauma mesmauma mesmamesmamesma classeclasseclasseclasse

(7)

Atributos

private String numero;

modificadores modificadores modificadores

modificadores tipotipotipotipo nomenomenomenome

Determinam as características do objeto

Os modificadores são opcionais

Vários atributos podem ser declarados na mesma linha

Um atributo pode ser inicializado na declaração

(8)

Exemplos

class Cadeira { class Lapis {

String cor;

}

int numeroPernas;

String fabricante;

} class Conta{

String numero;

double saldo;

}

(9)

Métodos

public double calcular(int valor, double outroValor) { ... }

modificadores modificadores modificadores

modificadores tipotipotipotipo de de de de retornoretornoretorno nomeretorno nomenomenome parâmetrosparâmetrosparâmetrosparâmetros

Operações que realizam ações ou modificam o objeto responsável pela sua execução

O corpo do método determina o comportamento

E também pode conter declaração de variáveis

Cuja existência e valores são válidos somente dentro do método em que são declaradas.

(10)

Exemplo (return)

class Conta{

String numero;

double saldo;

String

String getNumerogetNumero() {() { return

return numeronumero;; }

}

double

double getSaldogetSaldo() {() { return

return saldosaldo;; }

}

...

}

(11)

Exemplo (void)

class Conta{

String numero;

double saldo;

double saldo;

void

void creditarcreditar(double valor) {(double valor) { saldo

saldo = = saldosaldo + valor;+ valor;

} } ...

}

(12)

Métodos

Por que no método creditar não temos o número da conta como parâmetro?

Métodos são invocados por instâncias (objetos)

Também podem ser invocados pela classe (métodos estáticos)

Parâmetros são passados por cópia

(13)

Chamada de Métodos

operador operador operador

operador de de de de chamadachamadachamadachamada de de

de de métodométodométodométodo

conta.creditar(50.0);

variável variável variável

variável contendocontendocontendocontendo referência

referência referência

referência paraparaparapara objeto

objeto objeto objeto

nome nome nome

nome do do do métododo métodométodométodo a ser

a ser a ser

a ser executadoexecutadoexecutadoexecutado

(14)

Instanciando Objetos

Objetos precisam ser criados antes de serem utilizados

A criação é feita com o operador new

A criação é feita com o operador new

Conta c = new Conta();

construtor construtor construtor construtor

(15)

Construtores

Constutores definem como os atributos do objeto vão ser inicializados

São semelhantes a métodos, mas não têm tipo de retorno

O nome do construtor deve ser exatamente o nome da classe

O nome do construtor deve ser exatamente o nome da classe

Um classe pode ter diversos construtores, diferenciados pelos parâmetros

public Conta(String numero) { this.numero = numero;

}

(16)

Construtor default

Caso não seja definido um construtor, um construtor default é fornecido implicitamente

O construtor default inicializa os atributos com seus valores padrões

O construtor default não tem parâmetros

Quando um construtor é definido, o construtor default não é mais gerado

public Conta() { ...

}

(17)

Valores padrões para atributos

Tipo Valor Padrão

byte, short, int, long 0

float 0.0f

float 0.0f

double 0.0

char ‘\u0000’

Tipos referência

(String, arrays, objetos em geral)

null

boolean false

(18)

Prática

1. Escreva a classe Conta. Ela deve possuir

número, saldo e limite, e deve ser possível creditar, debitar e transferir valores.

Não deve ser possível debitar um valor maior que o saldo;

2. Instancie 3 contas diferentes e utilize pelo menos uma vez cada uma das operações implementadas na questão anterior.

(19)

Remoção de Objetos

Em Java, não temos um método para

remoção explícita de objetos da memória (como o free() de C++);

Gargabe Collector (coletor de lixo) elimina objetos da memória quando eles não são mais referenciados;

A JVM que decide a hora que será feita a coleta de lixo;

(20)

Modificadores

Acesso

public

protected

Outros

static

final

protected

private

default

final

native

transient

synchronized

(21)

Modificadores de Acesso

São aplicados a:

Classes;

Atributos;

Atributos;

Métodos ;

Construtores;

Não se aplicam a variáveis locais;

(22)

public

Classe: pode ser instanciada por qualquer outra classe

Atributos: podem ser acessados por objetos de qualquer classe

Métodos: podem ser chamados por métodos de qualquer classe public

public class Conta{

public

public String numero;

...

public

public void debitar(double valor) { saldo = saldo – valor;

} ...

...

}

(23)

protected

Classe: não se aplica

Atributos: podem ser acessados por objetos de classes dentro do mesmo pacote ou de qualquer subclasse da classe ao qual ele pertence

Métodos: podem ser chamados por objetos de classes dentro do mesmo

Métodos: podem ser chamados por objetos de classes dentro do mesmo pacote ou de qualquer subclasse da classe ao qual ele pertence

public

public class Conta{

protected

protected String numero;

...

protected

protected void debitar(double valor) { saldo = saldo – valor;

} ...

...

}

(24)

default

Classe: visível apenas por classes do mesmo pacote

Atributos: podem ser acessados por objetos de classes dentro do mesmo pacote

Métodos: podem ser chamados por objetos de classes dentro do mesmo pacote

class Conta{

String numero;

...

void debitar(double valor) { saldo = saldo – valor;

} ...

...

}

(25)

private

Atributos: podem ser acessados apenas por objetos da mesma classe

Métodos: podem ser chamados por

Métodos: podem ser chamados por objetos da mesma classe

class Conta{

private

private String numero;

...

private

private void debitar(double valor) { saldo = saldo – valor;

} ...

...

}

(26)

Encapsulamento

Visões de objetos:

Interna: atributos e métodos da classe que o define;

Externa: os serviços que um objeto proporciona

Externa: os serviços que um objeto proporciona e como ele interage com o resto do sistema;

Um objeto pode usar os serviços providos por outro – mas não precisa saber como estes são implementados;

(27)

Encapsulamento

O uso de private nos atributos não é obrigatório, mas é recomendado para a programação orientada a objetos;

Use private para atributos!

Use private para atributos!

Métodos

Atributos Cliente

(28)

Prática

1. Refatore o código da classe Conta,

utilizando os modificadores de acesso onde for possível.

onde for possível.

2. Crie a classe Cliente. Ele deve possuir nome e cpf.

3. Refatore a classe Conta para que ela possua um Cliente.

Referências

Documentos relacionados

5.1.15 No caso de erros decorrentes de preenchimento incorreto do formulário de inscrição, o inscrito terá até 03 (três) dias úteis após o exame para corrigir os dados pelo

Pode ser efetuada a ablação por cateter nos doentes com fibrilhação auricular não-valvular a serem tratados com Pradaxa ® 150 mg duas vezes ao dia para a prevenção de AVC..

b. Mantenedores Empresariais: empresas em geral ligadas direta ou indiretamente às etapas de projeto, execução, manutenção e avaliação de instalações e de fornecimento de

(2013) avaliando o manejo da irrigação para cultura do algodoeiro com o auxílio de um software de gerenciamento desenvolvido pela fazenda onde o experimento foi conduzido,

Os acessos para pedestres e veículos são independentes e ocorrem através de portões metálicos posicionados junto à calçada da Rua João Avelino Pinho Mellão. O controle

“responsabilidade pela solicitação de abertura de processo de flexibilização de jornada de trabalho ao Reitor, nos termos desta Resolução, de forma conjunta ou

Na Figura 3-6, é possível verificar a qualidade excelente da malha conseguida pelo artigo em estudo, com detalhe da malha da bolha e meio ao seu redor. No artigo não é feita nenhuma

ADR : Não regulado como mercadoria perigosa IMDG : Não regulado como mercadoria perigosa IATA (Passageiro) : Não regulado como mercadoria perigosa IATA (Navio de carga) :