Ejercicios de Poo
Ejercicios de Poo
Ejercicios de Poo
EJERCICIOS DE POO
Desarrolle un algoritmo para cada una de los siguientes ejercicios utilizando el paradigma de programación
POO:
1. Dado la altura y la base de un rectángulo, calcule su área (base * altura) y perímetro (2*base + 2*altura).
sing System;
namespace Rectangulo
{
class Program
{
static void Main(string[] args)
{
System.Console.Write("Ingrese base del rectangulo: ");
double b = int.Parse(Console.ReadLine());
System.Console.Write("Ingrese altura del rectangulo: ");
double alt = int.Parse(Console.ReadLine());
Rectangulo t1 = new Rectangulo(b, alt);
t1.mostrarInfo();
}
}
class Rectangulo
{
private double b, alt;
namespace Costos
{
class Program
{
static void Main(string[] args)
{
System.Console.Write("Ingrese costo base: ");
double preciob = Convert.ToDouble(Console.ReadLine());
Articulo articulo1 = new Articulo(preciob);
articulo1.mostrarInfo();
}
}
class Articulo
{
private double costob;
namespace Cuenta
{
class Program
{
static void Main(string[] args)
{
Cuenta cuenta1 = new Cuenta("Luis", "1002520171", 1500);
Cuenta cuenta2 = new Cuenta("Marco", "423423423", 100);
//Clonamos la cuenta 1
Cuenta cuenta3 = new Cuenta(cuenta1);
cuenta1.mostrarInfo();
//Hacemos un ingreso
System.Console.Write("Ingrese el monto a ingresar: ");
double ingreso = Convert.ToDouble(Console.ReadLine());
cuenta1.ingreso(ingreso);
cuenta2.mostrarInfo();
//Hacemos un tranferencia a cuenta1
cuenta1.tranferencia(500, cuenta2);
cuenta1.mostrarInfo();
cuenta2.mostrarInfo();
//Hacemos un ejemplo de reintegro
cuenta1.reintegro(800);
cuenta1.mostrarInfo();
cuenta3.mostrarInfo();
}
}
class Cuenta
{
public string propietario, ncuenta;
public double montobase;
String[] lingresos;
public Cuenta()
{
}
public Cuenta(string prop, string numcuenta, double montob)
{
propietario = prop;
ncuenta = numcuenta;
montobase = montob;
}
public Cuenta(Cuenta cuentita)
{
this.propietario = cuentita.propietario;
this.ncuenta = cuentita.ncuenta;
this.montobase = cuentita.montobase;
}
public string Propietario { get; set; }
public string NumCuenta { get; set; }
public string MontoBase { get; set; }
4. Crea una clase Libro con los métodos préstamo, devolución y toString. La clase contendrá un constructor por
defecto, un constructor con parámetros y los métodos getters y setters.
using System;
namespace Libro
{
class Program
{
static void Main(string[] args)
{
Libro libro1 = new Libro("La Iliada", "Homero", 20);
Libro libro2 = new Libro("La Odisea", "Homero", 30);
Console.WriteLine(libro1);
System.Console.Write("Ingrese el numero de ejemplares a prestar: ");
int pres = Convert.ToInt32(Console.ReadLine());
libro1.prestamo(pres);
Console.WriteLine(libro1);
Console.WriteLine(libro2);
System.Console.Write("Ingrese el numero de ejemplares a devolver: ");
int dev = Convert.ToInt32(Console.ReadLine());
libro2.devolucion(dev);
Console.WriteLine(libro2);
}
}
class Libro
{
public string titulo, autor;
public int nejemplares;
public Libro()
{
}
public Libro(string tit, string aut, int nejempl)
{
titulo = tit;
autor = aut;
nejemplares = nejempl;
}
public int prestamo(int p) => nejemplares = nejemplares - p;
public int devolucion(int d) => nejemplares = nejemplares + d;
namespace Libro2
{
class Program
{
static void Main(string[] args)
{
Libro libro1 = new Libro("La Iliada", "Homero", 20, 0);
Console.WriteLine(libro1);
System.Console.Write("Ingrese el numero de ejemplares a prestar: ");
int pres = Convert.ToInt32(Console.ReadLine());
libro1.prestamo(pres);
Console.WriteLine(libro1);
System.Console.Write("Ingrese el numero de ejemplares a devolver: ");
int dev = Convert.ToInt32(Console.ReadLine());
libro1.devolucion(dev);
Console.WriteLine(libro1);
}
}
class Libro
{
public string titulo, autor;
public int nejemplares, nejemprestados;
public Libro()
{
}
public Libro(string tit, string aut, int nejempl, int nejp)
{
titulo = tit;
autor = aut;
nejemplares = nejempl;
nejemprestados = nejp;
}
public bool prestamo(int p)
{
if (nejemplares > 0 && nejemplares > p)
{
nejemplares = nejemplares - p;
nejemprestados = nejemprestados + p;
return true;
}
else
{
return false;
}
}
public bool devolucion(int d)
{
if (nejemplares > 0 && nejemplares > d && d < nejemprestados)
{
nejemplares = nejemplares + d;
nejemprestados = nejemprestados - d;
return true;
}
else
{
return false;
}
}
namespace Racional
{
class Program
{
static void Main(string[] args)
{
Fraccion x = new Fraccion(2, 5);
Fraccion y = new Fraccion(3, 4);
System.Console.WriteLine("x+y= " + Fraccion.sumar(x, y));
System.Console.WriteLine("x-y= " + Fraccion.restar(x, y));
System.Console.WriteLine("Inversa: " + Fraccion.inversa(x));
System.Console.WriteLine("Opuesta: " + Fraccion.opuesta(x));
}
}
}
}
7. Elaborar una clase COMPLEJO que modele los números complejos implementando al menos las
operaciones de suma, resta y módulo de un número complejo a imitación de la suma o resta de los números
reales o enteros.
using System;
namespace Complejo
{
class Program
{
static void Main(string[] args)
{
Complejo c1 = new Complejo(-6.0, 3.0);
Complejo c2 = new Complejo(2.0, 2.0);
Complejo c3;
c3 = c1.sumar(c2);
Console.WriteLine(c1 + " + " + c2 + " = " + c3);
c3 = c1.restar(c2);
Console.WriteLine(c1 + " - " + c2 + " = " + c3);
public Complejo()
{
}
//Constructor con parámetros
public Complejo(double real, double imag)
{
this.real = real;
this.imag = imag;
}
//sumar dos números complejos
//(a, b) + (c, d) = (a + c, b + d);
public Complejo sumar(Complejo c)
{
Complejo aux = new Complejo();
aux.real = real + c.real;
aux.imag = imag + c.imag;
return aux;
}
//restar dos números complejos
//(a, b) - (c, d) = (a - c, b - d);
public Complejo restar(Complejo c)
{
Complejo aux = new Complejo();
aux.real = real - c.real;
aux.imag = imag - c.imag;
return aux;
}
public double modulo()
{
return Math.Sqrt(real * real + imag * imag);
}
public override string ToString()
{
return "(" + real + ", " + imag + ")";
}
}
}
8. Elaborar una clase POLINOMIO que modele los polinomios de grado dos implementando al menos las
operaciones de suma (de un polinomio con Currentpara obtener un tercer polinomio) y producto por un
número y el cálculo de las raíces reales del polinomio, si es que existen.
using System;
namespace Polinomio
{
class Program
{
static void Main(string[] args)
{
Polinomio p1 = new Polinomio(4,7,3);
Polinomio p2 = new Polinomio(-3, 8, 5);
Console.WriteLine(p1.sumar(p2));
p1.escalar(3);
Console.WriteLine(p1);
p2.evaluar();
Console.WriteLine(p2);
}
}
class Polinomio
{
double Coeficiente1, Coeficiente2, Coeficiente3;
public Polinomio()
{
}
public Polinomio(double c1, double c2, double c3)
{
Coeficiente1 = c1;
Coeficiente2 = c2;
Coeficiente3 = c3;
namespace Reloj
{
class Program
{
static void Main(string[] args)
{
Reloj r1 = new Reloj();
r1.iniciar();
}
}
class Reloj
{
int s, m, h;
public Reloj()
{
s = 0;
m = 0;
h = 0;
}
public void puestacero()
{
s = 0;
m = 0;
h = 0;
}
}
}
}
}
public void incremento()
{
s++;
if (s == 60)
{
s = 0;
m++;
if (m == 60)
{
m = 0;
h = (h + 1) % 24;
}
}
}
public override string ToString()
{
return h.ToString("D2") + ":" + m.ToString("D2") + ":" +
s.ToString("D2");
}
}
}
10. Elaborar una clase que modele ángulos medidos en grados. La clase debe incorporar al menos la suma de
ángulos, su resta, el opuesto de un ángulo y el ángulo 0, quedando bien entendido que el ángulo 0 y el ángulo
360 son el mismo.
using System;
namespace Angulo
{
class Program
{
static void Main(string[] args)
{
Angulo a1 = new Angulo(70, 20, 78);
Angulo a2 = new Angulo(160, 45, 350);
Console.WriteLine(a1.sumar(a2));
Console.WriteLine(a1.restar(a2));
a2.opuesto();
}
}
class Angulo
{
int g, m, s;
public Angulo()
{
}
public Angulo(int gr, int min, int seg)
{
g = gr;
m = min;
s = seg;
}
public Angulo(int g)
{
this.g = g;
}
public Angulo sumar(Angulo sangulo)
{
Angulo aux = new Angulo();
aux.g = this.g + sangulo.g;
if (aux.g >= 360)
{
int div = aux.g / 360;
aux.g = aux.g - (360 * div);
}
aux.m = this.m + sangulo.m;
if (aux.m >= 60)
{
aux.g += 1;
aux.m = aux.m - 60;
}
aux.s = this.s + sangulo.s;
if (aux.s >= 60)
{
aux.m += 1;
aux.s = aux.s - 60;
}
return aux;
}
public Angulo restar(Angulo sangulo)
{
Angulo aux = new Angulo();
aux.g = this.g - sangulo.g;
if (aux.g < 0)
{
int div = aux.g / 360;
aux.g = aux.g - (360 * div);
}
aux.m = this.m - sangulo.m;
if (aux.m < 0)
{
aux.g -= 1;
aux.m = aux.m + 60;
}
aux.s = this.s - sangulo.s;
if (aux.s < 0)
{
aux.m -= 1;
aux.s = aux.s + 60;
}
return aux;
}
public void opuesto()
{
int opuesto = 0;
if (g > 0)
{
opuesto = 360 - g;
}
else if (g < 0)
{
opuesto = (360 + g) * -1;
}
Console.WriteLine("El opuesto es: " + opuesto);
}
public override string ToString()
{
return g + "° " + m + "' " + s + "''";
}
}
}