• Nenhum resultado encontrado

Programação Orientada a Objetos

N/A
N/A
Protected

Academic year: 2021

Share "Programação Orientada a Objetos"

Copied!
25
0
0

Texto

(1)

Programação Orientada a Objetos

Pacotes e Encapsulamento

(2)

• Permite o agrupamento de classes em uma coleção chamada pacote

• Um pacote é uma coleção de classes e

interfaces que provem proteção de acesso e gerenciamento de espaços de nomes

• Organiza o trabalho e separa seu trabalho das bibliotecas de código

• A biblioteca Java é distribuída em pacotes (Ex.: java.util, java.lang)

• Todos os pacotes Java estão dentro das hierarquias de pacote java e javax

2

Introdução

(3)

• Objetivos:

– Garantir a singularidade dos nomes de classe (evita conflito de nomes)

– Facilidade de determinar classes relacionadas

– Proteção de acesso

• Sun recomenda que utilize o nome de domínio da Internet da empresa, para garantir um nome de pacote único

Introdução

(4)

• As classes ficam em pacotes

– o pacote faz parte do nome da classe

• java.util.Scanner

• java.util.ArrayList

– Alguns pacotes padrão do JAVA

• java.lang: classes fundamentais – importado automaticamente

• java.util: classes utilitárias

• java.io: classes para entrada e saída

• java.net: classes para uso em rede (TCP/IP)

• ... e muito mais!

4

Classes ficam em pacotes

(5)

• Para usar uma classe que pertence a um outro pacote é necessário usar o nome completo:

– java.util.Scanner sc = new java.util.Scanner(System.in);

• ou importar a classe:

– import java.util.Scanner;

– ...

– Scanner sc = new Scanner();

Pacotes

(6)

• Classes do pacote java.lang são importadas por padrão:

– String, StringBuilder, Integer, Double, System, entre outras

6

Pacotes

(7)

• No arquivo que escrevemos o código fonte:

– É preciso informar em qual pacote a classe está

• no início do arquivo que define a classe:

– package nomePacote;

– Exemplo: package br.ifpb.sub.poo;

• Se não especificado classe pertence ao pacote default (padrão), que não tem nome

– Desaconselhável usar pacote padrão

Classes em pacotes

(8)

• Inserir os arquivos fontes em um

subdiretório que corresponde ao nome de pacote completo

– Exemplo:

• Classe no pacote ifpb.sub.poo, deve estar no subdiretório ifpb/sub/poo

8

Classes em pacotes

(9)

• Considere a classe Fatorial

– pacote ifpb.sub.poo;

Classes em pacotes

package ifpb.sub.poo;

public class Fatorial{

...

}

(10)

10

Usando pacotes

import ifpb.sub.poo.Fatorial;

public class Main{

...

Fatorial f1 = new Fatorial();

...

}

public class Main{

import ifpb.sub.poo.Fatorial f1;

f1 = new ifpb.sub.poo.Fatorial();

...

}

Importando

Nome Completo

(11)

• Objetivos:

– Robustez

• Sistemas confiáveis, tolerante a falhas

– Adaptabilidade

• Capacidade de reagir conforme o contexto

– Reusabilidade

• Reutilização do software

• Princípios:

– Abstração

– Encapsulamento – Modularidade

Encapsulamento

(12)

• Abstração

– Decompor um sistema complicado em suas partes fundamentais

– Descrevê-las em uma linguagem simples e precisa

• Atribuir-lhes um nome e descrever suas funcionalidades

– Abstrair os detalhes desnecessários

• Encapsulamento

– É o processo de esconder todos os detalhes de um objeto que não contribuem para suas características essenciais

12

Elementos do modelo de objetos

(13)

• Proteção de acesso

– Proteger o interior da classe

• Explicitar o que usuários (da classe) precisam 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

Visibilidade

(14)

• Atributos que fazem parte da 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

14

Proteção de Acesso

(15)

• Quando utilizamos atributos privados

(private), o acesso a esses membros se dá através dos métodos de acesso (getters e setters):

• GET

– Verifica um valor em algum campo ou atributo de uma classe

• SET

– Modificar um valor em algum campo ou atributo de uma classe

Proteção de Acesso

(16)

• Observação

16

Proteção de Acesso

Criar os métodos GET ou SET

somente quando for precisar!!!

(17)

Proteção de Acesso

public class Produto{

private int codigo;

private String descricao;

public Produto(int código, String descricao) { this.código = codigo;

this.descricao = descricao;

}

public String getDescricao() { return descricao;

}

public void setDescricao(String descricao) { this.descricao = descricao;

}

public int getCodigo() { return codigo;

}

public void setCodigo(int codigo) { this.codigo = codigo;

} }

(18)

• Serve para adicionar um texto que irá representar um objeto

• Se tentar imprimir diretamente um objeto, irá ser impresso as coordenadas do objeto

• Sintaxe:

18

Método toString()

public String toString(){

return "texto";

}

(19)

• Façam um teste:

– Crie uma Classe Produto, com um atributo descricao (String).

– Na mesma classe, crie um método main, e crie um objeto da Classe Produto.

– Imprima este objeto, sem acessar nenhum método

Método toString()

Produto produto = new Produto();

System.out.println(produto);

(20)

20

Método toString()

public class Produto{

private int codigo;

private String descricao;

public Produto(int código, String descricao) { this.código = codigo;

this.descricao = descricao;

}

public String getDescricao() { return descricao;

}

public void setDescricao(String descricao) { this.descricao = descricao;

}

public int getCodigo() { return codigo;

}

public void setCodigo(int codigo) { this.codigo = codigo;

}

public void toString(){

return“Codigo: ” + código + “ Descrição: “ + descricao;

} }

(21)

• Colocar os atributos como private, criar os

métodos de acesso e o método toString para as Classes do exercício da aula passada:

– Endereco – Pessoa – Produto

• Criar os pacotes ifpb.poo.modelo e ifpb.poo.negocio

Exercício

(22)

• Inserir as Classes nos determinados pacotes:

• ifpb.poo.modelo:

– Endereco – Pessoa – Produto

• ifpb.poo.negocio:

– Compra

22

Exercício

(23)

• Representação

Exercício

(24)

Dúvidas

24 Prof. Paulo de Tarso F. Júnior

(25)

Referências

• RICARTE, I. L. M.; Programação Orientada a Objetos:

Uma Abordagem com Java. UNIVERSIDADE ESTADUAL DE CAMPINAS.

• MARTINS, F. M.; JAVA6 e Programação Orientada pelos Objectos. FCA - Editora de Informática, 2015.

• Os 4 pilares da Programação Orientada a Objetos.

Disponível em: http://www.devmedia.com.br/os-4- pilares-da-programacao-orientada-a-objetos/9264.

Acesso em 15/05/2016

• Programação orientada a objetos com Java. Disponível em:

http://www.devmedia.com.br/programacao-orientada-a-

objetos-com-java-easy-java-magazine-1/18449. Acesso em 18/05/2016

Referências

Documentos relacionados

para o usuário digitar um nome; pega o valor digitado e altera na variável nome do objeto da Conta Bancária, através do método Alterar Nome.. Realiza saque/depósito, e depois

– Crie um construtor parametrizado inicializando todas as variáveis com os valores recebidos dos parâmetros. – Crie um construtor default (Inicializando as variáveis da

• Diferentes componentes de um sistema não devem revelar detalhes internos de suas..

• É possível comprar acessando o método comprar, passando como parâmetro dois objetos, um do tipo Pessoa e outro do tipo Produto.. M.; Programação Orientada

– Pode ser acessado por qualquer outra classe em qualquer outro pacote.

• Projeção de classes genéricas que podem ser especializadas em classes mais particulares3. • Classes especializadas reutilizam o código das

– Método executado depende da classe do objeto – Mesma chamada executa métodos diferentes.. • obj.metodo() vai executar método que foi definido para classe do objeto

– Classe deve implementar TODOS os métodos definidos na interface.. Implementação