PDF de programación - 07b.- Herencia (Clases Abstractas E Interfaces) - Programación Orientada a Objetos en C#

Imágen de pdf 07b.- Herencia (Clases Abstractas E Interfaces) - Programación Orientada a Objetos en C#

07b.- Herencia (Clases Abstractas E Interfaces) - Programación Orientada a Objetos en C#gráfica de visualizaciones

Publicado el 17 de Febrero del 2019
376 visualizaciones desde el 17 de Febrero del 2019
1,4 MB
29 paginas
Creado hace 1a (15/08/2018)
Programación Orientada a Objetos en C# .NET

CAPÍTULO 5

H E R E N C I A

(Clases abstractas e interfaces)

2

Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas

1

Programación Orientada a Objetos en C# .NET

Preguntas detonadoras

Parece paradójico que una clase no pueda crear objetos a partir

de ella, ¿realmente lo es?

Si una clase abstracta no puede generar instancias, ¿entonces

para qué sirve?

Si un miembro abstracto no tiene implementación, ¿entonces

para qué sirve?

En una clase abstracta, ¿todos sus miembros son abstractos?
¿En qué se parece una interfase a una clase abstracta? ¿En qué

difieren?

¿Se puede definir un miembro abstracto dentro de una clase no

abstracta?

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

3

4

Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas

2

Programación Orientada a Objetos en C# .NET

Clases abstractas

Son mecanismos que obligan la herencia

No se pueden instanciar, es decir, no se puede

crear objetos de ellas

Se utilizan solamente para heredar de ellas

(Forzar u obligar la herencia).

Se antepone la palabra “abstract” al nombre

de la clase.

5

6

Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas

3

Programación Orientada a Objetos en C# .NET

Ejemplo de clase abstracta

7

Implementación 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 método

}

}

Método abstracto

(debe ser

implementado

en las clases
derivadas)

8

Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas

4

Programación Orientada a Objetos en C# .NET

abstract class Persona
{

private string _strNombre;
private string _strApellido;
public string Nombre
{

get { return _strNombre; }
set { _strNombre = value; }

}
public string Apellido
{

get { return _strApellido; }
set { _strApellido = value; }

}
public string ObtenerNombreCompleto()
{

return

this.Nombre + " " + this.Apellido;

}

}

Ejemplo:
Clase Abstracta

class Empleado : Persona
{

private int _intClaveEmpleado;
public int Clave
{

get { return _intClaveEmpleado; }
set { _intClaveEmpleado = value; }

}

}
class Cliente : Persona
{

private string _strRfc;
public string RFC
{

get { return _strRfc; }
set { _strRfc = value; }

}

}

9

Continuación…
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();

}

}

10

Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas

5

Programación Orientada a Objetos en C# .NET

Clases abstractas con elementos
abstractos
Las clases abstractas pueden definir métodos y propiedades
abstractos, con lo que su respectiva implementación en la
subclase es obligatoria. (Los elementos abstractos DEBEN
ser sobreescritos en la subclase).

Se utiliza “abstract” para definir elementos abstractos

(solo dentro de clases abstractas).

Los

elementos

abstractos

NO

proporcionan

implementación; solo declaraciones.

En la subclase, se utiliza “override” para realizar la

implementación correspondiente.

11

Miembros abstractos

Una clase abstracta puede tener datos (atributos) e
implementar métodos y propiedades como una clase
normal y además puede tener miembros abstractos
(métodos o propiedades).

Los miembros abstractos NO tienen implementación

(están vacíos).

¿Para qué sirve un método vacío o propiedad vacía y

que no realiza acciones?

12

Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas

6

Programación Orientada a Objetos en C# .NET

Ejemplo: Clase abstracta con
elementos abstractos

abstract class Persona
{

private string _strNombre;
private string _strApellido;
public string Nombre
{

get { return _strNombre; }
set { _strNombre = value; }

}
public string Apellido
{

get { return _strApellido; }
set { _strApellido = value; }

}
public abstract int Clave
{ get; set; }

public abstract string ConsultarTodosLosDatos();

public string ObtenerNombreCompleto()
{

return
this.Nombre + " " + this.Apellido;

}

}

Se DEBEN
implementar
estos elementos
al heredar de
esta clase.

Clase abstracta con elementos
abstractos (cont.)

class Empleado : Persona
{

private int _intClaveEmpleado;
public override int Clave
{

Implementación

get { return _intClaveEmpleado; }
set { _intClaveEmpleado = value; }

}
public override string ConsultarTodosLosDatos()
{

return "------Datos del Empleado: \n" + this.Clave + " " +

this.Nombre + " " + this.Apellido;

}

}

class Cliente : Persona
{

private int _intClaveCliente;
public override int Clave
{

Implementación

get { return _intClaveCliente; }
set { _intClaveCliente = value; }

}
public override string ConsultarTodosLosDatos()
{

return "******Datos del Cliente: \n" + this.Clave + " " +

this.Nombre + " " + this.Apellido;

}

}

13

14

Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas

7

Programación Orientada a Objetos en C# .NET

Clase abstracta con elementos
abstractos (cont.)

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();

}

}

Miembros abstractos

En UML las clases y sus miembros abstractos se escriben

con itálicas y en C# .NET se codifican anteponiendo la

palabra “abstract”

15

16

Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas

8

Programación Orientada a Objetos en C# .NET

Prog. 5.5.- Clase abstracta con
métodos abstractos

Diseño de la forma

17

18

Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas

9

Programación Orientada a Objetos en C# .NET

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 métodos, pero

no su implementación.

Al igual que las clases abstractas, son plantillas de
comportamiento que deben ser implementados
por otras clases.

19

20

Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas

10

Programación Orientada a Objetos en C# .NET

Ejemplo de una interfase

En UML una interfase se representa mediante
un rectángulo con dos secciones (ya que no

tiene datos)

21

Notas acerca de las interfaces

Una clase que herede de una interfase debe
implementar todas las definiciones contenidas en
ella.

Los elementos de la interfase no llevan los

modificadores “public” o “abstract”.

TODOS los elementos declarados dentro de una

intefase se consideran públicos y abstractos.

22

Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas

11

Programación Orientada a Objetos en C# .NET

Ejemplo de una interfase diseñada
por el programador

•Obtiene la fecha del sistema
mediante DateTime.Now

•Obliga a implementar los
métodos que contiene en las
clases derivadas de ella.

deben

•Se
implementar
todos sus métodos, de lo
contrario nos indica un error.

Los miembros de una interfase se consideran públicos y
virtuales por defecto (no hay necesidad de especificarlo)

23

Uso de una interfase diseñada por
el programador

Interfase definida por el
programador

«interface»
IFecha

Los métodos abstractos se
representan con itálicas

+

+

+
+

Declaración de los métodos
abstractos de la interfase
(no contiene la
implementación)

Esta clase hereda de la
interfase IFecha (por lo
tanto debe implementar sus
métodos)

ClaseCheques

+ Dia() : int

+ Mes() : int

+ MesConLetra() : string
+ Año() : int

Implementación de los
métodos declarados en la
interfase IFecha

24

Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas

12

Programación Orientada a Objetos en C# .NET

Declaración de la interfase

interface IFecha

{

}

int Dia();

int Mes();

string MesConLetra();

int Año();

25

26

Uso de una interfase en C#

class ClaseCheques : IFecha

{

// Implementación de los métodos de la interfaz IFecha

public int Dia( )

{

}

return DateTime.Now.Day;

public int Mes( )

{

}

return DateTime.Now.Month;

public int Año( )

{

}

return DateTime.Now.Year;

public string MesConLetra( )

{

switch ( Mes( ) )

case 1: return ("Enero"); break;

case 2: return ("Febrero"); break;



case 12: return ("Diciembre"); break;

{

}

}

}

La ClaseCheques

hereda de
la interfase

IFecha

Implementación
de los métodos
de la interfase

IFecha

Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas

13

Programación Orientada a Objetos en C# .NET

Otro ejemplo de uso de interfaces

¿Cómo agregar una interfase al
proyecto?

27

28

Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas

14

Programación Orientada a Objetos en C# .NET

Ejemplo de una interfase

interface IVehiculo
{

string Marca
{

get;
set;

}
void Ar
  • Links de descarga
http://lwp-l.com/pdf15258

Comentarios de: 07b.- Herencia (Clases Abstractas E Interfaces) - Programación Orientada a Objetos en C# (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad