Upload
martin-morales
View
241
Download
4
Embed Size (px)
DESCRIPTION
Programacion C#
Citation preview
Programacin Orientada a Objetos con C#
Dr. Ramn Roque HernndezM.C. Bruno Lpez Takeyas 1
1
Programacin Orientada
a Objetos en C#
Autor:Dr. Ramn Roque Hernndezhttp://ramonroque.com/Materias/[email protected]
Colaborador:Ing. Bruno Lpez Takeyas, M.C.www.itnuevolaredo.edu.mx/[email protected]
Clases abstractas e Interfaces
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
2
Programacin Orientada a Objetos con C#
Dr. Ramn Roque HernndezM.C. Bruno Lpez Takeyas 2
3
Clases Abstractas
Son clases que NO pueden serinstanciadas.
Se utilizan solamente para heredar de ellas (Forzar u obligar la herencia).
Se antepone la palabra abstract a la clase.
Clases abstractas
4
Programacin Orientada a Objetos con C#
Dr. Ramn Roque HernndezM.C. Bruno Lpez Takeyas 3
Ejemplo de clase abstracta
5
Implementacin de una
clase abstracta en C#public abstract class ClaseAbstractaPersona{
string Nombre;DateTime FechaNacimiento;
public abstract void Comer();
public int CalcularEdad(){
//Aqu se implementa este mtodo}
} 6
Mtodo abstracto(debe ser
implementado en las clases
derivadas)
Programacin Orientada a Objetos con C#
Dr. Ramn Roque HernndezM.C. Bruno Lpez Takeyas 4
7
abstract class Persona{
private string nombre;private string apellido;public string Nombre{
get { return nombre; }set { nombre = value; }
}public string Apellido{
get { return apellido; }set { apellido = value; }
}public string ObtenerNombreCompleto(){
return this.Nombre + " " + this.Apellido;
}}
Ejemplo:
Clase
Abstracta
class Empleado : Persona{
private int claveEmpleado;public int Clave{
get { return claveEmpleado; }set { claveEmpleado = value; }
}}class Cliente : Persona{
private string rfc;public string RFC{
get { return rfc; }set { rfc = value; }
}}
8
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();}
}
Programacin Orientada a Objetos con C#
Dr. Ramn Roque HernndezM.C. Bruno Lpez Takeyas 5
9
Clases Abstractas con
elementos abstractos
Las clases abstractas pueden definir mtodos y propiedadesabstractos, con lo que su respectiva implementacin en lasubclase es obligatoria. (Los elementos abstractos DEBEN sersobreescritos en la subclase).
- Se utiliza abstract para definir elementos abstractos (solodentro de clases abstractas).
- Los elementos abstractos NO proporcionan implementacin;solo declaraciones.
- En la subclase, se utiliza override para realizar laimplementacin correspondiente.
10
Ejemplo: Clase Abstracta con
elementos abstractosabstract class Persona{
private string nombre;private string apellido;public string Nombre{
get { return nombre; }set { nombre = value; }
}public string Apellido{
get { return apellido; }set { apellido = value; }
}public abstract int Clave{ get; set; }
public abstract string ConsultarTodosLosDatos();
public string ObtenerNombreCompleto(){
return this.Nombre + " " + this.Apellido;
}}
Se DEBEN implementarestos elementosal heredar deesta clase.
Programacin Orientada a Objetos con C#
Dr. Ramn Roque HernndezM.C. Bruno Lpez Takeyas 6
11
Continuacin
Clase Abstracta con elementos
abstractosclass Empleado : Persona{
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{
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;
}}
Implementacin
Implementacin
12
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();
}}
Continuacin
Clase Abstracta con
elementos abstractos
Programacin Orientada a Objetos con C#
Dr. Ramn Roque HernndezM.C. Bruno Lpez Takeyas 7
Interfaces
Son mecanismos para que puedaninteractuar varios objetos no relacionadosentre s
Son protocolos o contratos que obligan laherencia
Contienen las declaraciones de los mtodos,pero no su implementacin.
Al igual que las clases abstractas, sonplantillas de comportamiento que deben serimplementados por otras clases.
13
Interfaces
14
Programacin Orientada a Objetos con C#
Dr. Ramn Roque HernndezM.C. Bruno Lpez Takeyas 8
15
Notas acerca de las
Interfaces
Una clase que herede de una interfaz debeimplementar todas las definiciones contenidas en ella.
Los elementos de la interfaz no llevan los modificadores public, virtual o abstract.
TODOS los elementos declarados dentro de unaintefaz se consideran pblicos y abstractos.
Ejemplo de una interfaz
diseada por el programador
16
Obtiene la fecha delsistema medianteDateTime.Now
Obliga a implementar losmtodos que contiene enlas clases derivadas de ella.
Se deben implementartodos sus mtodos, de locontrario nos indica un error.
Programacin Orientada a Objetos con C#
Dr. Ramn Roque HernndezM.C. Bruno Lpez Takeyas 9
Uso de una interfaz diseada
por el programador
17
Declaracin de la interfaz
interface IFecha{
int Dia();int Mes();string MesConLetra();int Ao();
}18
Programacin Orientada a Objetos con C#
Dr. Ramn Roque HernndezM.C. Bruno Lpez Takeyas 10
Uso de una interfaz en C#
class ClaseCheques : IFecha{
// Implementacin de los mtodos de la interfaz IFecha
public int Dia( ){
return DateTime.Now.Day;}
public int Mes( ){
return DateTime.Now.Month;}
public int Ao( ){
return DateTime.Now.Year;}
public string MesConLetra( ){
switch ( Mes( ) ) {
case 1: return ("Enero"); break;case 2: return ("Febrero"); break;
case 12: return ("Diciembre"); break;}
}} 19
Implementacin
de los mtodos
de la interfaz
IFecha
La ClaseCheques
hereda de
la interfaz
IFecha
20
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");}
}
Programacin Orientada a Objetos con C#
Dr. Ramn Roque HernndezM.C. Bruno Lpez Takeyas 11
21
Ejemplo: Heredando de una clase
e implementando dos interfaces
interface ICuadrado{
double Lado{
get;set;
}}
interface IFiguraOperaciones{
double CalcularArea();double CalcularPerimetro();
}
public class Figura{
public virtual string ConsultarDatos(){
return "Datos de la Figura: ";}
}
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;}
}
22
Ejemplo: Heredando de una clase
e implementando dos interfaces[Continuacin]
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();
}}
Programacin Orientada a Objetos con C#
Dr. Ramn Roque HernndezM.C. Bruno Lpez Takeyas 12
Interfaces en C#
IComparable IEquatable IEnumerable Y otras
23
La interfaz IComparable
Contiene la declaracin del mtodo CompareTo()interface IComparable{
int CompareTo(object obj); }
El mtodo CompareTo() devuelve un valor entero como resultado de la comparacin
24
Programacin Orientada a Objetos con C#
Dr. Ramn Roque HernndezM.C. Bruno Lpez Takeyas 13
La interfaz IEquatable
Contiene la declaracin del mtodo Equals()interface IEquatable {
bool Equals(T obj); }
El mtodo Equals() devuelve un valor booleano como resultado de la comparacin
25
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
Programacin Orientada a Objetos con C#
Dr. Ramn Roque HernndezM.C. Bruno Lpez Takeyas 14
Uso de las interfaces
IComparable e IEquatable
27
Implementacin
class ClaseEmpleado: IComparable, IEquatable{
public int Numero { get; set; }public string Nombre { get; set; }
public int CompareTo(ClaseEmpleado x){
if (this.Numero < x.Numero)return -1;
elseif (this.Numero > x.Numero)
return 1;else
return 0;}
public bool Equals(ClaseEmpleado x){
return (this.Numero == x.Numero);}
}28
Implementacin
de los mtodos
de las interfaces
La ClaseEmpleado
hereda de
las interfaces
IComparable e
IEquatable
Programacin Orientada a Objetos con C#
Dr. Ramn Roque HernndezM.C. Bruno Lpez Takeyas 15
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
Ejemplo de uso (cont.)
int Resultado = Secretaria.CompareTo(Intendente);switch (Resultado){
case -1: MessageBox.Show("El nmero de la Secretaria es menor que el nmero del Intendente"); break;
case 0: MessageBox.Show("El nmero de la Secretaria es igual que el nmero del Intendente"); break;
case 1: MessageBox.Show("El nmero de la Secretaria es mayor que el nmero del Intendente"); break;
}
if (Secretaria.Equals(Intendente))MessageBox.Show("El nmero de la Secretaria es igual que el nmero del Intendente");
elseMessageBox.Show("El nmero de la Secretaria es diferente que el nmero del Intendente");
30