POO - Encapsulamento

Esta correta essa minha análise?

Essa classe não tem dois objetos, ela tem dois métodos, um público(interface) que disponibiliza um serviço à outra classe chamado a partir da instância de Log e outro privado para uso interno da mesma.

Encapsulamento é você omitir(private) a visibilidade dos atributos da classe! e outras classes só poderão manipular esses atributos atráves de métodos get´s e setters´s


public class Conta {
	
	private int numero; 
	private double saldo;
	private double limite;
	private Cliente titular;	
	
	public int getNumero() {
		return numero;
	}

	public void setNumero(int numero) {
		this.numero = numero;
	}

	public double getSaldo() {
		return saldo;
	}

	public void setSaldo(double saldo) {
		this.saldo = saldo;
	}

	public double getLimite() {
		return limite;
	}

	public void setLimite(double limite) {
		this.limite = limite;
	}

	public Cliente getTitular() {
		return titular;
	}

	public void setTitular(Cliente titular) {
		this.titular = titular;
	}

}

Nomes de classes em Java é com iniciais Maiúscula! log é Log!

Só fiquei com uma duvida,

O método: [code]public void debug(…){ // tem uma interface, que é o que vai ser chamado nas outras classes, certo?
print(…); // E a implementação desse método é feita com a interface do método print, que é o método que esta encapsulando algo, certo?
}

private void print(…){ // Interface de encapsulamento
System.out.println(…); // O que esta sendo encapsulado
}
[/code]

certo?

Leia as apostilas da Caelum, principalmente este ponto: http://www.caelum.com.br/apostila-java-orientacao-objetos/orientacao-a-objetos-basica/

Sua interpretação esta errada.

Você esta confundindo os parâmetros dos métodos com interface.

public void print(.....){ //esta linha define o nome do seu método, parâmetros (informações que vão ser tratadas pelo seu método) e retorno (neste caso não retorna nada pois é void)

System.out.println(......); // implementação

}

Interface é outra história… para pesquisar sobre o assunto te recomendo http://www.caelum.com.br/apostila-java-orientacao-objetos/interfaces/

Abs!

[quote=rodazzz]

Esta correta essa minha análise?[/quote]

Vamos lá …
Vc está correto mas usando as palavras erradas.

public void debug(String mensagem)

Isto acima é a Assinatura do Método. Isto representa um Contrato da classe Log.

Então a classe contém as duas implementações dos métodos do seu contrato.
às vezes “contrato” é chamado de interface, mas tem que ter cuidado com o contexto. Aqui, as pessoas entenderam que vc estava falando do conceito de interface (no sentido de tipo em java).
O contrato pode ser privado ou publico.

ou seja, troque “objeto” por “metodo” e “interface” por “contrato” e a sua frase passa a fazer sentido para o resto dos mortais …

Mas o fato de vc usar as palavras erradas tem um significado em si mesmo. Como vc está estudando essas coisas que não esbarrou nas palavras certas ? pense nisso.

[quote=sergiotaborda][quote=rodazzz]

Esta correta essa minha análise?[/quote]

Vamos lá …
Vc está correto mas usando as palavras erradas.

public void debug(String mensagem)

Isto acima é a Assinatura do Método. Isto representa um Contrato da classe Log.

Então a classe contém as duas implementações dos métodos do seu contrato.
às vezes “contrato” é chamado de interface, mas tem que ter cuidado com o contexto. Aqui, as pessoas entenderam que vc estava falando do conceito de interface (no sentido de tipo em java).
O contrato pode ser privado ou publico.

ou seja, troque “objeto” por “metodo” e “interface” por “contrato” e a sua frase passa a fazer sentido para o resto dos mortais …

Mas o fato de vc usar as palavras erradas tem um significado em si mesmo. Como vc está estudando essas coisas que não esbarrou nas palavras certas ? pense nisso.[/quote]

Muito obrigado, foi muito boa a sua explicação.

Eu estou estudando o livro - Aprenda programação orientada a objetos em 21 dias.

E ele cita o termo contrato e interface, mas depois ele usa somente o termo interface para explicar.

E em relações a objetos, eu tenho algumas duvidas, tem lugares que dizem que tudo é objeto, e tem lugares que falam que somente a instancia é um objeto.

Método é a mesma coisa que função e mensagem, certo?

E só mais um favor, poderia me dar um exemplo do que é um componente?

Somente a instancia de uma classe é um objeto.
Por exemplo, aquela assinatura do método não é um objeto porque não é a instancia de nenhuma classe.

Contudo, quando vc usa reflection a JvM cria um objeto da classe Method que permie que vc manipule aquele método ali, inclusive que o invoke. Mas a JVM fez o truque de trasnformar o código em um objeto.

Sim. Na teoria os objetos só trocam mensagens. “Método” é uma forma de implementar esta teoria. Em outras linguagens outros mecanismos são usados.

A palavra “componente” por si só, é ambigua. Em UI falamos de componentes no sentido que um textfield é um component e um botão é um componente.
Em arquitetura falamos que um web container é um component e um ejb container é um componente.

Componente é um conceito abstrato que indica um elemento que é auto suficiente em certa medida e que pode ser reaproveitado. No máximo ele precisa se associar a outros componentes para funcionar.
Um component é geralmente realizado por mais do que uma classe, mas uma classe sozinha também pode ser um componente pois o conceito em si não define a escala em que estamos falando. Por isso que se diz “Componente Gráfico” ou “Componente de arquitetura” para especificar em que contexto estamos usando a palavra e que tipo de granularidade estamos usado.