diego/disciplinas/2014_2/... · Created Date: 8/11/2014 6:43:08 PM

66

Transcript of diego/disciplinas/2014_2/... · Created Date: 8/11/2014 6:43:08 PM

Page 1: diego/disciplinas/2014_2/... · Created Date: 8/11/2014 6:43:08 PM

Ementa Oficial

•Revisão de Conceitos de Orientação a Objetos. •Programação com Tipos Genéricos. •Programação com APIs para Conteiners. •Revisão de Princípios de Projeto Orientado a Objetos. •Padrões de Projeto. •Frameworks. •Linhas de Produto. •Aplicações e Estudo de Casos.

2012.2 Técnicas de Programação Avançada 3

Page 2: diego/disciplinas/2014_2/... · Created Date: 8/11/2014 6:43:08 PM

Organização do curso

Parte I – Orientação a objetos Parte II – Padrões de Projetos e Outros Conceitos

2012.2 Técnicas de Programação Avançada 4

Page 3: diego/disciplinas/2014_2/... · Created Date: 8/11/2014 6:43:08 PM

Organização do curso

Parte I – Orientação a objetos •Revisão de O.O.: Classes e Objetos, Métodos, Encapsulamento •Herança e Hierarquia de Classes •Diagrama de classes em UML •Tipos Genéricos •Coleções •Polimorfismo

2012.2 Técnicas de Programação Avançada 5

Page 4: diego/disciplinas/2014_2/... · Created Date: 8/11/2014 6:43:08 PM

Organização do curso

Parte II – Padrões de Projeto

•Princípios de Programação Orientada a Objetos •Introdução aos padrão de projeto •Padrões Grasp •Frameworks •Linhas de Produtos

2012.2 Técnicas de Programação Avançada 6

Page 5: diego/disciplinas/2014_2/... · Created Date: 8/11/2014 6:43:08 PM

Avaliação

2 provas (P1,P2) 1 trabalho (T1) Média: (P1+P2+T1)/3 Reposição apenas via procedimento oficial

2012.2 Técnicas de Programação Avançada 7

Page 6: diego/disciplinas/2014_2/... · Created Date: 8/11/2014 6:43:08 PM

Bibliografia

Linguagens de Programação - Conceitos e Técnicas. Flávio Varejão. Editora Campus Use a Cabeça ! Padrões de Projetos (Design Patterns) - 2ª Ed. Elisabeth Freeman e Eric Freeman. Editora: Alta Books Padrões de Projeto – Soluções reutilizáveis de software orientado a objetos. Erich Gamma, Richard Helm, Ralph Johnson. Editora Bookman Fundamentos do Desenho Orientado a Objeto com UML. Melir Page-Jones. Makron Books

2012.2 Técnicas de Programação Avançada 8

Page 7: diego/disciplinas/2014_2/... · Created Date: 8/11/2014 6:43:08 PM

Técnicas de Projeto e Implementação de Sistemas I

TCC-0640XX Prof.: Diego Passos

www.ic.uff.br/~dpassos [email protected]

Conteúdo: Revisão de Orientação a Objetos

Slides modificados a partir do material original do Professor Anselmo Montenegro.

Page 8: diego/disciplinas/2014_2/... · Created Date: 8/11/2014 6:43:08 PM

Introdução

04/08/2014 Programação de Computadores II 2

Programação Estruturada Composição dos Programas:

Um programa é composto por um conjunto de rotinas A funcionalidade do programa é separada em rotinas Os dados do programa são variáveis locais ou globais

Fluxo de Execução:

O programa tem início em uma rotina principal A rotina principal chama outras rotinas Estas rotinas podem chamar outras rotinas, sucessivamente Ao fim de uma rotina, o programa retorna para a chamadora

Paradigmas de programação

Page 9: diego/disciplinas/2014_2/... · Created Date: 8/11/2014 6:43:08 PM

Introdução

04/08/2014 Programação de Computadores II 3

Programação Orientada a Objetos Composição do programa:

A funcionalidade do programa é agrupada em objetos Os dados do programa são agrupados em objetos Os objetos agrupam dados e funções correlacionados

Fluxo de Execução:

Similar ao anterior Os objetos colaboram entre si para a solução dos objetivos A colaboração se realiza através de chamadas de rotinas

Paradigmas de programação

Page 10: diego/disciplinas/2014_2/... · Created Date: 8/11/2014 6:43:08 PM

Introdução

04/08/2014 Programação de Computadores II 4

OO

Estruturada

• Encapsulamento

• Herança

• Polimorfismo

• Seqüencia

• Decisão

• Repetição

Paradigmas de programação

Page 11: diego/disciplinas/2014_2/... · Created Date: 8/11/2014 6:43:08 PM

Introdução

04/08/2014 Programação de Computadores II 5

O ser humano se relaciona com o mundo através do conceito de objetos.

Estamos sempre identificando objetos ao nosso redor. Para isso:

atribuímos nomes classificamos em grupos – classes.

Objetos

Page 12: diego/disciplinas/2014_2/... · Created Date: 8/11/2014 6:43:08 PM

Introdução

04/08/2014 Programação de Computadores II 6

Definição Um objeto é a representação computacional de um elemento ou processo do mundo real Cada objeto possui um conjunto de características e comportamentos

Objetos

Page 13: diego/disciplinas/2014_2/... · Created Date: 8/11/2014 6:43:08 PM

04/08/2014 Programação de Computadores II 7

Características de um objeto

Definição

Uma característica descreve uma propriedade de um objeto, ou seja, algum elemento que descreva o objeto

Exemplo de características de um objeto identificado como carro:

Cor Marca Número de portas Ano de fabricação e tipo de combustível

Orientação a Objetos

Page 14: diego/disciplinas/2014_2/... · Created Date: 8/11/2014 6:43:08 PM

04/08/2014 Programação de Computadores II 8

Comportamento de um objeto

Definição:

Um comportamento representa uma ação ou resposta de um objeto a uma ação do mundo real.

Exemplos de comportamento para o objeto carro

Acelerar Parar Andar Estacionar

Orientação a Objetos

Page 15: diego/disciplinas/2014_2/... · Created Date: 8/11/2014 6:43:08 PM

04/08/2014 Programação de Computadores II 9

Características e comportamentos de objetos

Exemplos: Cachorros

características: nome, cor, raça comportamentos: latir, correr

Bicicletas

características: marcha atual, velocidade atual comportamentos: trocar marcha, aplicar freios

Orientação a Objetos

Page 16: diego/disciplinas/2014_2/... · Created Date: 8/11/2014 6:43:08 PM

04/08/2014 Programação de Computadores II 10

Mapeamento entre objetos reais e computacionais

Orientação a Objetos

Características

Comportamento

Objeto no Mundo Real

Atributos

Métodos

Objeto Computacional

Page 17: diego/disciplinas/2014_2/... · Created Date: 8/11/2014 6:43:08 PM

04/08/2014 Programação de Computadores II 12

Identificação

Identificar as características e o comportamento de objetos do mundo real é o primeiro passo da programação OO. Observe um objeto e pergunte:

1. Quais os possíveis características deste objeto e quais estados elas assumem?

2. Quais comportamentos (ações) que ele pode executar?

Orientação a Objetos

Page 18: diego/disciplinas/2014_2/... · Created Date: 8/11/2014 6:43:08 PM

Introdução

04/08/2014 Programação de Computadores II 13

Conceitos

Page 19: diego/disciplinas/2014_2/... · Created Date: 8/11/2014 6:43:08 PM

04/08/2014 Programação de Computadores II 14

Classes

Objetos não são considerados isoladamente Um processo natural é identificar características e comportamentos semelhantes entre objetos Objetos com características e comportamentos semelhantes são agrupados em classes

Orientação a Objetos

Page 20: diego/disciplinas/2014_2/... · Created Date: 8/11/2014 6:43:08 PM

04/08/2014 Programação de Computadores II 15

Classes

A unidade fundamental em programação em orientação a objetos (POO) é a classe. Classes contém: Atributos: determinam o estado do objeto;

Métodos: semelhantes a procedimentos em linguagens

convencionais, são utilizados para manipular os atributos.

Orientação a Objetos

Page 21: diego/disciplinas/2014_2/... · Created Date: 8/11/2014 6:43:08 PM

Classes Orientação a Objetos

04/08/2014 Programação de Computadores II 16

Anda Para Acelera Estaciona

Carro

Número de Rodas

Cor

Cor Lateral

Page 22: diego/disciplinas/2014_2/... · Created Date: 8/11/2014 6:43:08 PM

Orientação a Objetos

04/08/2014 Programação de Computadores II 17

Classes

Aluno

Nome Matrícula Nota Média

João 193.31.098-7 7,6

Maria 195.31.022-5 8,7

Page 23: diego/disciplinas/2014_2/... · Created Date: 8/11/2014 6:43:08 PM

04/08/2014 Programação de Computadores II 18

Classes

As classes proveem a estrutura para a construção de objetos - estes são ditos instâncias das classes

Classe

Aluno Nome Matrícula Nota Média

setNome(nome) getNome() ...

atributos

métodos

Instâncias

João 193.31.098-7 7,6

Maria 195.31.022-5 8,7

Orientação a Objetos

Page 24: diego/disciplinas/2014_2/... · Created Date: 8/11/2014 6:43:08 PM

04/08/2014 Programação de Computadores II 19

Objetos

Bicicleta

Marcha Velocidade

mudarMarcha() mudarVelocidade() ...

campos (atributos)

métodos

Instâncias

3ª 20 km/h

Classe

7ª 35 km/h

Bicicleta B

Bicicleta A

Orientação a Objetos

Page 25: diego/disciplinas/2014_2/... · Created Date: 8/11/2014 6:43:08 PM

04/08/2014 Programação de Computadores II 20

Objetos como instâncias de classes

Um objeto é uma instância de uma única classe.

Uma instância de um objeto é uma unidade de programação que é armazenada em uma variável. Um programa orientado a objetos é composto por um conjunto de objetos que interagem entre si.

Orientação a Objetos

Page 26: diego/disciplinas/2014_2/... · Created Date: 8/11/2014 6:43:08 PM

04/08/2014 Programação de Computadores II 21

Colaboração entre objetos

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 representa a chamada de um método

Orientação a Objetos

Motorista

Carro

Freia

Page 27: diego/disciplinas/2014_2/... · Created Date: 8/11/2014 6:43:08 PM

04/08/2014 Programação de Computadores II 22

Mensagens Orientação a Objetos

Um envio de mensagem sempre possui:

Um emissor Um receptor Um seletor de mensagens (nome do método chamado) Parâmetros (opcionais)

Uma mensagem pode retornar um valor

Page 28: diego/disciplinas/2014_2/... · Created Date: 8/11/2014 6:43:08 PM

04/08/2014 Programação de Computadores II 23

Objetos

Métodos operam no estado interno de um objeto e servem como mecanismo de comunicação entre objetos.

Bibicleta B

7º 35 km/h

João

João 30 anos

mudarMarcha

Orientação a Objetos

Page 29: diego/disciplinas/2014_2/... · Created Date: 8/11/2014 6:43:08 PM

04/08/2014 Programação de Computadores II 24

Classes em Java Orientação a Objetos

Qualificador_de_acesso class Nome_Da_Classe

{

// atributos da classe

// métodos da classe

}

// Class Lampada

public class Lampada

{

// Atributos

boolean acesa;

// Métodos

public void ligar()

{ acesa = true; }

public void desligar()

{ acesa = false; }

}

// Class Bicicleta

class Bicicleta

{

// Atributos

int velocidade = 0;

int marcha = 1;

// Métodos

void mudarMarcha(int novoValor)

{ marcha= novoValor; }

Void aumentaVelocidade(int incremento)

{ velocidade+= incremento; }

}

Page 30: diego/disciplinas/2014_2/... · Created Date: 8/11/2014 6:43:08 PM

04/08/2014 Programação de Computadores II 25

Criando Objetos em Java Orientação a Objetos

Para instanciarmos um novo objeto devemos utilizar o operador new, como nos exemplos abaixo:

NomeDaClasse nomeDoObjeto = new NomeDaClasse(); Criando dois objetos bicicleta:

Bicicleta bicicleta1 = new Bicicleta(); Bicicleta bicicleta2 = new Bicicleta();

Invocando seus métodos:

bicicleta1.mudarMarcha(2); bicicleta2.aumentaVelocidade(5);

Page 31: diego/disciplinas/2014_2/... · Created Date: 8/11/2014 6:43:08 PM

04/08/2014 Programação de Computadores II 26

Resumindo ... Orientação a Objetos

A classe provê a estrutura para a construção de objetos. Um objeto é uma instância de uma classe. Contém um estado (valores de seus atributos). Expõe o seu comportamento através de métodos (funções).

Page 32: diego/disciplinas/2014_2/... · Created Date: 8/11/2014 6:43:08 PM

Introdução

04/08/2014 Programação de Computadores II 27

Conceitos

Page 33: diego/disciplinas/2014_2/... · Created Date: 8/11/2014 6:43:08 PM

04/08/2014 Programação de Computadores II 28

Encapsulamento Orientação a Objetos

É um princípio fundamental da OO:

Esconder o estado interno (valores dos atributos). Obrigar que interações com os atributos sejam executadas através de métodos. Com o encapsulamento um objeto determina a permissão que outros objetos terão para acessar seus atributos (estado).

Page 34: diego/disciplinas/2014_2/... · Created Date: 8/11/2014 6:43:08 PM

04/08/2014 Programação de Computadores II 29

Encapsulamento Orientação a Objetos

Definição

É a utilização de técnicas de programação e mecanismos de linguagem de programação para agrupar e restringir acesso à atributos métodos e classes

Objetivo:

Reduzir a complexidade externa (interface) das classes Preservar a integridade dos dados internos dos objetos

Page 35: diego/disciplinas/2014_2/... · Created Date: 8/11/2014 6:43:08 PM

04/08/2014 Programação de Computadores II 30

Tipos de encapsulamento Orientação a Objetos

Encapsulamento de atributos: métodos de acesso Encapsulamento de métodos: classes Encapsulamento de classes: pacotes

Page 36: diego/disciplinas/2014_2/... · Created Date: 8/11/2014 6:43:08 PM

04/08/2014 Programação de Computadores II 31

Encapsulamento de Dados Orientação a Objetos

Atributos e Métodos

Os métodos formam uma “cerca” em torno dos atributos

Os atributos não podem ser manipulados diretamente

Os atributos somente podem ser alterados ou consultados através dos métodos do objeto

Page 37: diego/disciplinas/2014_2/... · Created Date: 8/11/2014 6:43:08 PM

04/08/2014 Programação de Computadores II 32

Encapsulamento de Dados Orientação a Objetos

Proteger os atributos

Permitir acesso aos atributos através dos métodos

Pessoa

- nome: String - idade: int

+definirNome(nome: Sting): void

+retornarNome(): String

+definirIdade(idade: int): void

+retornarIdade(): int

...

Page 38: diego/disciplinas/2014_2/... · Created Date: 8/11/2014 6:43:08 PM

04/08/2014 Programação de Computadores II 33

Encapsulamento de Dados. Orientação a Objetos

Um objeto X é denominado cliente de um objeto Y se utiliza métodos de Y Pelo encapsulamento:

Clientes de um objeto podem utilizar seus métodos sem conhecer os detalhes de sua implementação A implementação de um objeto pode ser alterada sem o conhecimento de seus clientes, desde que a interface visível seja mantida

Page 39: diego/disciplinas/2014_2/... · Created Date: 8/11/2014 6:43:08 PM

04/08/2014 Programação de Computadores II 34

Encapsulamento de Dados Orientação a Objetos

Pedido de Serviço

Interface Visível

Implementação

Page 40: diego/disciplinas/2014_2/... · Created Date: 8/11/2014 6:43:08 PM

Introdução

04/08/2014 Programação de Computadores II 7

Conceitos

Page 41: diego/disciplinas/2014_2/... · Created Date: 8/11/2014 6:43:08 PM

04/08/2014 Programação de Computadores II 8

Herança Orientação a Objetos

Diferentes classes podem ter diversas semelhança

Duas ou mais classes poderão compartilhar os mesmos atributos e/ou os mesmos métodos.

Herança: Permite a uma classe herdar o estado (atributos) e o comportamento (métodos) de outra classe.

– Superclasse

– Subclasse

– Ancestral

– Descendente

Page 42: diego/disciplinas/2014_2/... · Created Date: 8/11/2014 6:43:08 PM

04/08/2014 Programação de Computadores II 9

Herança Orientação a Objetos

Aluno Curso Matrícula Nota Média

Professor Formação Área de interesse Departamento

Pessoa

Nome Idade

Page 43: diego/disciplinas/2014_2/... · Created Date: 8/11/2014 6:43:08 PM

04/08/2014 Programação de Computadores II 10

Herança Orientação a Objetos

Professor

- nome: String - idade: int - formação: String

+definirNome(nome: Sting): void

+retornarNome(): String

+definirIdade(idade: int): void

+retornarIdade(): int

+definirFormacao(f: Sting): void

+retornarFormacao(): String

...

Aluno

- nome: String - idade: int - curso: String

+definirNome(nome: Sting): void

+retornarNome(): String

+definirIdade(idade: int): void

+retornarIdade(): int

+definirCurso(c: Sting): void

+retornarCurso(): String

...

Page 44: diego/disciplinas/2014_2/... · Created Date: 8/11/2014 6:43:08 PM

04/08/2014 Programação de Computadores II 11

Herança Orientação a Objetos

Professor

- nome: String - idade: int - formação: String

+definirNome(nome: Sting): void

+retornarNome(): String

+definirIdade(idade: int): void

+retornarIdade(): int

+definirFormacao(f: Sting): void

+retornarFormacao(): String

...

Aluno

- nome: String - idade: int - curso: String

+definirNome(nome: Sting): void

+retornarNome(): String

+definirIdade(idade: int): void

+retornarIdade(): int

+definirCurso(c: Sting): void

+retornarCurso(): String

...

Page 45: diego/disciplinas/2014_2/... · Created Date: 8/11/2014 6:43:08 PM

04/08/2014 Programação de Computadores II 12

Herança Orientação a Objetos

Aluno - curso: String

Professor - formação: String

Pessoa

- nome: String - idade: int

+definirNome(nome: Sting): void

+retornarNome(): String

+definirIdade(idade: int): void

+retornarIdade(): int

+definirFormacao(f: Sting): void

+retornarFormacao(): String

+definirCurso(f: Sting): void

+retornarCurso(): String

Page 46: diego/disciplinas/2014_2/... · Created Date: 8/11/2014 6:43:08 PM

04/08/2014 Programação de Computadores II 13

Herança Orientação a Objetos

Pessoa

- nome: String - idade: int

+definirNome(nome: Sting): void

+retornarNome(): String

+definirIdade(idade: int): void

+retornarIdade(): int

Aluno - curso: String

+definirCurso(f: Sting): void

+retornarCurso(): String

João

25

Sistemas de Informação

Instâncias de Aluno

Maria

20

Sistemas de Informação

Page 47: diego/disciplinas/2014_2/... · Created Date: 8/11/2014 6:43:08 PM

04/08/2014 Programação de Computadores II 14

Herança Orientação a Objetos

//SuperClass.java

public class SuperClass

{

// Atributos e métodos

}

//SubClass.java public class SubClass extends SuperClass

{

// Atributos e métodos

}

Page 48: diego/disciplinas/2014_2/... · Created Date: 8/11/2014 6:43:08 PM

04/08/2014 Programação de Computadores II 15

Herança Orientação a Objetos

class Pessoa { String nome; int idade; void definirNome(String valor) { nome = valor; } String retornarNome() { return nome; } void definirIdade(int valor) { idade = valor; } int retornarIdade() { return idade; } }

class Aluno extends Pessoa { String curso; void definirCurso(String valor) { curso = valor; } String retornarCurso() { return curso; } }

Page 49: diego/disciplinas/2014_2/... · Created Date: 8/11/2014 6:43:08 PM

04/08/2014 Programação de Computadores II 16

Herança Orientação a Objetos

Aluno joao = new Aluno(); joao.definirNome(“João”); joao.definirIdade(25); joao.definirCurso(“Sistemas de Informação”); Aluno maria = new Aluno(); maria.definirNome(“Maria”); maria.definirIdade(20); maria.definirCurso(“Ciência da Computação”);

João 25 Sistemas de Informação

Maria 20 Ciência da Computação

Page 50: diego/disciplinas/2014_2/... · Created Date: 8/11/2014 6:43:08 PM

04/08/2014 Programação de Computadores II 17

Herança Orientação a Objetos

Eletrodoméstico

Voltagem Garantia

Ligar Desligar

Liquidificador

Fabricante Cor

Auto Limpeza Velocidade

Page 51: diego/disciplinas/2014_2/... · Created Date: 8/11/2014 6:43:08 PM

04/08/2014 Programação de Computadores II 18

Superposição de atributos e métodos Orientação a Objetos

Atributos com mesmo nome de atributos de superclasses escondem o atributo da superclasse

O acesso ao atributo da superclasse se faz com o uso do operador super

04/08/2014 © UFF/IC

public class Automovel extends VeiculoTerrestre {

public String licenca;

public Automovel(){

super.licenca="LAL1229";

}

}

Page 52: diego/disciplinas/2014_2/... · Created Date: 8/11/2014 6:43:08 PM

04/08/2014 Programação de Computadores II 19

Herança e Generalização Orientação a Objetos

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.

“é um”

“é um tipo de”

superclasse

subclasse

04/08/2014 © UFF/IC

Page 53: diego/disciplinas/2014_2/... · Created Date: 8/11/2014 6:43:08 PM

04/08/2014 Programação de Computadores II 20

Classes Abstratas Orientação a Objetos

São classes que existem apenas conceitualmente para definir conjuntos de métodos e propriedades

Uma classe abstrata é uma classe que não tem instâncias diretas

Entretanto, suas classes descendentes podem ter instâncias diretas

Page 54: diego/disciplinas/2014_2/... · Created Date: 8/11/2014 6:43:08 PM

04/08/2014 Programação de Computadores II 21

Herança Orientação a Objetos

public abstract class Empregado {

public Empregado (String nome, double salario) { this.numero = ++contador;

this.nome = nome;

this.salario = salario; }

public abstract void aumentaSalario(double percentual);

}

public class Vendedor extends Empregado{

public void aumentaSalario (double percentualDeAumento)

{ percComissao = percComissao * (1+percentualDeAumento/100);}

}

public class Gerente extends Empregado {

public void aumentaSalario(double percentual) {

double novoSalario = getSalario() * (1+2 * percentual/100);

setSalario(novoSalario);

}

}

Page 55: diego/disciplinas/2014_2/... · Created Date: 8/11/2014 6:43:08 PM

04/08/2014 Programação de Computadores II 22

Interfaces Orientação a Objetos

Uma interface apenas propõe os métodos que devem ser implementados pelas classes que desejarem

Uma interface define um tipo.

Page 56: diego/disciplinas/2014_2/... · Created Date: 8/11/2014 6:43:08 PM

04/08/2014 Programação de Computadores II 23

Herança Orientação a Objetos

public interface Ordenavel {

public int comparar(Ordenavel b);

}

public class Empregado implements Ordenavel {

...

public int comparar(Ordenavel b) {

Empregado e = (Empregado)b;

if (salario < e.salario) return -1;

if (salario > e.salario) return 1;

return 0;

} ...

}

public class Ordenacao {

public static void ordena(Ordenavel[] a)

{ ... if (a[i].comparar(a[i+]) > 1) ... }

}

Page 57: diego/disciplinas/2014_2/... · Created Date: 8/11/2014 6:43:08 PM

04/08/2014 Programação de Computadores II 24

Classes Abstratas, concretas e interfaces Orientação a Objetos

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.

Classes Abstratas Vs 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 tipo.

Page 58: diego/disciplinas/2014_2/... · Created Date: 8/11/2014 6:43:08 PM

04/08/2014 Programação de Computadores II 25

Modificadores de Acesso Orientação a Objetos

Uma classe pode ser:

public acessada por qualquer outra classe.

nenhum modificador (package-private) acessada somente dentro do seu pacote.

Page 59: diego/disciplinas/2014_2/... · Created Date: 8/11/2014 6:43:08 PM

04/08/2014 Programação de Computadores II 26

Modificadores de Acesso Orientação a Objetos

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.

Page 60: diego/disciplinas/2014_2/... · Created Date: 8/11/2014 6:43:08 PM

04/08/2014 Programação de Computadores II 27

Modificadores de Acesso Orientação a Objetos

Não Não Não Sim private

Não Não Sim Sim nenhum

Não Sim Sim Sim protected

Sim Sim Sim Sim public

todos subclasse pacote

Classe/ Atributos ou

métodos

modificador

Page 61: diego/disciplinas/2014_2/... · Created Date: 8/11/2014 6:43:08 PM

04/08/2014 Programação de Computadores II 28

Modificadores de Acesso Orientação a Objetos

Não Não Não Sim private

Não Não Sim Sim nenhum

Não Sim Sim Sim protected

Sim Sim Sim Sim public

Gamma AlphaSub Beta

Alpha

modificador

Alpha

Beta

AlphaSub

Gamma

SubClass

Page 62: diego/disciplinas/2014_2/... · Created Date: 8/11/2014 6:43:08 PM

04/08/2014 Programação de Computadores II 29

Construtores Orientação a Objetos

class Pessoa { String nome; int idade; public Pessoa (String nome, int idade) { this.nome = nome; this.idade = idade; } public Pessoa () { this.nome = “João”; this.idade = 25; } }

Pessoa maria = new Pessoa(“Maria”, 20); Pessoa joao = new Pessoa();

Page 63: diego/disciplinas/2014_2/... · Created Date: 8/11/2014 6:43:08 PM

04/08/2014 Programação de Computadores II 30

Construtores Orientação a Objetos

Devem ter o mesmo nome da classe que inicializam. Podem ter parâmetros. Não tem retorno. Se não é declarado nenhum construtor, a linguagem provê um construtor padrão sem argumentos que não faz nada.

Page 64: diego/disciplinas/2014_2/... · Created Date: 8/11/2014 6:43:08 PM

04/08/2014 Programação de Computadores II 31

Construtores Orientação a Objetos

import java.util.*; public class AloMundo { private String mensagem = “ ”; public AloMundo () { Date data = new Date(); mensagem = "Alô, Mundo” + data.toString() ;

}

public void mostrarMensagem () { System.out.println( mensagem ); } }

Classe

Pacotes

Métodos

Variáveis

Construtores