Escribir en fichero
string docPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); StreamWriter outputFile = new StreamWriter(Path.Combine(docPath, "salida.txt"))); outputFile.WriteLine("Esto es una línea"); outputFile.WriteLine("Esto es otra"); outputFile.Close();
Códigos juego Piedra Papel Tijera (Lagarto Spock)
Código tienda
Inyección de dependencia
Las interfaces nos permiten desacoplar las funciones al no depender de una clase, sino de la implementación de un interfaz:
https://anexsoft.com/ejemplo-de-inyeccion-de-dependencias-con-c
Definición:
Gente que está en contra (en ocasiones):
Explicación interfaces
En este enlace queda muy claro:
Curso interfaces c#
Aquí también lo explican bien:
Ejercicio herencia
Arreglar la siguiente jerarquía de herencias para que incorpore constructores en las clases derivadas y funcione el área:
abstract class Figuras { abstract function area(); } abstract class Bidimensional extends Figuras{ } class Circulo extends Bidimensional{ private $radio; } class Triangulo extends Bidimensional{ private $base; private $altura; } abstract class Tridimensional extends Figuras{ } class Cubo extends Tridimensional{ private $lado; } class Esfera extends Tridimensional{ private $radio }
Propiedades estáticas
class Estaticas { static public $iva; public $nombre; } $a=new Estaticas(); $b=new Estaticas(); $c=new Estaticas(); Estaticas::$iva=.21; $a->nombre="Ana"; $b->nombre="Eva"; $c->nombre="Rosa"; var_dump($a::$iva); var_dump($b::$iva); var_dump($c::$iva); class Producto{ static private $iva=.21; public $nombre; public $precio; function __construct($nombre,$precio) { $this->nombre=$nombre; $this->precio=$precio; } function PVP(){ return $this->precio*(1+$this::$iva); } } $manzana=new Producto("Manzana",2); echo $manzana->PVP(); $uvas=new Producto("Uvas",3.5); echo $uvas->PVP();
Clases abstractas y polimorfismo
<?php abstract class Figuras { abstract function dibujar(); function saludo(){ echo "Hola"; } } abstract class Bidimensional extends Figuras{ } class Circulo extends Bidimensional{ function dibujar(){ echo "Estoy dibujando un círculo"; } } class Hexagono extends Bidimensional{ function dibujar(){ echo "Dibujando hexágono"; } } abstract class Tridimensional extends Figuras{ } class Cubo extends Tridimensional{ function dibujar(){ echo "Esto es un cubo"; } } class Piramide extends Tridimensional{ function dibujar(){ echo "Porámide"; } } $figuras=[new Circulo(),new Piramide(), new Cubo(),new Hexagono(),new Circulo()]; foreach ($figuras as $figura){ $figura->dibujar(); }
Otro ejemplo polimorfismo
class Persona { private string _nombre; public Persona(string nombre) { Console.WriteLine("Constructor persona " + nombre); this.Nombre = nombre; } public string Nombre { set { this._nombre = value; } get { return this._nombre; } } public virtual string saludo() { return "Hola "+Nombre+" que tal"; } } class Empleado :Persona { public Empleado(string nombre, int sueldo=0) : base(nombre) { Console.WriteLine("Constructor empleado " + nombre); this.Cargo = "Empleado"; } public int Sueldo { get; set; } private string _cargo; public string Cargo { set { this._cargo = value; } get { return this._cargo; } } public override string saludo() { return "Hola empleado " + Nombre + " ¿Todo bien?"; } public virtual double sueldoNeto() { return Sueldo * .85; } } class Gerente : Empleado { public int Bono { get; set; } public int Dietas { get; set; } public Gerente(string nombre) : base(nombre) { Console.WriteLine("Constructor gerente " + nombre); this.Cargo = "Gerente"; } public Gerente(string nombre, int sueldo) : base(nombre, sueldo) { } public Gerente(string nombre, int sueldo, int dietas) : this(nombre, sueldo) { Dietas = dietas; } public override string saludo() { return "Hola Sr. " + Nombre + " ¿Desea alguna cosa?"; } public override double sueldoNeto() { return base.sueldoNeto()+Dietas; } } sealed class Direccion : Gerente { public int StockOptions { get; set; } public Direccion(string nombre) : base(nombre, 100) { Console.WriteLine("Constructor direccion " + nombre); } public Direccion(string nombre, int sueldo) : base(nombre, sueldo) { } public Direccion(string nombre, int sueldo, int dietas):base(nombre, sueldo, dietas) { } public Direccion(string nombre, int sueldo, int dietas, int stockoptions) : this(nombre, sueldo, dietas) { this.StockOptions = stockoptions; } public override string saludo() { return "Buenos días Sr. " + Nombre + " Estamos a sus órdenes"; } public override double sueldoNeto() { return base.sueldoNeto()+StockOptions*.5; } } class Cliente : Persona { public Cliente(string nombre) : base(nombre) { } }
Uso:
Empleado eva = new Empleado("Eva",1200); Gerente ana = new Gerente("Ana"); ana.Sueldo = 1700; ana.Dietas = 200; Direccion rosa = new Direccion("Rosa"); rosa.Sueldo = 2500; rosa.Dietas = 300; rosa.StockOptions = 100; Console.WriteLine(rosa.sueldoNeto()); Empleado[] plantilla = { eva, ana, rosa }; double total = 0; foreach(Empleado item in plantilla) { total += item.sueldoNeto(); } Console.WriteLine(total);