Вы находитесь на странице: 1из 17

Programacin orientada a

objetos
Interfaces y Clases
abstractas
Facultad de Tecnologa Informtica UAI
Ing. Sebastin Luna
2015

Introduccin
Consideraciones
Generales

Interfaces
Las interfaces nos proporcionan la posibilidad de
hacer funcionar las clases de manera diferente y que
diferentes clases tengan comportamientos similares.
Son el punto de entrada para desarrollos avanzados:

Permite estandarizar el modo en que se relacionan las


clases.
Cada desarrollador puede trabajar de forma independiente
del resto, asegurando que sus clases y componentes sean
compatibles.

Indican qu deben implementar y no cmo hacerlo.

Interfaces y Visual Studio


Visual Studio permite la implementacin de
interfaces rpidamente. Basta con escribir la
palabra reservada Implements, el nombre de
la interfaz y, a continuacin, presionar la tecla
Enter.
Automticamente, el entorno detecta qu
miembros deben ser implementados y crea el
esqueleto de cdigo.

Declaracin
Se utiliza la palabra reservada Interface en vez
de Class
Pueden tener declaraciones de mtodos y
propiedades.
Para utilizar una interfaz hay que implementarla
en una clase. Se utiliza la palabra reservada
Implements.

Ejemplo
Public Interface IInicializador
Sub Reset()
End Interface
Public Class Automovil
Implements IInicializador
Private _iCantidadRuedas as Int
Public Sub Reset() Implements IInicializador.Reset
iCantidadRuedas = 0
End Sub
End Class
Public Class Impresora
Implements IInicializador
Private _iNivelDeTinta as Int
Public Sub Reset() Implements IInicializador.Reset
iNivelDeTinta = 0
End Sub
End Class

Consideraciones
Una clase puede implementar varias interfaces.
Contaminacin de una Interfaz Sucede
cuando se aade un mtodo a una clase base
simplemente porque una de sus clases derivadas
lo necesita.
Y para qu hay interfaces, si hacen casi lo
mismo que las clases abstractas? Como la
mayora de los lenguajes orientados a objetos, no
se permite la herencia mltiple.

Clases Abstractas
La abstraccin es la caracterstica que nos
permite identificar un objeto a travs de sus
aspectos conceptuales
Se definen como cualquier otra clase pero no
se pueden crear objetos a partir de ellas. No se
pueden instanciar.
Se usa para definir subclases

Creando una clase abstracta.


Para declarar una clase abstracta solo basta con hacer:
Public MustInheritClassPersona

Para aadir miembros abstractos:


'Mtodopadrevaco,sedefinirencada
clasehija
PublicMustOverrideFunctionMover(ByValNuevaPosA
sString)AsBoolean

Atencin!
Las clases que hereden de la clase Abstracta deben
implementar todos los mtodos abstractos.
Se debe tener presente que las clases abstractas s pueden
heredar de otras clases.
La firma o parmetros de los mtodos as como el tipo de dato
deben respetarse, de lo contrario se est hablando de otro
mtodo totalmente diferente.
Si una clase abstracta est compuesta slo por mtodos
abstractos y constantes entonces podemos hablar de una
interface. Pareciera que son lo mismo, las clases abstractas no
se implementa y las interfaces tampoco. Pero las interfaces
son ms un conjunto de comportamientos definidos, que
esperan ser implementados por el programador.

Encapsulamiento
Establece la separacin entre el interfaz del objeto y su
implementacin. Una clase bien encapsulada no debe
permitir la modificacin directa de una variable de la
clase ni ejecutar mtodos que sean internos de la clase.
Un programador podr utilizar la clase sin necesitar
conocer su implementacin.

Tipos
Public. Ser accesible desde todo el cdigo de la clase y
de sus clases derivadas, tambin desde el cdigo de cliente.

PublicFunctionMetodo1

Private.Slo ser accesible desde la propia clase

PrivateFunctionMetodo1
Protected.Slo ser accesible desde la propia clase y
desde sus clases derivadas
ProtectedFunctionMetodo1

Tipos (cont.)
Friend. Ser accesible por todo el cdigo de su
ensamblado
FriendFunctionMetodo1
Protected Friend.Ser accesible desde el cdigo de
su clase y clases derivadas y por todo el cdigo de su
ensamblado.
ProtectedFriendFunctionMetodo1

Variaciones en la herencia
Hay otras dos variaciones de la herencia que
merecen una mencin. Las clases selladas que
permiten impedir la herencia. Tambin pueden
impedir que los miembros de la base se
comporten polimrficamente.

Clases Selladas
Algunas veces no se debe permitir a los
programadores usar una clase como clase
base, se puede prevenir esto usando la
palabra clave NotInheritable.
Declaracin:
NotInheritableClassNotABaseClass
EndClass

Ocultar miembros de clase base


La palabra clave Shadows indica que aunque
un mtodo en la clase derivada tenga el
mismo nombre que un mtodo virtual en la
clase base, el mtodo de la clase derivada no
est destinado a ser el reemplazo del de la
clase base del mtodo virtual de la clase.
El efecto es que una referencia a la clase base
llama al mtodo base y una referencia a la
clase derivada llama al mtodo derivado. La
palabra clave Shadows se aplica a todos los
mtodos del mismo nombre en la clase base.

Ejemplo de Shadows
ClassClaseBase
PublicSubMetodoBase()
Console.WriteLine("MetodoBaseenClasebase.")
EndSub
EndClass

ClassClaseDerivada
InheritsClaseBase

PublicShadowsSubMetodoBase()
Console.WriteLine("MetodoBaseinclasederivada.")
EndSub

PublicSharedSubMain()
DimderivadoAsNewClaseDerivada()
derivado.MetodoBase()

DimbaseAsClaseBase=derivado
base.MetodoBase()
EndSub
EndClass

LasalidadeMaines:
MetodoBaseenlaclasederivada.
MetodoBaseenlaclasebase.

Вам также может понравиться