Fórum Sharpgames
 
 
  Forum  Criação de Jogo...  Geral  Duvida em Programacao Orientada a Objeto      
Anterior Anterior
 
Próximo Próximo
Nova Entrada 24/8/2008 2:02
Resolvido
  Glauber
5 tópicos
Sem Ranking


Duvida em Programacao Orientada a Objeto       

Olá pessoal, sou meio leigo em POO, e estou com algumas duvidas, eu tenho alguma dificuldade para identificar métodos e objetos dentro d uma classe, por exemplo o código:

class Objetos

{

private Vector2 posicao;

private Vector2 tamanho;

private Vector2 velocidade;

private Texture2D textura;

public Vector2 Posicao

{

get { return posicao; }

set { posicao = value; }

}

public Vector2 Tamanho

{

get { return tamanho; }

set { tamanho = value; }

}

public Vector2 Velocidade

{

get { return velocidade; }

set { velocidade = value; }

}

public Texture2D Textura

{

get { return textura; }

set { textura = value; }

}

public Rectangle Retangulo

{

get { return new Rectangle( (int)posicao.X, (int)posicao.Y, (int)tamanho.X, (int)tamanho.Y ); }

}

}

ps: codigo usado no jogo pong XD

gostaria tb q me ajudassem a entender esse get/set, pra que serve e como q eu uso?

 

Obrigado pela atencão      
 
Nova Entrada 24/8/2008 16:02
Resposta Aceita 
  lucianoJose
195 tópicos
Iniciante


sRe: Duvida em Programacao Orientada a Objeto       
 Glauber escreveu

Olá pessoal, sou meio leigo em POO, e estou com algumas duvidas, eu tenho alguma dificuldade para identificar métodos e objetos dentro d uma classe, por exemplo o código:

class Objetos

{

private Vector2 posicao;

private Vector2 tamanho;

private Vector2 velocidade;

private Texture2D textura;

public Vector2 Posicao

{

get { return posicao; }

set { posicao = value; }

}

public Vector2 Tamanho

{

get { return tamanho; }

set { tamanho = value; }

}

public Vector2 Velocidade

{

get { return velocidade; }

set { velocidade = value; }

}

public Texture2D Textura

{

get { return textura; }

set { textura = value; }

}

public Rectangle Retangulo

{

get { return new Rectangle( (int)posicao.X, (int)posicao.Y, (int)tamanho.X, (int)tamanho.Y ); }

}

}

ps: codigo usado no jogo pong XD

gostaria tb q me ajudassem a entender esse get/set, pra que serve e como q eu uso?

 Obrigado pela atencão      



1º Indagação

Você diz que que tá com dúvidas em identificar 
métodos e objetos dentro de uma classe!

Em C#, de maneira bem grosseira, pra vc identificar se aquilo é um método ou não, basta identifica-lo procurando algum nome precedido de dois parenteses. Esses parenteses podem estar vazios ou com uma lista de parametro, um exemplo abaixo:

Basicamente, a fórmula de um método é:

<modificador de acesso> <tipo de retorno> <identificar do método> ( <lista de parametros> )
{

}

Um método sem parametros:

public void Pular(){ }

Um método com parametro(s):

public float CalculaEquacaoGrau1(float x) 
{
   float y;
   //...
   return y;
}

Em relação aos objetos, no exemplo que vc deu, os objetos(campos) são estes:

private Vector2 posicao;
private Vector2 tamanho;
private Vector2 velocidade;
private Texture2D textura;

2º Indagação

Em relação a "esse get/set". Get e Set são métodos! 

No mundo OO, todos os campos devem ser privados e devem ser acessados através de métodos publicos. Aonde dentro desses métodos você tem a liberdade de adicionar alguma regra de negócio no momento que algum desses métodos forem chamados. 
Quando você ouvir falar sobre o conceito de encapsulamento lembre-se desses métodos Get e Set...

Vamos à um exemplo na linguagem Java aonde não existe esse conceito de propriedades(get/set). Se você quer acessar um atributo da classe vc precisa criar 2 métodos para efetuar as operações de Get ou Set desse atributo.


public class Pessoa{
      private int idade;

public int GetIdade(){
      return idade;
}
public int SetIdade(int _idade){
       this.idade = _idade;
}

}


Tomando a classe pessoa acima, se nós quisessemos adicionar alguma regra de negocio para essa pessoa do tipo: Se essa pessoa é uma mulher então a idade real dela só ela pode saber, e quem for querer conhecer(Get) a idade dela vai saber, entretanto, com 5 anos a menos que a idade real. Então a gente poderia ter o método Get assim:

public int GetIdade(){
      return idade + 5;
}

Isso tudo foi em Java, em C# é semelhante, só que a gente nao precisa criar 2 métodos(Get e Set). No C# a gente utiliza o conceito de Propriedades. Aonde a gente tem uma classe Pessoa assim:

public class Pessoa{
  private int idade;

  public void Idade{
    get{ return this.idade;}
    set{ this.idade = value;}
  }

}


Só chamo atenção para a palavra reservada value, lembre desse value que está dentro do "acessador" set como sendo o argumento passado no método Set que a gente cria lá no Java:

public int SetIdade(int _idade){
       this.idade = _idade;
}

O argumento _idade seria o nosso value no C#!

Em relação a usar, basta chamar o nome da propriedade para pegar a idade da pessoa, vamos instanciar(tanto no java como no C#) uma pessoa para exemplificar:

Em java:

Pessoa glauber; // objeto Pessoa
glauber = new Pessoa(); // glauber deixou de ser objeto para ser instancia


Se eu quero neste momento atribuir uma idade para glauber:

glauber.SetIdade(45);

Se em algum momento quiser saber a idade de glauber, basta fazer:

int idadeDeGlauber = glauber.GetIdade();

Em C#:

Pessoa glauber; // objeto Pessoa
glauber = new Pessoa(); // glauber deixou de ser objeto para ser instancia

Se eu quero neste momento atribuir uma idade para glauber:

glauber.Idade = 45;

Se em algum momento quiser saber a idade de glauber, basta fazer:

int idadeDeGlauber = glauber.Idade;

---
Se tu nao compreendeu algum ponto abordado acima ou se o que eu escrevi acima, nao solucionou nada ou parte das tuas dúvidas, tu avisa por favor!

Abraços!


@lucianoJoseBr My Blog: http://lucjose.wordpress.com
 
Nova Entrada 25/8/2008 17:09
  Glauber
5 tópicos
Sem Ranking


Re: sRe: Duvida em Programacao Orientada a Objeto       

Vlwww Luciano, deu para entender muito bem sobre Poo , os exemplos em java e depois em c# facilitou bastante o entendimento de get/set.

Vlwww msm  ajudou bastante, tah fazendo um otimo trabalho aki no sharpgames

Abraço

XD

 
Nova Entrada 26/8/2008 16:16
  Diogocs
6 tópicos
Sem Ranking


Re: sRe: Duvida em Programacao Orientada a Objeto 
Olá Glauber, tem mais coisas interessantes e vou me ater a uma que deve ser bem utilizada no desenvolvimento de jogos, é a tal de Herança.

vou tentar passar de uma forma mais básica possivel para atingir o objetivo e voce, depois, com calma dá uma estudada no assunto.


Imagine um Jogo que voce precisa Desenhar 3 objetos na Tela. e eles são ( exemplo )
uma Bola, uma Pessoa e uma Árvore. ( estamos fazendo um jogo 2D )

em vez de voce criar 3 objetos para facilitar sua vida voce cria 4.

4 ? como isso vai melhorar minha vida?

vamos pegar funcionalidades que se repetem a todos os objetos e vamos centralizar em um objeto so e vamos chama-lo de BASE.

entao temos 1 objeto base e 3 objetos a serem desenhados no nosso jogo.


public class BASE
{
    private Vector2 posicao;

    public Vector2 Posicao
    {
        get { return posicao; }
        set { posicao = value; }
    }

    private int velocidade;
   
    public int Velocidade
    {
        get { return velocidade; }
        set { velocidade= value; }
    }

    public void Draw(GameTime gameTime)
    {

    }
}


// quando colocamos os dois pontos ( : ) e o nome da  classe a ser Herdada, nosso Classe HERDA propriedades e métodos da classe base.
//imagine voce desenvando 20 objetos, caso voce precise mudar alguma coisa específica em uma classe, voce pode fazer um OVERRIDE.

public class Bola : BASE
{

public Overrides Draw(GameTime gameTime)
{

}

//aqui dentro da classe herdamos métodos e propriedades da Classe base,
//ou seja, não preciso criar a posicao e nem a velocidade, talvez eu precise atribuir valor a ela e não criar em 20 classes.
//exitem outras funcionaldiades interessantes no O.O, no momento estou meio sem tempo, mas caso deseje, podemos fazer um exemplo real

}
 
Nova Entrada 30/8/2008 18:14
  Glauber
5 tópicos
Sem Ranking


Re: sRe: Duvida em Programacao Orientada a Objeto 

ah Vlwwww deu para entender sim como funciona o sistema de heranças.

Vlwww por complementar ae, vou procurar mais sobre Poo.

 

Abraço

 
Anterior Anterior
 
Próximo Próximo
  Forum  Criação de Jogo...  Geral  Duvida em Programacao Orientada a Objeto      
Logos do XBox 360, XNA e Games For Windows
Copyright 2006-2012 por SharpgamesPolítica de Privacidade  |  Termos de Uso