jueves, 14 de mayo de 2009

Practica 14




_________________________________________________________


Class Punto


using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace Practica_14

{

class Punto

{

protected int x;

protected int y;

protected int z=0;

public Punto()

{

x = 0;

y = 0;

}

public Punto(int x1, int y1)

{

x = x1;

y = y1;

}

public virtual double Area()

{

return z;

}

public double distancia(Punto A, Punto B)

{

double x = Math.Pow((A.x - B.x), 2);

double y = Math.Pow((A.y - B.y), 2);

double d = Math.Sqrt(x + y);

return d;

}

}

}


___________________________________________________________

Class Circulo

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace Practica_14

{

class Circulo:Punto

{

public double radio;

public Circulo(int x1, int y1,double rad):base (x1,y1)

{

radio = rad;

}

public Circulo()

{

x = 0;

y = 0;

radio = 0;

}

public override double Area()

{

return Math.PI*(radio*radio);

}

}

}


__________________________________________________________

Class Program

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace Practica_14

{

class Program

{

static void Main(string[] args)

{

int x1, x2, y1, y2;

double rad1, rad2;

Circulo C1;

Circulo C2;

Console.Write("Ingresa la coordenada X del Punto 1: ");

x1 = int.Parse(Console.ReadLine());

Console.Write("Ingresa la coordenada Y del Punto 1: ");

y1 = int.Parse(Console.ReadLine());

Console.Write("\nIngresa la coordenada X del Punto 2: ");

x2 = int.Parse(Console.ReadLine());

Console.Write("Ingresa la coordenada Y del Punto 2: ");

y2 = int.Parse(Console.ReadLine());

Console.Write("\nIngresa el radio para el Circulo 1: ");

rad1=double.Parse(Console.ReadLine());

Console.Write("Ingresa el radio para el Circulo 2: ");

rad2=double.Parse(Console.ReadLine());

C1 = new Circulo(x1,y1,rad1);

C2 = new Circulo (x2,y2,rad2);

Console.WriteLine("El Area del circulo 1 es: {0}", C1.Area());

Console.WriteLine("El Area del circulo 2 es: {0}", C2.Area());

Console.WriteLine("\nLa distacia entre los 2 puntos es: {0}", C1.distancia(C1, C2));

Console.ReadKey();

}

}

}




miércoles, 13 de mayo de 2009

PracticaTeorica Clases Abstractas

1.- ¿Que es una clase abstracta?

Son clases de las que no es posible crear instancias; frecuentemente,
están implementadas sólo parcialmente o no están implementadas.

2.- Formato General de una clase abstracta

interface I
{
void M();
}
abstract class C: I
{
public abstract void M();
}

3.-Diferencia entre interface y clase abstracta.

Pareciera que son lo mismo, las clases abstractas no se implementa y las interfances tampoco. Pero las interfances son mas un conjunto de comportamientos definidos, que esperan ser implementados por el programador. Las clases abstractas, en primer lugar deben ser heredadas para ser implementadas en su totalidad o parcialmente, las clases abstractas se usan mas para una relacion de " es un ".

4.-Ejemplo de clase abstracta

using System;

namespace ClaseAbstracta {

//clase abstracta
abstract class Persona {

//atributo abstracto
protected string nombre;

public abstract string Nombre {
get;
set;
}

//metodo abstracto
public abstract string Info();
}

//clase Alumno
class Alumno: Persona {
private int grado;
private int nivel;

public override string Nombre {
get {
return nombre;
}
set {
nombre = value;
}
}

//otra propiedad
public int Grado {
get {
return grado;
}
set {
grado = value;
}
}

//otra propiedad
public int Nivel {
get {
return nivel;
}
set {
nivel = value;
}
}

//constructor
public Alumno (string nom, int niv, int grado){
this.nombre = nom;
this.nivel = niv;
this.grado = grado;
}

public override string Info() {
return "Nombre: " + this.nombre + " - Nivel: " +
this.nivel + " - Grado: " + this.grado;
}
}


5.- Ventajas de una clase abstracta y una interface.

Clase abstrácta
* Describen partes de objetos.
* Utilizadas en polimorfismo para definir operaciones comunes.
* Se pueden utilizar junto con la herencia.

Interfaz
* Una de las principales ventajas de utilizar interfaces es el polimorfismo ya que separamos la definicion de los metodos de su implementación.