Classes

Orientação a Objetos em Java - Criando Classes

A Orientação a Objetos é uma maneira alternativa de pensar os problemas de sistemas de informação utilizando modelos organizados a partir de conceitos do mundo real. O artefato base é o “objeto” capaz de combinar estrutura e comportamento em uma única “entidade”. Tudo o que podemos ver no mundo real é considerado um objeto com atributos e comportamentos definidos. Na qualidade de método de modelagem, é tida como a melhor estratégia para se eliminar a dificuldade recorrente no processo de modelar o mundo real do domínio do problema em um conjunto de componentes de software que seja o mais fiel na sua representação deste domínio.

A Linguagem Java

Java é a base de praticamente todos os tipos de aplicativos em rede, e é o padrão global para desenvolvimento e fornecimento de aplicativos para celular, jogos, conteúdo on-line e software corporativo. Com mais de 9 milhões de desenvolvedores em todo o mundo, o Java permite desenvolver e implantar aplicativos e serviços incríveis de maneira eficiente. Com ferramentas abrangentes, um ecossistema sólido e um desempenho eficiente, o Java oferece a portabilidade de aplicativos mesmo entre os ambientes computacionais mais diferentes.

Java Platform, Enterprise Edition (Java EE)

O Java Platform, Enterprise Edition (Java EE) é o padrão do setor para computação Java empresarial. Utilize o leve Java EE 6 Web Profile para criar aplicativos Web da próxima geração e a força total da plataforma Java EE 6 para aplicativos empresariais. Os desenvolvedores aproveitam os ganhos de produtividade com mais anotações, mais POJOs, pacotes simplificados e menos configurações de XML.

Java Platform, Standard Edition (Java SE)

O Java SE foi projetado para permitir o desenvolvimento de aplicativos seguros, portáteis e de alto desempenho para a maior variedade possível de plataformas de computação. Disponibilizando aplicativos em ambientes heterogêneos, as empresas podem agilizar a produtividade do usuário final, a comunicação e a colaboração—além de reduzir drasticamente o custo de propriedade de aplicativos tanto de empresas quanto de clientes.

Java Micro Edition (Java ME)

O Java Platform, Micro Edition (Java ME) é usado por um grande número de desenvolvedores de telefone celular Java, operadoras e OEMs para criar produtos telefônicos de destaque ao redor do mundo. A Oracle é líder no oferecimento de tecnologia para telefone celular encontrada em mais de três bilhões de dispositivos, por enquanto.

Toda Classe Java é composta de atributos, métodos e construtores. Em Java, todas as Classes herdam de Object (SuperClasse de todos os objetos do Java).

Exemplo de Classe Java de entidade (Parcial)

package entity;

public class Pessoa {

	private Integer idPessoa;
	private String nome;
	
	public Pessoa() {
	}

	public Pessoa(Integer idPessoa, String nome) {
		this.idPessoa = idPessoa;
		this.nome = nome;
	}

	public Integer getIdPessoa() {
		return idPessoa;
	}
	public void setIdPessoa(Integer idPessoa) {
		this.idPessoa = idPessoa;
	}
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}	
}

Note que a Classe posui atributos privados e métodos para entrada e saída dos dados denominados set (entrada) e get (saída). A Classe também possui 2 métodos Construtores, o primeiro sendo o Construtor default (padrão) da Classe e o segundo sendo o Construtor que permite a entrada de dados para a Classe. Quando escrevemos dois métodos com o mesmo nome, porém com entrada de dados diferentes (como no caso dos construtores), denominados este procedimento de Sobrecarga de Métodos

A Classe Pessoa herda Object

Em Java, todas as classes por definição são herança de Object. A Classe Object do Java possui 3 métodos que podemos implementar quando herdamos dela. São eles:
- toString - Método utilizado para retornar uma String que representa os dados do objeto, como uma “assinatura” do objeto.
- equals - Método utlizado para comparar se dois objetos da mesma Classe são iguais.
- hashCode - Método utilizado para retornar o endereço de hashCode do objeto quando este é criado pelo compilador.

Vejamos um exemplo da Classe Pessoa implementando o método toString:

package entity;

public class Pessoa {

	private Integer idPessoa;
	private String nome;

	public Pessoa() {
	}

	public Pessoa(Integer idPessoa, String nome) {
		this.idPessoa = idPessoa;
		this.nome = nome;
	}

	@Override
	public String toString() {
		return idPessoa + ", " + nome;
	}

	public Integer getIdPessoa() {
		return idPessoa;
	}
	public void setIdPessoa(Integer idPessoa) {
		this.idPessoa = idPessoa;
	}
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
}

Executando a Classe Pessoa:
Para executar a classe Pessoa necessitamos de um método main

package entity;

public class Pessoa {

	private Integer idPessoa;
	private String nome;

	public Pessoa() {
	}

	public Pessoa(Integer idPessoa, String nome) {
		this.idPessoa = idPessoa;
		this.nome = nome;
	}
	
	public String toString() {
		return idPessoa + ", " + nome;
	}
	
	public Integer getIdPessoa() {
		return idPessoa;
	}
	public void setIdPessoa(Integer idPessoa) {
		this.idPessoa = idPessoa;
	}
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}

	public static void main(String[] args) {		
		//Criação do objeto pelo Construtor
		Pessoa p = new Pessoa(1, "Sergio");
		
		//Impressão do objeto (toString)
		System.out.println("Dados de Pessoa: " + p);
	}
}

A utilização do método toString na Classe Pessoa significa que reescrevemos o método toString da Classe Object. Quando uma Classe sobrescreve um método proveniente de sua Classe “Pai” chamamos esta operação de Sobrescrita de Métodos.

Modificadores de acesso do Java

Em Java, podemos criar atributos ou métodos com os seguintes modificadores de acesso:
- public - Acesso total, qualquer classe tem acesso ao método (não indicado para usar em atributos de entidade).
- protected - Acesso permitido por herança e por classes do mesmo pacote.
- default / friendly - Acesso permitido somente a classes do mesmo pacote, este acesso é definido quando não declaramos nenhum modificador.
- private - Acesso permitido somente dentro da própria classe. (indicado para atributos de classes de entidade).