Está en la página 1de 7

Diseo Basado en Componentes.

Curso 2008 / 09

Beneficios de OOP Diseo Basado en Componentes Programacin Orientada a Objetos (OOP) en VB.NET
Ingeniera Informtica Universidad Carlos III de Madrid
Diseo Basado en Componentes. Curso 2008 / 09

Conceptos orientados a objetos.


Abstraccin: Identificacin de objetos a travs de sus aspectos conceptuales. Encapsulacin: Separacin de la interfaz del objeto de su implementacin. Herencia: Partiendo de una superclase (clase padre) se crean nuevas subclases (clases hijas) Polimorfismo: Ante el mismo mensaje se realizarn distintas acciones segn el objeto al que sea aplicado. Sobrecarga: Varios mtodos con idntico nombre dentro de la misma clase, distinguindose por la lista de parmetros.

OOP: Clase
Especificacin de un conjunto de objetos con estructura y comportamiento comunes. Comportamiento (operaciones): operaciones o servicios que pueden realizar los objetos de la clase, en respuesta a mensajes recibidos de otros objetos. Estado (atributos): valores almacenados en el objeto de la clase, resultado de las operaciones pasadas. Los atributos y las operaciones relacionadas se empaquetan juntas y se definen como un tipo. Molde para crear objetos.

Clase Vehculo
Vehculo
matrcula marca modelo ao arrancar() acelerar() cambiarMarcha() frenar() apagar()

Estado

Comportamiento

Diseo Basado en Componentes. Curso 2008 / 09

OOP: Objeto
Cuando se crea una instancia variable de una clase se le llama OBJETO.

Objeto de tipo Vehculo

miCoche:Vehculo
Instancias de la clase Figura (iguales en Forma, pero con propiedad Color distinta) Molde para fabricar Figuras rectangulares matrcula = 2322 CLS marca = Toyota modelo = Corolla ao = 2005

Clases en VB.NET (I)


Normalmente un fichero de cdigo por clase (aunque se pueden incluir varias clases en un mismo fichero). Una clase slo puede heredar de una nica clase (es decir, no se permite herencia mltiple). Public Class NombreClase cdigo de la clase End Class

Clases en VB.NET (II)


Control de acceso a los miembros de una clase:

Public: El miembro clase ser accesible por todo el cdigo de la clase, sus subclases y otras clases. Private: El miembro de la clase slo ser accesible por el cdigo de la clase. Protected: La clase ser accesible desde el cdigo de la clase y desde cualquier subclase. Friend: La clase ser accesible por todo el cdigo de su proyecto o ensamblado. Protected Friend: Combinacin de los dos modificadores de acceso.

Diseo Basado en Componentes. Curso 2008 / 09

Informacin de la Clase (I)


Campo: variable, generalmente de mbito pblico, accesible desde el exterior de la clase. Public Class Vehiculo Campo de la clase para guardar el identificador del vehculo Public identificador As Integer End Class

Informacin de la Clase (II)


Propiedad: definida por dos elementos: una variable de propiedad y un procedimiento de propiedad.

Variable de propiedad: variable con mbito privado a nivel de la clase que se encarga de guardar el valor de la propiedad (atributo).
Slo lectura: ReadOnly Property Slo escritura: WriteOnly Property

Procedimiento de propiedad: encargado de realizar las operaciones de acceso (GET) y asignacin (SET) de valores a la variable de propiedad.

Informacin de la Clase (III)


Public Class Vehiculo Propiedad Private _matr As String Public Property Matricula () As String Get Lectura Return _matr Procedimiento End Get de Propiedad Set (ByVal Value As String) Escritura _matr = Value End Set End Property End Class
Variable de Propiedad

Mtodos de la Clase (I)


Miembros de una clase que definen el comportamiento de los objetos. Procedimiento tipo Sub. Procedimiento tipo Function. Parmetros por valor: ByVal. Parmetros por referencia: ByRef.

Diseo Basado en Componentes. Curso 2008 / 09

Mtodos de la Clase (II)


Procedimiento Sub
Sub Prueba (ByVal param1 as Integer, ByRef param2 as Integer) End Sub

Mtodos de la clase (III)


Sobrecarga de mtodos (mismo nombre, distinta lista de parmetros): Para indicar que el mtodo est sobrecargado, utilizar la palabra clave Overloads en la declaracin del mtodo. Sobreescritura de mtodos (polimorfismo):

Procedimiento Function
Function Prueba (ByVal param1 as Integer) as Integer Dim varAux as Integer Prueba = varAux Return varAux End Function

Para indicar que el mtodo puede ser sobreescrito, utilizar la palabra clase Overridable en la declaracin del mtodo. Para indicar que el mtodo sobreescribe a otro ya existente, utilizar la palabra clave Overrides en la declaracin del mtodo. Para indicar que el mtodo no puede ser sobreescrito, utilizar la palabra clave NotOverridable en la declaracin del mtodo.

Mtodos Constructores
Mtodo pblico Sub con el nombre New(). Se invoca cuando se crea el objeto (instanciacin). til para tareas de configuracin iniciales sobre el objeto. Pueden estar sobrecargados.
Public Class Vehiculo Public Sub New (ByVal marca as String, ByVal modelo As String) _marca = marca _modelo = modelo End Function End Class

Me y MyBase (I)
Me: Se utiliza para tener acceso a los miembros de la propia clase (ej., Me.calcularSalario(), Me._marca). MyBase: Se utiliza para tener acceso a los miembros de una clase base desde su correspondiente subclase.

Diseo Basado en Componentes. Curso 2008 / 09

Me y MyBase (II)

Clases Abstractas
No permite la instanciacin directa de objetos a partir de ella. Se debe utilizar la palabra clase MustInherit en el momento de su declaracin. Los miembros abstractos de la clase irn declarados utilizando la palabra clave MustOverride.
Public MustInherit Class Vehiculo Public Sub calcularCredito(ByVal balance As Integer) Me._credito = balance * 0,4 End Sub Public MustOVerride Sub calcularImpuestos () End Class

Public Class Administrativo : Inherits Empleado Public Overloads Sub calcularIncentivos(ByVal horas As Integer) ' Se llama a la clase base con MyBase para hacer ' en primer lugar los mismos clculos de incentivos ' de la clase Empleado MyBase.calcularIncentivos() ' Despus se hacen los clculos propios de esta clase Me._incentivos += horas * 15 End Sub End Class

Clases Selladas o No Heredables


Toda clase declarada en el cdigo es en principio heredable. Para hacer que una clase no pueda tener subclases, se debe utilizar la palabra clase NotInheritable en el momento de su declaracin.
Public NotInheritable Class Fichero Cdigo de la clase End Class

Objetos en VB.NET (I)


Objetos en VB.NET:

Declaracin e instanciacin en distintas lneas de cdigo. Declaracin e instanciacin en la msma lnea de cdigo. Declaracin e instanciacin simultnea.

Diseo Basado en Componentes. Curso 2008 / 09

Objetos en VB.NET (II)


Declaracin e instanciacin en diferentes lneas de cdigo.
Objecto Clase

Objetos en VB.NET (III)


Declaracin e instanciacin en la misma lnea de cdigo.
Objecto Clase Palabra clave (instanciacin)

Dim miCoche As Vehiculo miCoche = New Vehiculo(Toyota, Corolla)

Declaracin Instanciacin

Dim miCoche As Vehiculo = New Vehiculo(Toyota, Corolla)

Palabra clave (instanciacin)

Constructor de la clase Coche con sus parmetros

Constructor de la clase Coche con sus parmetros

Declaracin e Instanciacin

Objetos en VB.NET (IV)


Declaracin e instanciacin simultnea.
Palabra clave (instanciacin) Constructor de la clase Coche con sus parmetros

Objetos en VB.NET (V)


Acceso a un campo de la clase Sub Main () Dim miCoche As Vehiculo miCoche = new Vehiculo () miCoche.identificador = 975 End Sub

Dim miCoche As New Vehiculo(Toyota, Corolla)

Objecto

Clase

Declaracin e Instanciacin

Diseo Basado en Componentes. Curso 2008 / 09

Objetos en VB.NET (VI)


Acceso a una propiedad Sub Main () Dim miCoche As Vehiculo miCoche = new Vehiculo (Toyota, Corolla) miCoche.Matricula = 8937 CZL Console.WriteLine (Matrcula coche: & _ miCoche.Matricula) Console.ReadLine() End Sub

Interfaces
Naturaleza declarativa: lista de propiedades y mtodos que sern codificados en una o varias clases. Una clase puede implementar mltiples interfaces, pero solo puede heredar de una nica clase. Las interfaces pueden proporcionar polimorfismo. Se utilizar la palabra clave Interface en su declaracin. La clase que la implemente utilizar la palabra clave Implements en su declaracin. Public Interface Cadena ReadOnly Property Longitud() As Integer Function ObtenerValor() As String End Interface Public Class Empleado : Implements Cadena Cdigo de la clase End Class

Namespaces en VB.NET
Un namespace o espacio de nombres, es un contenedor lgico que permiten organizar de manera ptima las clases dentro de un proyecto o ensamblado.
Namespace Personal Public Class Empleado Cdigo de la clase End Class Imports Gestion.Personal Public Class Principal Public Shared Sub Main Dim Emp As Empleado End Sub End Class

Diseo Basado en Componentes Programacin Orientada a Objetos (OOP) en VB.NET


Ingeniera Informtica Universidad Carlos III de Madrid
Diseo Basado en Componentes. Curso 2008 / 09

También podría gustarte