Documente Academic
Documente Profesional
Documente Cultură
Programacin Orientada
a Objetos en C#
Clases abstractas
e Interfaces
Autor:
Dr. Ramn Roque Hernndez
http://ramonroque.com/Materias/pooTec.htm
ramonroque@yahoo.com
Colaborador:
Ing. Bruno Lpez Takeyas, M.C.
www.itnuevolaredo.edu.mx/takeyas
takeyas@itnuevolaredo.edu.mx
1
Clases abstractas e
Interfaces
Tanto las clases abstractas como las
interfaces son mecanismos que
obligan la herencia
No se pueden instanciar, es decir, no se
puede crear objetos de ellas
Clases Abstractas
Son clases
instanciadas.
que
NO
pueden
ser
Clases abstractas
Implementacin de una
clase abstracta en C#
public abstract class ClaseAbstractaPersona
{
Mtodo abstracto
string Nombre;
(debe ser
implementado
DateTime FechaNacimiento;
en las clases
derivadas)
Ejemplo:
Clase
Abstracta
Continuacin
Ejemplo de Clase Abstracta
class Programa
{
static void Main()
{
Empleado unEmpleado = new Empleado();
unEmpleado.Nombre = "Juan";
unEmpleado.Apellido = "Gonzalez";
unEmpleado.Clave = 1;
System.Console.WriteLine(unEmpleado.ObtenerNombreCompleto());
Cliente unCliente = new Cliente();
unCliente.Nombre = "Pedro";
unCliente.Apellido = "Ramirez";
unCliente.RFC = "RAHP780212";
System.Console.WriteLine(unCliente.ObtenerNombreCompleto());
System.Console.ReadLine();
}
}
8
para
realizar
la
Se DEBEN
implementar
estos elementos
al heredar de
esta clase.
10
Continuacin
Clase Abstracta con elementos
abstractos
class Empleado : Persona
{
Implementacin
private int claveEmpleado;
public override int Clave
{
get { return claveEmpleado; }
set { claveEmpleado = value; }
}
public override string ConsultarTodosLosDatos()
{
return "------Datos del Empleado: \n" + this.Clave + " " +
this.Nombre + " " + this.Apellido;
}
}
class Cliente : Persona
{
Implementacin
private int claveCliente;
public override int Clave
{
get { return claveCliente; }
set { claveCliente = value; }
}
public override string ConsultarTodosLosDatos()
{
return "******Datos del Cliente: \n" + this.Clave + " " +
this.Nombre + " " + this.Apellido;
}
}
11
Continuacin
Clase Abstracta con
elementos abstractos
class Programa
{
static void Main()
{
Empleado unEmpleado = new Empleado();
unEmpleado.Nombre = "Juan";
unEmpleado.Apellido = "Gonzalez";
unEmpleado.Clave = 1;
System.Console.WriteLine( unEmpleado.ConsultarTodosLosDatos() );
System.Console.WriteLine( unEmpleado.ObtenerNombreCompleto() );
Cliente unCliente = new Cliente();
unCliente.Nombre = "Pedro";
unCliente.Apellido = "Ramirez";
unCliente.Clave = 34;
System.Console.WriteLine( unCliente.ConsultarTodosLosDatos() );
System.Console.WriteLine( unCliente.ObtenerNombreCompleto());
System.Console.ReadLine();
}
}
12
Interfaces
Son mecanismos para que puedan
interactuar varios objetos no relacionados
entre s
Son protocolos o contratos que obligan la
herencia
Contienen las declaraciones de los mtodos,
pero no su implementacin.
Al igual que las clases abstractas, son
plantillas de comportamiento que deben ser
implementados por otras clases.
13
Interfaces
14
15
17
Declaracin de la interfaz
interface IFecha
{
int Dia();
int Mes();
string MesConLetra();
int Ao();
}
18
La ClaseCheques
hereda de
la interfaz
IFecha
Implementacin
de los mtodos
de la interfaz
IFecha
19
Ejemplo de interfaz
interface Vehiculo
//Declaraciones solamente
{
string Marca
{
get;
set;
}
void Arrancar();
}
class Carro: Vehiculo
//Implementacion de toda la interfaz
{
private string _marca;
public string Marca
{
get { return _marca; }
set { _marca = value; }
}
public void Arrancar()
{
System.Console.WriteLine("Arrancar....Clase Carro");
}
}
20
10
class Cuadrado :
Figura, ICuadrado,
IFiguraOperaciones
{
private double lado;
public double Lado
{
get { return lado; }
set { lado = value; }
}
public double CalcularArea()
{
return Lado * Lado;
}
public double CalcularPerimetro()
{
return 4 * Lado;
}
public override string ConsultarDatos()
{
return " Datos : Lado = " + Lado;
}
interface IFiguraOperaciones
{
double CalcularArea();
double CalcularPerimetro();
}
public class Figura
{
public virtual string ConsultarDatos()
{
return "Datos de la Figura: ";
}
}
}
21
class Program
{
static void Main()
{
Cuadrado c = new Cuadrado();
c.Lado = 2;
System.Console.WriteLine( c.ConsultarDatos() );
System.Console.WriteLine("Area: " + c.CalcularArea());
System.Console.WriteLine("Perimetro: " + c.CalcularPerimetro());
System.Console.ReadLine();
}
}
22
11
Interfaces en C#
IComparable
IEquatable
IEnumerable
Y otras
23
La interfaz IComparable
Contiene la declaracin del mtodo
CompareTo()
interface IComparable
{
int CompareTo(object obj);
}
12
La interfaz IEquatable
Contiene la declaracin del mtodo
Equals()
interface IEquatable<T>
{
bool Equals(T obj);
}
NOTA IMPORTANTE
Las interfaces IEquatable e
IComparable solamente comparan
objetos del mismo tipo.
No se pueden comparar objetos de
diferentes tipos; es decir, creados a
partir de clases diferentes.
26
13
27
Implementacin
class ClaseEmpleado: IComparable<ClaseEmpleado>, IEquatable<ClaseEmpleado>
{
public int Numero { get; set; }
public string Nombre { get; set; }
La ClaseEmpleado
public int CompareTo(ClaseEmpleado x)
{
if (this.Numero < x.Numero)
return -1;
else
if (this.Numero > x.Numero)
return 1;
else
return 0;
}
public bool Equals(ClaseEmpleado x)
{
return (this.Numero == x.Numero);
}
hereda de
las interfaces
IComparable e
IEquatable
Implementacin
de los mtodos
de las interfaces
28
14
Ejemplo de uso
Declaracin e inicializacin de los objetos:
ClaseEmpleado Secretaria = new ClaseEmpleado();
ClaseEmpleado Intendente = new ClaseEmpleado();
Secretaria.Numero = 2;
Secretaria.Nombre = "Rosa";
Intendente.Numero = 3;
Intendente.Nombre = "Luis";
29
30
15