• Nenhum resultado encontrado

Aula-06-Encapsulamento-Pacotes

N/A
N/A
Protected

Academic year: 2021

Share "Aula-06-Encapsulamento-Pacotes"

Copied!
40
0
0

Texto

(1)

Linguagem de Programação Orientada a Objetos Bruno Fernandes Byron Leite

(2)

Agenda

 Encapsulamento

 Pacotes

 Modificadores de Acesso private, default, protected, public

(3)

Encapsulamento

 Classes devem cuidar dos seus atributos de forma exclusiva

 Classes devem “expor” o mínimo possível de suas funcionalidades para outras classes

 Baixo acoplamento

(4)

Características do Mau Projeto

 Rigidez

Dificuldade de mudar porque a mudança afeta outras

partes

 Fragilidade

 Uma mudança causa falhas inesperadas

 Imobilidade

 Dificuldade de reuso – amarrado a uma implementação específica

(5)

Características do Bom Projeto

Alta coesão

(6)

Níveis de coesão

 Coincidente  Lógica  Procedural  Comunicacional  Funcional

(7)

Coesão Coincidente

 Agrupamento aleatório de código

 Nenhuma relação entre as partes

 Exemplo: funções agrupadas frequentemente em classes chamada de Util

(8)

Coesão Lógica

 Código agrupado porque são logicamente

categorizados por fazerem a mesma coisa mesmo que sejam fundamentalmente diferentes

(9)

Coesão Procedural

 Código agrupado pela ordem que as coisas acontecem

 Programação estruturada – foco nas funções

 Exemplo: checando as permissões de acesso de um arquivo para então abri-lo

(10)

Coesão Comunicacional

 Código agrupado porque opera sobre um mesmo conjunto de dados

(11)

Coesão Funcional

 Código agrupado porque contribui para uma mesma única tarefa bem definida do módulo

(12)

Acoplamento

 Conteúdo  Controle  Dados Estruturados  Dados  Mensagem

(13)

Acoplamento de Conteúdo

 Uma classe manipula diretamente os dados de outra classe (quebra do encapsulamento)

 Uma mudança nos dados resulta numa mudança na outra classe

(14)

Acoplamento de Controle

 Um módulo controla a lógica de outro passando sua informação sobre o que fazer (como na passagem de uma flag sobre o que fazer)

(15)

Acomplamento de Dados

Estruturados

 Módulos usam uma estrutura de dados em comum com o uso de fato de apenas uma parte dessa estrutura

 Pode levar a falhas inesperadas quando a estrutura de dados mudar

(16)

Acoplamento de Dados

(17)

Acoplamento de Mensagem

 Objetos usam uma interface pública para troca de mensagens

(18)

Sem Acoplamento

 Objetos não tem conhecimento um do outro e nunca se comunicam

(19)

Encapsulamento

 A linguagem deve prover mecanismos de restrição de acesso a membros – classes, atributos e métodos

Para isso existem os modificadores de acesso

 Classes com “afinidades” devem ser agrupadas

(20)

Agenda

 Encapsulamento

 Pacotes

 Modificadores de Acesso private, default, protected, public

(21)

Tipos de Módulos em Java

Classes

agrupam categorias comuns: mesmos métodos, atributos,

construtores, etc.

definem tipos

Pacotes

agrupam definições de classes e interfaces relacionadas

estruturam sistemas extensos, facilitando a localização das

classes e interfaces

oferecem um nível mais alto de abstração: há mais classes do

(22)

Pacotes e Diretórios

 Classes são empacotadas com a seguinte informação de cabeçalho:

 package nomeDoPacote;

 Cada pacote é associado a um diretório do sistema operacional:

 Os arquivos .class das classes compiladas do pacote são colocados neste diretório

 Exemplo:

banco

Banco.class package banco;

(23)

Pacotes e Diretórios

O nome do pacote deve ser idêntico ao nome do

diretório (maiúsculas se diferenciam de

minúsculas)

O separador de pacotes é o ponto “.” enquanto o

separador de diretórios é a barra “/”

package banco.conta corresponde ao diretório  banco/conta

A nomenclatura de pacotes segue a nomenclatura

de atributos

Inicia com minúsculo e segue a regra da palavra

(24)

Pacotes e Eclipse

 O Eclipse pode dividir os fontes e bytecodes em diretórios diferentes:

 Cada diretório respeita a estrutura de empacotamento

src

 banco/Banco.java

 bin

(25)

Pacotes e Subdiretórios

 Subdiretórios não correspondem a "subpacotes". São pacotes como outros quaisquer

 Por exemplo, os pacotes exemplos e exemplos.banco são pacotes distintos e disjuntos.

package exemplos; /*...*/

package exemplos.banco; /*...*/

(26)

Pacotes e Classes

Quando se empacota uma classe o seu nome

muda:

O nome do pacote é incorporado ao nome da classe

Exemplo:

package banco.cliente; public class Cliente{ }

O nome da classe passa a ser banco.cliente.Cliente

(27)

Importação de Pacotes

 Importação Específica:

 Importação genérica:

package banco.conta;

import banco.cliente.Cliente; public class Conta{

}

package banco.conta;

import banco.cliente.*; public class Conta{

(28)

Importação de Pacotes

Na importação genérica ou específica, a classe

Cliente pode ser usada no corpo de

banco.conta.Conta

Exemplo:

package banco.conta;

import banco.cliente.Cliente; public class Conta{

private Cliente cliente;

... }

package banco.conta;

import banco.cliente.*; public class Conta{

private Cliente cliente;

... }

(29)

Importação de Pacotes

 Para usar uma classe sem importar seu pacote, deve-se informar o nome completo da classe

 Exemplo:

package banco.conta; public class Conta{

private banco.cliente.Cliente cliente;

... }

(30)

Estruturando Aplicações com

Pacotes

Estruturação típica de um sistema de informação:

 Vários pacotes para as classes da interfaces de GUI, um para cada conjunto de telas associadas

Um pacote para a classe fachada e exceções associadas  Um pacote para cada ramo de negócio, incluindo as

classes básicas, coleções de dados, interfaces, coleções de negócio e exceções associadas

Um pacote (sistema).util contendo classes auxiliares de

(31)

Estruturando Aplicações com

Pacotes

Agrupar classes relacionadas, com dependência

(de implementação ou conceitual) entre as

mesmas

Conta SIException RepContasArray CadastroContas CEException CIException Cliente RepClientesArray CadastroClientes CliEException CliIException fachada util gui

(32)

Empacotamento durante a

implementação

 Se as classes foram criadas antes de empacotar então o empacotamento é mais trabalhoso

 Normalmente a estrutura de pacotes de uma aplicação já é definida na arquitetura do sistema

(33)

Pacotes da Biblioteca de Java

Acesso a Internet e WWW (

java.net

)

Applets (

java.applet

)

Definição de interfaces gráficas (

java.swing

)

Suporte a objetos distribuídos (

java.rmi

)

Interface com Banco de Dados (

java.sql

)

Básicos: threads e manipulação de strings

(

java.lang

), arquivos (

java.io

), utilitários de

propósito geral (

java.util

)

(34)

Agenda

 Encapsulamento

 Pacotes

 Modificadores de Acesso private, default, protected, public

(35)

Pacotes e modificadores de acesso

 Restringem o acesso a um membro por outros

membros

 Restrição é relacionada à localização do membro no projeto

Em classesEm pacotes

Em uma sub-hierarquiaNo projeto

(36)

Pacotes e modificadores de acesso

 public

 declaração pode ser utilizada (é visível) em qualquer lugar, mesmo de pacotes diferentes

 protected

 declaração só pode ser utilizada no pacote onde ela é introduzida, ou nas subclasses da classe onde ela é introduzida

 “default” (sem modificador)

 declaração só pode ser utilizada no pacote onde ela é introduzida

 private

(37)

Agenda

 Encapsulamento

 Pacotes

 Modificadores de Acesso private, default, protected, public

(38)

Modificadores static e final

 static – sinônimo de “de classe”

Aplicável a atributos e métodos

Membros estáticos são acessados através da classe

Um atributo static pertence à classe, e não aos objetos da

classe

Um método static só pode acessar membros static da

(39)

Modificadores static e final

 final – sinônimo de “imutável” ou “não extensível”

Aplicável a classes, atributos, métodosClasses final não podem ser herdadas

Atributos final não podem ter seus valores alterados

-constantes

Métodos final não podem ser sobrescritos (vamos ver

(40)

Modificadores static e final

 Para definir constantes em Java...

Utilizamos a combinação de “static final” em atributos

public class Funcionario{ private int estadoCivil;

public static final int CASADO = 1; public static final int SOLTEIRO = 2; public static final int SEPARADO = 3; public static final int VIUVO = 4;

Referências

Documentos relacionados

A QualiSign é uma empresa do grupo Quali- Soft voltada para a formalização digital se- gura, o que inclui os serviços de assinatura digital, contratos, laudos e procurações

Em um sentido social, político, equivale dizer que os que são oprimidos, os que são excluídos, enfim, violados - em uma perspectiva dos direitos humanos que visam a dignidade

Enquanto o acontecimento cria a notícia (porque as notícias estão centradas no referente), a notícia também cria o acontecimento (porque é um produto elaborado que não

O presente trabalho, apresentado no formato de vídeo, tem o objetivo de representar episódios de erros relacionados ao cotidiano dos profissionais da odontologia e que podem

Há uma grande expectativa entre os cientistas de que, nesta próxima década, novos resultados de observações cosmológicas, aliados aos resultados dos grandes aceleradores como o

Sofia fala sobre Tatiana Calderon. Ela é um ídolo na Colômbia! Por que ela é famosa?. Instruções: Leia o texto em

Por outro lado, e uma vez que o Castelhano está sendo tomado muito a sério, actual- mente, tanto em Portugal como no Brasil (e ainda bem que assim é), temos aqui mais uma

150 ppm.. b) Já houve casos de pessoas que morreram ao permanecer muito tempo em garagens sem ventilação com um automóvel funcionando. Com base na tabela 1, qual é a