unidad 3 - interfaces, abstractas y más (2015)

Upload: gonzalo-arigos

Post on 14-Jan-2016

220 views

Category:

Documents


0 download

DESCRIPTION

Explicacion de programacion orientada a objetos, interfaces.

TRANSCRIPT

  • Programacin orientada a objetosInterfaces y Clases abstractas

    Facultad de Tecnologa Informtica UAIIng. Sebastin Luna 2015

  • IntroduccinConsideraciones Generales

  • InterfacesLas 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 StudioVisual 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.

  • DeclaracinSe 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.

  • EjemploPublic Interface IInicializadorSub Reset()End InterfacePublic Class AutomovilImplements IInicializadorPrivate _iCantidadRuedas as IntPublic Sub Reset() Implements IInicializador.ResetiCantidadRuedas = 0End SubEnd ClassPublic Class ImpresoraImplements IInicializadorPrivate _iNivelDeTinta as IntPublic Sub Reset() Implements IInicializador.ResetiNivelDeTinta = 0End SubEnd Class

  • ConsideracionesUna 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 AbstractasLa 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 MustInherit Class PersonaPara aadir miembros abstractos:'Mtodo padre vaco, se definir en cada clase hijaPublicMustOverrideFunctionMover(ByValNuevaPosAsString)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.

  • EncapsulamientoEstablece 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.

  • TiposPublic. Ser accesible desde todo el cdigo de la clase y de sus clases derivadas, tambin desde el cdigo de cliente.PublicFunctionMetodo1Private.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.

    Protected FriendFunctionMetodo1

  • Variaciones en la herenciaHay 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 SelladasAlgunas veces no se debe permitir a los programadores usar una clase como clase base, se puede prevenir esto usando la palabra clave NotInheritable.

    Declaracin:

    NotInheritable Class NotABaseClassEnd Class

  • Ocultar miembros de clase baseLa 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 ShadowsClass ClaseBase Public Sub MetodoBase() Console.WriteLine("MetodoBase en Clase base.") End SubEnd ClassClass ClaseDerivada Inherits ClaseBase Public Shadows Sub MetodoBase() Console.WriteLine("MetodoBase in clase derivada.") End Sub Public Shared SubMain() Dim derivado As New ClaseDerivada() derivado.MetodoBase() Dim base As ClaseBase = derivado base.MetodoBase() End SubEnd Class

    La salida deMaines:

    MetodoBaseen la clase derivada.MetodoBaseen la clase base.