Classes – Java e C#

Publicado: 6 de fevereiro de 2014 em C#, Java

Programação Orientada a objeto

Programação orientada a objetos representa o mundo real. Na programação orientada a objetos, implementa-se um conjunto de classes que definem os objetos presentes no sistema de software.

Classes

Em orientação a objetos, uma classe é uma estrutura que abstrai um conjunto de objetos com características similares. Uma classe define o comportamento de seus objetos através de métodos e os estados possíveis destes objetos através de atributos. Em outros termos, uma classe descreve os serviços providos por seus objetos e quais informações eles podem armazenar.

Representando o mundo real

Representando o mundo real temos um objeto bebê,  nosso bebê possui os seguintes atributos:

  • Nome
  • Peso
  • Sexo
  • Decibéis (choro)
  • Numero de cacas até agora

Nosso objeto bebê :


String nome
boolean genero
double peso
double decibeis
int numCaca

Porque Usar Classes?

No mundo real, muitas vezes você vai encontrar muitos objetos individuais todos da mesma espécie. Pode haver milhares de outros bebês na existência, todos parecidos. Cada bebê foi construído a partir do mesmo conjunto de projetos(DNA) e, portanto, contém os mesmos componentes. Em termos de orientação a objetos, dizemos que o seu bebê é uma instância da classe de objetos conhecidos como bebê. Uma classe é o modelo a partir do qual objetos individuais são criados. Criando a classe bebê teremos um objeto bebê com seus atributos definidos:

classe-bebe
A partir do objeto bebê podemos instanciar vários outros com as mesmas características:

classe-bebe2

Para cuidar dos bebês precisamos de enfermeiras e de um berçário, podemos também criar a classe enfermeiras e a classe berçário:

classe-bebe4

Na classe berçário podemos ter inúmeros bebês e varias enfermeiras para cuidar de cada bebê:

classe-bebe5

Podemos ir mais além e manipular varias classes a hospital, emergência, berçário, enfermeiras e bebê:

classe-bebe6

Criando Classes

Uma classe possui basicamente 3 partes distintas:

  • A Definição da classe .
  • Os membros da classe.
  • Construtor da classe.

Definição da classe: Nomes de classes são capitalizados , uma classe  é igual a um arquivo, ter um método principal (main) significa que a classe pode ser executada.


public class Bebe
{
}

Os membros da classe: Os membros da classe podem ser campos, propriedades, métodos e etc.


public class Bebe
{

String nome;
double peso= 5.0;
boolean genero;
int numCaca = 0;

}

Construtor: Nome do construtor é igual ao nome da classe, não possui retorno, nunca retorna nada, normalmente inicializa campos, todas as classes precisam de pelo menos um construtor, se você não escrever um, o padrão é Nomedaclasse() { }.


// Definição da classe
public class Bebe

{
     // membros da classe
     String nome;
     boolean eMasculino;

     // Construtor da Classe
     Baby (String meunome, boolean bebeMasculino)
     {
        nome = meunome;
        eMasculino = bebeMasculino;
     }
}

Instancias de Classes

Para criar uma instancia de uma classe use o comando new:

// Cria uma instancia
Bebe Daniel = new Bebe();

//para usar a instacia
Daniel.nome = "Daniel";

Exemplo: Neste cenário vamos criar duas classes bem simples e instanciar as classes na classe main (principal), utilizaremos apenas os princípios básicos de classes e veremos que ela funciona tanto em Java como em C#. Basicamente temos um hospital no qual seu berçário recebeu 3 novos bebês, assim que os bebês precisam de cuidados duas enfermeiras estão prontas para atende-los, seja trocando sua fralda ou prestando cuidados de enfermaria, deixando os bebê limpos e saudáveis novamente.

JAVA

Classe #1: Hospital Main Class.

public class Hospital {
	
// Esta classe funciona em Java e em C#
// Apenas troque as keyword:
// System.out.println  por
// Console.Writeln	
	
	public static void main(String[] args) {
		// Classe Hospital
		// Rescem nascidos

		Bebe Amanda = new Bebe();
		Bebe Julia = new Bebe();
		Bebe Rodrigo = new Bebe();

		// Bebê Amanda
		Amanda.nome = "Amanda";
		Amanda.tamanho = 30.4;
		Amanda.sexo = "feminino";

		// Bebê Julia
		Julia.nome = "Julia";
		Julia.tamanho = 28.7;
		Julia.sexo = "feminino";

		// Bebê Rodrigo
		Rodrigo.nome = "Rodrigo";
		Rodrigo.tamanho = 27.9;
		Rodrigo.sexo = "masculino";

		// Bebês
		System.out.println("Bebês no berçario do hospital: ");
		System.out.println("");
		System.out.println(Amanda.nome + " sexo: " + Amanda.sexo + " tamanho: "
				+ Amanda.tamanho);
		System.out.println(Julia.nome + " sexo: " + Julia.sexo + " tamanho: "
				+ Julia.tamanho);
		System.out.println(Rodrigo.nome + " sexo: " + Rodrigo.sexo
				+ " tamanho: " + Rodrigo.tamanho);

		// Bêbes que precisam de cuidados
		Amanda.setSaudavel(false);
		Rodrigo.setFezCoco(true);

		System.out.println("");
		System.out.println("Estes bebês precisam de uma enfermeira");
		if (Amanda.getSaudavel() == false) {
			System.out.println(Amanda.nome
					+ " está doente e precisa de cuidados");
		}
		if (Rodrigo.getFezCoco() == true) {
			System.out.println(Rodrigo.nome + " precisa trocar a fralda");
		}

		// Cria Enfermeiras
		Enfermeira Regina = new Enfermeira();
		Enfermeira Mara = new Enfermeira();
		Regina.nome = "Regina";
		Mara.nome = "Mara";

		// Enfermeiras trabalhando
		Amanda.setSaudavel(Regina.getEnfermaria());
		Rodrigo.setFezCoco(Mara.getTrocaFralda());

		// Bebês após cuidados
		System.out.println("");
		System.out.println(Regina.nome + " e " + Mara.nome
				+ " cuidaram dos bebês");
		if (Amanda.getSaudavel() == true) {
			System.out.println(Amanda.nome + " está saudavel novamente");
		}
		if (Rodrigo.getFezCoco() == false) {
			System.out.println(Rodrigo.nome + " esta com uma nova fralda");
		}
	}
}

Classe #2 – Classe Bebê.

public class Bebe {
	
	// Cria campos 
	public String nome = null;
	public Double tamanho = 0.0;
	public String sexo = null;
	private Boolean saudavel = true;
	private Boolean fezCoco = false;
	
    // Cria métodos Getter e Setter para a classe
	public Boolean getSaudavel() {
		return saudavel;
	}

	public void setSaudavel(Boolean saudavel) {
		this.saudavel = saudavel;
	}

	public Boolean getFezCoco() {
		return fezCoco;
	}

	public void setFezCoco(Boolean fezCoco) {
		this.fezCoco = fezCoco;
	}

    // Construtor da classe
	public Bebe() {
	}

}

Classe #3 – Classe Enfermeira.

public class Enfermeira {
	
	// Cria campos da classe
	public String nome = null;
	private Boolean enfermaria = true;
	private Boolean trocaFralda = false;

	// Construtor da classe
	public Enfermeira() {
	}

	// Métodos Getter e Setter
	public Boolean getEnfermaria() {
		enfermaria = true;
		return enfermaria;
	}

	public Boolean getTrocaFralda() {
		trocaFralda = false;
		return trocaFralda;
	}
}

C#

Para rodar estas classes em C# apenas crie um novo projeto e substitua a classe default pela classe hospital, no solution explorer clique com o botão direito no projeto, add, new item, class, renomeie a classe para Bebe.cs e colque a classe Bebe acima, faça o mesmo com a classe Enfermeira, as classes foram escritas para funcionar nas duas línguas e só é necessário substituir uma keyword:


// Em C# na classe Hospital a Void que inicializa o programa sua única diferença
// é a keyword String para Java e string para C#

public static void main(String[] args) // JAVA
static void Main(string[] args) // string minusculo C#

// Você pode substituir tudo de uma única vez no menu:
// Edit - Find and Replace - Quick Replace - botão para substituir todos
// Substitua na classe Hospital todos os comandos Java:

System.out.println // Java keywords

// por :

Console.WriteLine

Obs: A principal diferença destas 3 classe e o funcionamento do programa acima é que Java não necessita que o construtor das classes Bebe e Enfermeira sejam públicos, já em C# não seria possível instanciar as classe deste modo sem que o construtor tenha sido declarado publico. Experimente tirar a keyword public do construtor e compilar o programa.

Publicidade

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s