Técnicas de Programação Avançada TCC Prof.: Anselmo Montenegro Conteúdo: Polimorfismo

Documentos relacionados
Polimorfismo. O que é polimorfismo?

Programação Orientada a Objetos. Professor: André Luis Meneses Silva br.geocities.com/programacao2ufs

Universidade da Beira Interior Cursos: Engenharia Informática, Matemática /Informática e Ensino da Informática

Lição 11 Herança, polimorfismo e interfaces

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

UNIVERSIDADE FEDERAL DE MATO GROSSO DO SUL SISTEMAS DE INFORMAÇÃO - CÂMPUS DE COXIM FUNDAMENTOS EM ORIENTAÇÃO A OBJETOS

Lista 05 Herança. public class PessoaFisica extends Pessoa { private String RG; public PessoaFisica(){ super(); } public String getrg(){ return RG; }

Recapitulando. Construtores: (Overload assinatura) public Circle() {...} public Circle(double x, double y, double r) {... }

Programação Orientada a Objetos. Vagner Luz do Carmo - Vluzrmos

Conceitos de Programação Orientada a Objetos

Classes e Objetos. Sintaxe de classe em Java

Paradigmas de Linguagens de Programação. Suporte para Programação Orientada a Objeto

Linguagem de Programação III

Programação Java. Marco Fagundes. - Herança, Classes Abstratas e Interfaces Marco Fagundes -

Programação Java (nível intermediário) 4. Polimorfismo

Java para Desktop. Programação Orientada à Objetos 2 JSE

Java First-Tier: Aplicações. Herança: Simples Múltipla. Orientação a Objetos em Java (III) Problemas de Herança Múltipla.

Orientação a objetos. Programação. Orientada a Objetos. Orientação a objetos. Orientação a objetos. Abstração e encapsulamento

Orientação a Objetos AULA 09

C com introdução a OO

UNIVERSIDADE FEDERAL DE MATO GROSSO DO SUL SISTEMAS DE INFORMAÇÃO - CÂMPUS DE COXIM FUNDAMENTOS EM ORIENTAÇÃO A OBJETOS

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

9 Classes Abstractas e Interfaces

Programação Orientada a Objetos. Polimorfismo

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

Fundamentos Básicos da linguagem Java (Programação Orientada a Objetos) Prof. Responsáveis Wagner Santos C. de Jesus

Programação por Objectos. Java

Prof. A. G. Silva. 30 de outubro de Prof. A. G. Silva INE5603 Introdução à POO 30 de outubro de / 1

Generics POO. Prof. Marcio Delamaro

Laboratório de programação II

4 Conceito de Herança

Classe Abstrata e Interface

Programação. Orientada a Objetos: Herança. Objetos. Relacionamento entre classes. Análise e Projeto Orientados a. Objetos

Herança. Prof. Fernando V. Paulovich 23 de agosto de 2010

Linguagem de Programação IV Introdução

Linguagem de Programação. Diagrama de classes

Paradigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura

1. Por que não utilizar a notação de composição da UML para mostrar que um cachorro é composto de altura, peso, cor e data de nascimento?

Programação Orientada a Objetos SANTOS, Rafael

Esta categoria mais geral, à qual cada objeto pertence, denominamos de classe; IFSC/POO + JAVA - prof. Herval Daminelli

POO29004 Programação Orientada a Objetos

AULA 8 Polimorfismo de: coerção, overloading, inclusão e paramétrico Prof. Dr. Fernando Henrique Campos

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Hierarquia de classes e mecanismo de ligação

Especificam quem tem acesso a cada entidade, isto é, quem tem acesso a. cada classe e cada membro da classe (dados e métodos)

Linguagem de Programação Orientada a Objeto Abstração - Encapsulamento

Laboratório de programação II

Programação Orientada a Objetos Flávio de Oliveira Silva 144

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

Programação OO em Java. Profa Andréa Schwertner Charão DLSC/CT/UFSM

Programação Orientada a Objetos. Métodos e Atributos. Métodos. Métodos. Alexandre César Muniz de Oliveira. Parte III

Programação OO em Java. Profa Andréa Schwertner Charão DELC/CT/UFSM

Linguagem de Programação Orientada a Objeto Polimorfismo, Classes Abstractas e Interfaces

Herança. Herança. Herança. Herança. Herança. Programação Orientada a Objetos

Vejamos o seguinte exemplo public class Exemplo private int testada = 20; public void testapalavra(int testada) JOptionPane.showMessageDialog(null,"Pa

Polimorfismo: aprendendo a prever o futuro. Polimorfismo: aprendendo a prever o futuro. Definições (2/5) Definições Tipos de Polimorfismo

Unidade: Classes Abstratas, Polimorfismo, Sobreposição e Interfaces

Linguagens de Programação Aula 12

Introdução a classes e objetos. Prof. Marcelo Roberto Zorzan

Técnicas de Programação Avançada TCC Profs.: Anselmo Montenegro

POO e C++: Herança e Polimorfismo

Interfaces. Classes abstratas que possuem apenas métodos abstratos. Na Interface: Métodos são implicitamente. Campos são implicitamente

Programação Java. - Herança e Polimorfismo - Marco Fagundes Marco Fagundes -

Programação Orientada a Objetos II

Herança e Polimorfismo (Universal)

Suporte a programação orientada a objetos

Linguagem de Programação II Implementação

Genéricos. Profa. Thienne Johnson EACH/USP

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

C O N S T R U T O R E S E S O B R E C A R G A P R O F. M E. H É L I O E S P E R I D I Ã O

Ex: carro_desportivo poderá ser uma subclasse de automóvel (carro_desportivo é_um automóvel)

A Relação de Subtipo e Tipos Genéricos

Programação de computadores II

Encapsulamento e Métodos (Construtores e Estáticos) João Paulo Q. dos Santos

Linguagem de Programação II Programação Orientada a Objetos. Orientação a Objetos

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Hierarquia de classes e mecanismo de ligação

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Java Básico. Carga Horária: 32 horas. Pré-requisito: Lógica de Programação; JAVA. Conteúdo Programático

Herança e Polimorfismo

Aula. Renata Pontin de Mattos Fortes 2006

Desenvolvimento Web TCC Turma A-1

Orientação a Objetos e Java

Técnicas de Programação Avançada TCC Profs.: Anselmo Montenegro

Professor Leonardo Cabral da Rocha Soares Lattes:

Linguagem de Programação Orientada a Objeto Construtores e Sobrecarga

Orientação a Objetos AULA 06

6 Polimorfismo. Desenvolvimento OO com Java. Vítor E. Silva Souza ~ vitorsouza

Programação Orientada a Objetos 2 Flávio de Oliveira Silva, M.Sc.

Palavras Reservadas da Linguagem Java

Tipos, Literais, Operadores

Tipos, Literais, Operadores

COMPORTAMENTOS - Observações

A B Classe Genérica D A C. Classe Especializada. Classe Especializada. Características Herdadas

Programação Orientada a Objetos

Tipos genéricos (cont)

Interfaces. Universidade Católica de Pernambuco Ciência da Computação. Prof. Márcio Bueno.

Linguagem de Programação II Herança

Transcrição:

Técnicas de Programação Avançada TCC- 00.174 Prof.: Anselmo Montenegro www.ic.uff.br/~anselmo anselmo@ic.uff.br Conteúdo: Polimorfismo

Revisão... A classe provê a estrutura para a construção de objetos Um objeto é uma instância de uma classe Possui caracterísfcas (atributos) e um estado (valores de seus atributos) Expõe o seu comportamento através de métodos (funções) 1/10/13 Técnicas de Programação Avançada 2

Revisão... Um programa OO é um conjunto de objetos que colaboram entre si para a solução de um problema Objetos colaboram através de trocas de mensagens A troca de mensagem é realizada através da chamada de um método 1/10/13 Técnicas de Programação Avançada 3

Revisão... Encapsulamento: Princípio pelo qual cada componente de um programa deve agregar toda a informação relevante para sua manipulação Ocultação da Informação: Princípio pelo qual cada componente deve manter oculta sob sua guarda uma decisão de projeto única. Para a uflização desse componente, apenas o mínimo necessário para sua operação deve ser revelado (tornado público). 1/10/13 Técnicas de Programação Avançada 4

Herança Diferentes classes podem ter diversas semelhanças: duas ou mais classes poderão comparflhar os mesmos atributos e/ou os mesmos métodos. Herança: Permite a uma classe herdar caracterísfcas (atributos) e o comportamento (métodos) de outra classe Superclasse Subclasse Ancestral Descendente 1/10/13 Técnicas de Programação Avançada 5

Herança Pessoa - nome: String - idade: int +definirnome(nome: SFng): void +retornarnome(): String +definiridade(idade: int): void +retornaridade(): int Instâncias de Aluno João 25 Sistemas de Informação Aluno - curso: String Maria 20 Sistemas de Informação +definircurso(f: SFng): void +retornarcurso(): String 1/10/13 Técnicas de Programação Avançada 6

Herança //SuperClass.java public class SuperClass { // Atributos e métodos //SubClass.java public class SubClass extends SuperClass { // Atributos e métodos 1/10/13 Técnicas de Programação Avançada 7

Herança class Pessoa { String nome; int idade; void definirnome(string valor) { nome = valor; String retornarnome() { return nome; void definiridade(int valor) { idade = valor; class Aluno extends Pessoa { String curso; void definircurso(string valor) { curso = valor; String retornarcurso() { return curso; int retornaridade() { return idade; 1/10/13 Técnicas de Programação Avançada 8

Herança e Generalização Uma generalização é um relacionamento entre itens gerais (superclasse) e itens mais específicos (subclasses) É representada por uma linha sólida com um triângulo vazado apontando para o item mais geral. superclasse é um é um tipo de subclasse 1/10/13 UFF/IC Técnicas de Programação Avançada 1/10/13 9

Classes Abstratas, concretas e interfaces Classes Abstratas Vs Classes Concretas Uma classe abstrata é uma classe que não tem instâncias diretas, mas cujas classes descendentes podem ter instâncias diretas Uma classe concreta é uma classe que pode ser instanciada 1/10/13 Técnicas de Programação Avançada 10

Classes Abstratas Vs Interfaces Orientação a Objetos Classes Abstratas, concretas e interfaces A classe abstrata pode possuir métodos não abstratos, bastando ter apenas um método abstrato para ser considerada como tal Um interface apenas propõe os métodos que devem ser implementados pelas classes que desejarem Uma interface define um Fpo 1/10/13 Técnicas de Programação Avançada 11

Introdução Conceitos 1/10/13 Técnicas de Programação Avançada 12

Noções sobre Rpos Tipo conjunto de valores associado a um conjunto de operações que podem ser aplicados sobre aqueles valores Objeto de dados valor de um certo Fpo armazenado em uma área de memória 1/10/13 Técnicas de Programação Avançada 13

Noções sobre Rpos As operações definidas para um Fpo são a única forma de manipular objetos de dados Qualquer outra tentafva de manipulação causa um erro de Fpo Um programa é seguro com relação a Fpos se não contém erros de Fpo 1/10/13 Técnicas de Programação Avançada 14

Noções sobre Rpos Tipos de dados componentes semânfcos fundamentais de uma linguagem de programação que procuram capturar a natureza dos dados manipulados pelo programa Linguagens de programação diferem em relação a forma com a qual manipulam os Fpos 1/10/13 Técnicas de Programação Avançada 15

Noções sobre Rpos Sistema de Fpos conjunto de regras de uma linguagem que devem ser seguidas para definir e manipular os dados do programa ObjeFvo: evitar a escrita de programas não seguros em relação aos Fpos considerados 1/10/13 Técnicas de Programação Avançada 16

Polimorfismo Sistema de Fpos forte garante que programas escritos segundo as regras de Fpagem não geram erros de Fpo Linguagem fortemente Fpada linguagem que possui um sistema de Fpos forte subjacente Linguagem fracamente Fpada não possui um sistema de Fpos forte 1/10/13 Técnicas de Programação Avançada 17

Noções sobre Rpos Linguagem Fpada estafcamente os Fpos de toda a expressão da linguagem são conhecidos em tempo de compilação (usam um sistema de Fpos estáfco) Linguagem Fpada dinamicamente os Fpos das expressões podem vir a ser conhecidos somente em tempo de execução 1/10/13 Técnicas de Programação Avançada 18

Noções sobre Rpos Sistema de Fpo estrito se uma operação espera um operando de Fpo T, então somente pode ser invocada sobre um parâmetro de Fpo T CompaFbilidade de Fpos algumas linguagens fornecem maior flexibilidade definindo condições nas quais um operando de outro Fpo, dito compaivel, pode ser uflizado sem violar a segurança de Fpos 1/10/13 Técnicas de Programação Avançada 19

Noções sobre Rpos Quando compafbilidade de Fpos é usada, é necessário algum procedimento de checagem de Fpos A compafbilidade de Fpos pode ser nominal (por nome) ou estrutural (por estrutura) 1/10/13 Técnicas de Programação Avançada 20

Noções sobre Rpos CompaFbilidade por nome somente Fpos com mesmo nome são compaiveis CompaFbilidade estrutural dois Fpos T 1 e T 2 são compaiveis se: T 1 é compaivel por nome com T 2 ; T 1 e T 2 são definidos aplicando o mesmo construtor de Fpos sobre componentes correspondentes estruturalmente compaiveis; 1/10/13 Técnicas de Programação Avançada 21

Noções sobre Rpos Type s1 is struct{ int y; int w; Type s2 is struct{ int y; int w; Type s3 is struct{ int y; S3 func (s1 z){... s1 a,x; s2 b; s3 c; int d; a = b; - - (1) x = a; - - (2) c= func(b); - - (3) d = func(a); - - (4) Considerando compafbilidade de nomes instruções (1), (3) e (4) apresentam erro de Fpo Considerando compafbilidade estrutural instruções (1), (2) e (3) são corretas 1/10/13 Técnicas de Programação Avançada 22

SubRpos Um subfpo ST de um Fpo T é um subconjunto dos valores associados as mesmas operações de T Assume- se que as operações de T são herdadas automafcamente por ST 1/10/13 Técnicas de Programação Avançada 23

SubRpos Uma linguagem de programação munida de subfpos deve poder definir: Um modo de definir subconjuntos de um dado Fpo Regras de compafbilidade entre um subfpo e seu superfpo 1/10/13 Técnicas de Programação Avançada 24

Sistemas de Rpos Monomórficos vs Polimórficos Em linguagens Fpadas estafcamente, uma enfdade de programa (constante, variável ou rofna) tem um Fpo especifico que é definido por uma declaração Toda operação nessas linguagens requer operandos de Fpo exatamente igual ao especificado na definição da operação Esse sistema de Fpos é definido como monomórfico 1/10/13 Técnicas de Programação Avançada 25

Polimorfismo Polimorfismo é uma palavra grega que significa múlfplas formas É uma caracterísfca de linguagens de programação em que valores de diferentes Fpos de dado podem ser manipulados por uma interface comum 1/10/13 Técnicas de Programação Avançada 26

Sistemas de Rpos Monomorficos vs Polimorficos Em uma linguagem de programação polimórfica objetos podem pertencer a mais de um Fpo RoFnas (funções) podem aceitar parâmetros de diferentes Fpos como parâmetros formais PraFcamente todas as linguagens modernas desviam- se do monorfismo puro 1/10/13 Técnicas de Programação Avançada 27

Sistemas de Rpos Monomorficos vs Polimorficos Exemplos de desvio de monomorfismo puro: Coerção Sobrecarga de operadores CompaFbilidade de Fpos SubFpagem 1/10/13 Técnicas de Programação Avançada 28

Desvios de monomorfismo - coerção Coerção denota uma conversão implícita durante o tempo de compilação ou execução (run Rme) de um subfpo para um superfpo Exemplo: expressões que misturam Fpos numéricos na linguagem C double d; long l; int i; if (d > i) d = i; if (i > l) l = i; if (d == l) d *= 2; 1/10/13 Técnicas de Programação Avançada 29

Desvios de monomorfismo - Sobrecarga class OverloadDemo { void test() { System.out.println("No parameters"); // Overload test for one integer parameter. void test(int a) { System.out.println("a: " + a); // Overload test for two integer parameters. void test(int a, int b) { System.out.println("a and b: " + a + " " + b); // overload test for a double parameter double test(double a) { System.out.println("double a: " + a); return a*a; class Overload { public stafc void main(string args[]) { OverloadDemo ob = new OverloadDemo(); double result; // call all versions of test() ob.test(); ob.test(10); ob.test(10, 20); result = ob.test(123.2); System.out.println("Result of ob.test(123.2): " + result); 1/10/13 Técnicas de Programação Avançada 30

Tipos de polimorfismo Linguagens diferem pelos diferentes Fpos de polimorfismo (considera- se aqui polimorfismo funcional) Polymorfismo Universal Ad hoc Parametric Inclusion Overloading Coercion 1/10/13 Técnicas de Programação Avançada 31

Polimorfismo Ad Hoc Vs Polimorfismo Universal Polimorfismo Ad Hoc trabalha em um conjunto finito e pequeno de Fpos e pode se comportar de forma diferente para cada Fpo Polimorfismo Universal trabalha uniformemente em um conjunto infinito de Fpos os quais tem estrutura comum 1/10/13 Técnicas de Programação Avançada 32

Polimorfismo Ad Hoc Exemplos de polimorfismo ad hoc Coerção é a operação que converte o argumento de uma função para o Fpo que a função espera Sobrecarga (overload) de métodos o mesmo nome de função é usado para denotar diferentes funções e em cada contexto seu nome é unicamente determinado Ex.: println(); void println(int arg); void println(float arg); void println(string arg); 1/10/13 Técnicas de Programação Avançada 33

Polimorfismo Paramétrico Tipo de polimorfismo universal mais genuíno trabalh uniformemente sobre uma gama de Fpos No polimorfismo paramétrico um Fpo de dados (ou função) pode ser escrito genericamente, de modo que ele(ou ela) possa lidar com diferentes valores de forma idênfca sem depender de seu Fpo O Polimorfismo paramétrico é uma forma de tornar a linguagem mais expressiva mantendo porém a segurança estáfca de Fpos 1/10/13 Técnicas de Programação Avançada 34

Polimorfismo Paramétrico Exemplo: Classe Pilha public class PilhaInt { private int[] elementos = new int[100]; private int topo = -1; public void push(int elemento) { elementos[++topo] = elemento; public void pop() { topo--; public int top() { return elementos[topo]; public boolean isempty() { return topo < 0; 1/10/13 Técnicas de Programação Avançada 35

Polimorfismo Paramétrico Classe Pilha usando Fpos genéricos public class Pilha<T> { private Object[] elementos = new Object[100]; private int topo = -1; public void push(t elemento) { elementos[++topo] = elemento; public void pop() { topo--; public T top() { return (T)elementos[topo]; public boolean isempty() { return topo < 0; 1/10/13 Técnicas de Programação Avançada 36

Java Generics É uma melhoria no sistema de Fpos introduzida na J2SE 5.0 que permite um método ou Fpo operar em objeto de vários Fpos Permite segurança de Fpos em tempo de compilação Adiciona segurança de Fpos em tempo de compilação ao Framework de coleções e elimina a necessidade de casrng 1/10/13 Técnicas de Programação Avançada 37

Polimorfismo Paramétrico Uso da classe genérica Pilha public class MainPilha { public static void main(string[] args) { Pilha<Integer> pilha = new Pilha<Integer>(); pilha.push(new Integer(5)); System.out.println(pilha.top()); 1/10/13 Técnicas de Programação Avançada 38

Polimorfismo Paramétrico Problemas com Fpos genéricos class List<T>{ List<String> ls = new ArrayList<String>(); List<Object> lo = ls; // se fosse permitido lo.add(new Object()); String s = ls.get(0); // erro em execução Não podemos assumir que class<t1> é superfpo de class<t2> quando class T2 extends T1 1/10/13 Técnicas de Programação Avançada 39

Polimorfismo Paramétrico Problemas com Fpos genéricos List<String> ls = new ArrayList<String>(); ls.add("string"); List<?> lo = ls; Object o = lo.get(0); System.out.println(o.toString()); lo.add(new Object()); // erro de compilação String s = ls.get(0); class<t> é subfpo de class<?> 1/10/13 Técnicas de Programação Avançada 40

Polimorfismo Paramétrico public abstract class Shape { public abstract void draw(canvas c); public class Circle extends Shape { private int x, y, radius; public void draw(canvas c) {... public class Rectangle extends Shape { private int x, y, width, height; public void draw(canvas c) {... public class Canvas { public void draw(shape s) { s.draw(this); public void drawall(list<shape> shapes) { for (Shape s: shapes) s.draw(this); 1/10/13 Técnicas de Programação Avançada 41

Polimorfismo Paramétrico public abstract class Shape { public abstract void draw(canvas c); public class Circle extends Shape { private int x, y, radius; public void draw(canvas c) {... public class Rectangle extends Shape { private int x, y, width, height; public void draw(canvas c) {... public class Canvas { public void draw(shape s) { s.draw(this); public void drawall(list<? extends Shape> shapes) { for (Shape s: shapes) s.draw(this); 1/10/13 Técnicas de Programação Avançada 42

Polimorfismo Paramétrico Métodos genéricos static <T> T fromarraytocollection(t[] a, Collection<T> c) { for (T o : a) { c.add(o); 1/10/13 Técnicas de Programação Avançada 43

Polimorfismo de inclusão Polimorfismo de inclusão (de subfpos) permite que uma rofna (função ou método) seja aplicada a um Fpo e a seus subfpos Linguagens de programação O.O proveem variáveis polimórficas que podem se referir a objetos de diferentes Fpos Linguagens fortemente Fpadas restringem o polimorfismo a de tais variáveis: uma variável de uma classe T somente pode se referir a objetos de um Fpo T ou de classes derivadas de T 1/10/13 Técnicas de Programação Avançada 44

Polimorfismo de subrpos Polimorfismo de subfpos nos permite escrever programas tais que objetos que comparflham a mesma superclasse sejam tratados como se fossem objetos da superclasse. Pode simplificar a programação 1/10/13 Técnicas de Programação Avançada 45

Polimorfismo Dada uma superclasse Pessoa, com uma subclasse Aluno, desejamos adicionar outra subclasse chamada Professor. Pessoa Aluno Professor 1/10/13 Técnicas de Programação Avançada 46

Polimorfismo Exemplo 01 public static main( String[] args ) { Aluno objetoaluno = new Aluno(); Professor objectoprofessor = new Professor(); // Referência da classe Pessoa recebe um objeto da classe Aluno. Pessoa ref = objetoaluno; // Chamada para o método getname() da classe Aluno. ref.getname(); 1/10/13 Técnicas de Programação Avançada 47

Polimorfismo Suponha que exista um método getname na superclasse Pessoa, que foi reimplementado nas subclasses Aluno e Professor. public class Aluno{ public String getname(){ System.out.println( Nome do Aluno: + name); return name; public class Professor{ public String getname(){ System.out.println( Nome do Professor: + name); return name; 1/10/13 Técnicas de Programação Avançada 48

Polimorfismo public static main( String[] args ) { Aluno objetoaluno = new Aluno(); Professor objetoprofessor = new Professor(); // Referência da Pessoa recebe um objeto da classe Aluno. Pessoa ref = objetoaluno; // Chamada para o método getname() da classe Aluno. ref.getname(); // Referência da Pessoa recebe um objeto da classe Professor. ref = objetoprofessor; // Chamada para o método getname() da classe Professor. ref.getname(); 1/10/13 Técnicas de Programação Avançada 49

Polimorfismo Exemplo 02 public static main( String[] args ){ Aluno objetoaluno = new Aluno(); Professor objetoprofessor = new Professor(); printinfo( objetoaluno ); printinfo( objetoprofessor); 1/10/13 Técnicas de Programação Avançada 50

Polimorfismo public static printinfo( Pessoa p ){ // Chama o método getname() do objeto // da classe Pessoa passado por argumento p.getname(); public static main( String[] args ){ Aluno objetoaluno = new Aluno(); Professor objetoprofessor = new Professor(); printinfo( objetoaluno ); printinfo( objetoprofessor); 1/10/13 Técnicas de Programação Avançada 51

Modificadores de Acesso Determinam se atributos e métodos poderão ser acessados por outras classes. public (público) private (privado) protected (protegido) modificador não explícito (package- private) 1/10/13 Técnicas de Programação Avançada 52

Modificadores de Acesso Uma classe pode ser: ü public acessada por qualquer outra classe ü nenhum modificador (package- private) acessada somente dentro do seu pacote 1/10/13 Técnicas de Programação Avançada 53

Modificadores de Acesso Atributos e Métodos podem ser: ü public acessados por qualquer outra classe. ü nenhum modificador (package- private) acessados somente dentro do seu pacote. ü private acessados somente dentro de suas próprias classes. ü protected acessados somente dentro do seus pacotes e por suas subclasses. 1/10/13 Técnicas de Programação Avançada 54