Ejercicios con Clases en C#

Normalmente un problema resuelto con la metodología de programación orientada a objetos no interviene una sola clase, sino que hay muchas clases que interactúan y se comunican. Plantearemos un problema separando las actividades en dos clases.

Ejemplo 1

Un banco tiene 3 clientes que pueden hacer depósitos y extracciones. También el banco requiere que al final del día calcule la cantidad de dinero que hay depositada.

La Solución tendrá el siguiente esquema: Debemos definir los atributos y los métodos de cada clase:

Cliente
    atributos
        nombre
        monto
    métodos
        constructor
        Depositar
        Extraer
        RetornarMonto

Banco
    atributos
        3 Cliente (3 objetos de la clase Cliente)
    métodos
        constructor
        Operar
        DepositosTotales

Solución en C#

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

namespace EjerciciosconClases
{
    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("Yhonas");
            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();
        }
    }
}

Al ejecutar el código muestra el siguiente resultado



Ejemplo 2

Plantear un programa que permita jugar a los dados. Las reglas de juego son: se tiran tres dados si los tres salen con el mismo valor mostrar un mensaje que "gano", sino "perdió".
Lo primero que hacemos es identificar las clases:
Luego los atributos y los métodos de cada clase:

Dado
    atributos
        valor
    métodos
        constructor
        Tirar
        Imprimir
        RetornarValor

JuegoDeDados
    atributos
        3 Dado (3 objetos de la clase Dado)
    métodos
        constructor
        Jugar

Solución en C#

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

namespace EjerciciosconClases
{
    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();
        }
    }
}

Al ejecutar el código muestra el siguiente resultado

15 comentarios:

  1. Buenos ejemplos,me gustaria que collocation mas ejemplos.

    ResponderEliminar
  2. Como hago para que un usuario cree clientes e ingrese los montos por teclado?

    ResponderEliminar
    Respuestas

    1. en esta parte tienes que poner en vez de depositar(100) un(Convert.ToInt32(Console.ReadLie());



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

      Eliminar
  3. alguien tiene mas ejemplos de programacion orientada a objetos en lenguaje de c#

    ResponderEliminar
  4. Lo copie y lo pege pero todos los numeros de los dados me salen iguales al imprimirlos :,v

    ResponderEliminar
  5. Alguien que me ayude con un programa

    ResponderEliminar
  6. Necesito que me realize este programa en c# creak una clase canción, con métodos y atributos

    ResponderEliminar
  7. Nesecito un programa de bocina como sería :(

    ResponderEliminar
  8. Como puedo hacer para que me muestre el deposito y la extracción en diferentes líneas.
    Por ejemplo:
    Ana tiene un deposito de: 1000
    Ana realizo una extracción de: 500

    ResponderEliminar
  9. Del problema planteado realizar la solución utilizando los diferentes tipos de datos.

    Cree la clase carro con lo siguiente atributos:
    Placa
    Cilindraje
    Servicio_publcio (bool)
    Caballos (se calcula)
    Cree los siguientes métodos:
    Cargar datos
    Mostrar datos
    Calcular_caballos
    Para calcular los caballos de potencia se debe multiplicar el cilindraje por 0.08
    Implemente también un método que permita identificar si el carro tiene o no pico y placa con los siguientes criterios:
    Los días pares los carros terminados entre 0 y 4 tienen pico y placa.
    Los días impares los carros terminados entre 5 y 9 tienen pico y placa.
    Si el carro es de servicio público no tendrá pico y placa ningún día.
    NO se requiere de un menú.

    ResponderEliminar
  10. Alguien que me ayude como hacer el problema del banco pero en escritorio

    ResponderEliminar