Tema: duda con codigo c#

Mensajes

  • nahuel32

    7 Feb 2014 00:56

    Mensajes: 10

    nahuel32 » 8 FEB 2014  1:00

    Tengo una duda con el atributo static en este codigo. Para que se usa ? es estatico porque la clase juegodedado instancia los tres objetos de la clase dado?
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

     

    namespace Colaboracion2
    {
    class Dado
    {
    private int valor;
    private static Random aleatorio;

     

    public Dado()
    {
    aleatorio = new Random();
    }

     

    public void Tirar()
    {
    valor = aleatorio.Next(1, 7);
    }

     

    public void Imprimir()
    {
    Console.WriteLine("El valor del dado es:"+valor);
    }

     

    public int RetornarValor()
    {
    return valor;
    }
    }

     

    class JuegoDeDados
    {
    private Dado dado1,dado2,dado3;

     

    public JuegoDeDados()
    {
    dado1=new Dado();
    dado2=new Dado();
    dado3=new Dado();
    }

     

    public void Jugar()
    {
    dado1.Tirar();
    dado1.Imprimir();
    dado2.Tirar();
    dado2.Imprimir();
    dado3.Tirar();
    dado3.Imprimir();
    if (dado1.RetornarValor()==dado2.RetornarValor() &&
    dado1.RetornarValor()==dado3.RetornarValor())
    {
    Console.WriteLine("Ganó");
    }
    else
    {
    Console.WriteLine("Perdió");
    }
    Console.ReadKey();
    }

     

    static void Main(string[] args)
    {
    JuegoDeDados j = new JuegoDeDados();
    j.Jugar();
    }
    }
    }
    porque en este codigo de abajo los atributos nombre y monto no son estaticos ya que se instancia los objetos cliente? no entiendo bien para que sirve los atributos estaticos

     

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

     

    namespace Colaboracion1
    {
    class Cliente
    {
    private string nombre;
    private int monto;

     

    public Cliente(string nom)
    {
    nombre = nom;
    monto = 0;
    }

     

    public void Depositar(int m)
    {
    monto = monto + m;
    }

     

    public void Extraer(int m)
    {
    monto = monto - m;
    }

     

    public int RetornarMonto()
    {
    return monto;
    }

     

    public void Imprimir()
    {
    Console.WriteLine(nombre+" tiene depositado la suma de "+monto);
    }
    }

     

    class Banco
    {
    private Cliente cliente1, cliente2, cliente3;

     

    public Banco()
    {
    cliente1=new Cliente("Juan");
    cliente2=new Cliente("Ana");
    cliente3=new Cliente("Pedro");
    }

     

    public void Operar()
    {
    cliente1.Depositar(100);
    cliente2.Depositar(150);
    cliente3.Depositar(200);
    cliente3.Extraer(150);
    }

     

    public void DepositosTotales()
    {
    int t = cliente1.RetornarMonto () +
    cliente2.RetornarMonto () +
    cliente3.RetornarMonto ();
    Console.WriteLine ("El total de dinero en el banco es:" + t);
    cliente1.Imprimir();
    cliente2.Imprimir();
    cliente3.Imprimir();
    }

     

    static void Main(string[] args)
    {
    Banco banco1 = new Banco();
    banco1.Operar();
    banco1.DepositosTotales();
    Console.ReadKey();
    }

    0
  • crim3

    17 May 2013 01:00

    Mensajes: 686

    Ubicación: Valencia, Spain

    crim3 » 8 FEB 2014  1:28

    Al hacer un miembro estático éste ya no pertenece a ningún objeto instanciado de esa clase, sino a la clase misma.

     

    El ejemplo del dado requiere que aunque haya varios dados instanciados, el miembro 'aleatorio' sea único. Al hacerlo static ya no se crea con cada dado, sino que existe un único miembro 'aleatorio' compartido por todas las instancias.

     

    El concepto es similar a las variables declaradas static dentro de una función C o C++, que mantienen sus valores entre distintas llamadas a la función, en vez de ser inicializadas cada vez que se llama a la función.

    [size=85]PC gaming rulez :P[/size]

    0
  • pery77

    Moderador

    23 Sep 2013 11:01

    Mensajes: 472

    pery77 » 8 FEB 2014  1:33

    static (Referencia de C#)

     

    Se utiliza el modificador static para declarar un miembro estático, que pertenece al propio tipo en vez de a un objeto específico. El modificador static puede utilizarse con clases, campos, métodos, propiedades, operadores, eventos y constructores, pero no puede utilizarse con indizadores, destructores o tipos que no sean clases. Para obtener más información, vea Clases estáticas y sus miembros (Guía de programación de C#).

     

    Ejemplo
    Por ejemplo, la siguiente clase se declara como static y sólo contiene métodos static:
    C#

     

    static class CompanyEmployee
    {
    public static void DoSomething() { /*...*/ }
    public static void DoSomethingElse() { /*...*/ }
    }

     

    Una declaración de tipos o de constante constituye, implícitamente, un miembro estático.
    No se puede hacer referencia a un miembro estático por medio de una instancia. En vez de ello, se debe hacer referencia por medio del nombre de tipo.

     

    Te recomiendo que tires de google todo lo que puedas, tendras las respuestas en 1 min, porque si tienes que esperar que te respondan en un foro vas ha ir muy lento.

     

    Suerte

    0
  • nahuel32

    7 Feb 2014 00:56

    Mensajes: 10

    nahuel32 » 12 FEB 2014  5:09

    no logro entender quiere decir que se crea una variable estatica para que los tres objetos de dado se le asigne la clase random en vez de instanciar ya el estatico trabaja como si fuera la misma clase ? lo estatico tanto como en propiedades metodos etc sirve para ser llamado directo como una clase principal sin instanciarlo que a su vez permite menor consumo de memoria? para eso existe el estatico?

    0

Usuarios navegando por este foro:

1 Anónimo