Está en la página 1de 27

1

UNIDAD I

FUNDAMENTOS DEL
LENGUAJE
Copyright The McGraw-Hill Companies, Inc. Permission required for reproduction or display.
2
1.1

Programacin orientada
a eventos.
Copyright The McGraw-Hill Companies, Inc. Permission required for reproduction or display.
3
1.1.1 Objetos
Un objeto es una agrupacin de cdigo, compuesta de
propiedades y mtodos, que pueden ser manipulados
como una entidad independiente. Las propiedades definen
los datos o informacin del objeto, permitiendo consultar o
modificar su estado; mientras que los mtodos son las
rutinas que definen su comportamiento.
Un objeto es una pieza que se ocupa de desempear un
trabajo concreto dentro de una estructura organizativa de
nivel superior, formada por mltiples objetos, cada uno de
los cuales ejerce la tarea particular para la que ha sido
diseado.
4
1.1.1 Objetos
Una clase no es otra cosa que el conjunto de
especificaciones o normas que definen cmo va a ser
creado un objeto de un tipo determinado; algo parecido a
un manual de instrucciones conteniendo las
indicaciones para crear el objeto.
Los trminos objeto y clase son utilizados en OOP con
gran profusin y en contextos muy similares, por lo que
para intentar aclarar en lo posible ambos conceptos,
diremos que una clase constituye la representacin
abstracta de algo, mientras que un objeto constituye la
representacin concreta de lo que una clase define.
5
1.1.1 Objetos
La clase determina el conjunto de puntos clave que ha de
cumplir un objeto para ser considerado perteneciente a
dicha clase o categora, ya que no es obligatorio que dos
objetos creados a partir de la misma clase sean
exactamente iguales, basta con que cumplan las
especificaciones clave de la clase.
6
1.1.1 Objetos
7
1.1.1 Objetos
Module Module1
Public Class Empleado
Public nombre As String
Public edad As Integer
End Class
Sub Main()
Dim empleado1 As Empleado
empleado1 = New Empleado()
Console.WriteLine("Escribe el nombre del empleado:")
empleado1.nombre = Console.ReadLine
Console.WriteLine("Escribe la edad del empleado:")
empleado1.edad = Console.ReadLine
Console.WriteLine("Datos del empleado:")
Console.WriteLine("Nombre: {0}", empleado1.nombre)
Console.WriteLine("Edad: {0}", empleado1.edad)
Console.ReadLine()
End Sub

End Module
8
1.1.2 Eventos
Un evento es un suceso o situacin, que acontece en una ubicacin de
espacio y tiempo no predecible.
Cuando una mquina deja de funcionar por una avera, o cuando una
persona resbala y cae, estamos en ambos casos, ante ejemplos de
eventos, ya que ocurren en momentos inesperados.
Para que se desencadene un evento, se deben dar determinadas
circunstancias, las cuales favorecen el que dicho evento se produzca.

Eventos en .NET
Cindonos al mbito de la programacin, un evento es, dentro de una
aplicacin, una notificacin lanzada por un objeto, que podr ser
respondida por aquellos otros objetos interesados en darle soporte.
9
1.1.2 Eventos
Programacin estrictamente procedural

Antes de la llegada de los sistemas y lenguajes orientados a
eventos, las aplicaciones ejecutaban su cdigo en un orden fijo,
ya que estaban basadas en un modelo construido exclusivamente
a base de procedimientos: se realizaban llamadas a las rutinas de
cdigo en un orden predeterminado, y una vez terminada la
ejecucin de tales rutinas, finalizaba la aplicacin.
10
1.1.2 Eventos
Un escenario de trabajo sin eventos

Supongamos que nos encargan desarrollar una clase llamada
Empleado, entre cuyos miembros tenemos la propiedad Sueldo. Uno
de los requerimientos respecto a esta propiedad es que su valor no
debe ser superior a 1000; por ello, en su procedimiento Property,
realizamos una validacin a tal efecto, emitiendo un mensaje cuando el
sueldo que asignemos sea superior. Ver el Cdigo fuente.
11
1.1.2 Eventos
Public Class Empleado
Private msNombre As String
Private mdbSueldo As Double
Public Property Nombre() As String
Get
Return msNombre
End Get
Set(ByVal Value As String)
msNombre = Value
End Set
End Property
Public Property Sueldo() As Double
Get
Return mdbSueldo
End Get
Set(ByVal Value As Double)
If Value > 1000 Then
Console.WriteLine("Asignacin de sueldo incorrecta")
Console.ReadLine()
Else
mdbSueldo = Value
End If
End Set
End Property
End Class
12
1.1.2 Eventos
Una vez finalizado el desarrollo de la clase, la distribuimos a nuestro
cliente. Posteriormente, un nuevo cliente nos requiere la clase, pero en
esta ocasin, aunque necesita la validacin sobre la propiedad Sueldo,
no quiere que se muestre el mensaje al sobrepasar el sueldo asignado.

Se nos plantea en este caso un problema, ya que si escribimos una
nueva versin de la clase Empleado, tendremos el trabajo extra de
mantener ambas. Para solucionarlo mediante una nica versin de la
clase recurriremos a los eventos.
13
1.1.2 Eventos
Programacin basada en eventos

La aparicin de Windows trajo consigo un nuevo esquema en el
desarrollo de aplicaciones. En un programa que se ejecute dentro de
un sistema basado en eventos como pueda ser Windows, se estn
produciendo constantemente eventos (sucesos), provocados por las
acciones del usuario o por el propio sistema. Tan elevado es el nmero
de eventos que se producen, que dar respuesta a todos, es decir,
codificar todas aquellas situaciones que acontecen a lo largo de la
ejecucin de un programa, es algo impensable.
Por tal motivo, la tcnica seguida al escribir cdigo orientado a
eventos, se basa en codificar slo los eventos que nos interese tratar,
ya que para el resto, ser el propio sistema quien proporcione el
comportamiento por defecto.
14
1.1.2 Eventos
En una aplicacin Windows tpica, todos los elementos que forman
parte de la misma, es decir, el propio formulario y los controles
contenidos en l, lanzan eventos en respuesta a las acciones del
usuario. El ejemplo ms habitual: al pulsar un botn, se produce su
evento clic; si queremos que el programa realice alguna accin al
pulsar dicho botn, deberemos escribir cdigo en el procedimiento de
evento asociado, para dar respuesta a tal suceso.
15
1.1.2 Eventos
Esquema bsico de un sistema orientado a eventos

Un sistema conducido por eventos basa su funcionamiento en dos
pilares fundamentales: un emisor y un receptor de eventos.
El primero genera y lanza el evento al sistema, mientras que el
segundo, si est interesado en tratar el evento lanzado, lo captura y le
da respuesta. Si un objeto receptor no necesita gestionar eventos,
simplemente no lo obtiene.
16
1.1.2 Eventos
Public Class Empleado
Public Event LimiteSueldo(ByVal ldbImporte As Double)
Private msNombre As String
Private mdbSueldo As Double
Public Property Nombre() As String
Get
Return msNombre
End Get
Set(ByVal Value As String)
msNombre = Value
End Set
End Property
Public Property Sueldo() As Double
Get
Return mdbSueldo
End Get
Set(ByVal Value As Double)
If Value > 1000 Then
'Console.WriteLine("Asignacin de sueldo incorrecta")
'Console.ReadLine()
RaiseEvent LimiteSueldo(Value)
Else
mdbSueldo = Value
End If
End Set
End Property
End Class
17
1.1.2 Eventos
Private WithEvents moEmple As Empleado

Public Sub moEmple_LimiteSueldo(ByVal ldbImporte As Double) _
Handles moEmple.LimiteSueldo
Console.WriteLine("Se ha sobrepasado para {0} el lmite" & _
" establecido de sueldo", _
moEmple.Nombre)
Console.WriteLine("El importe {0} no es vlido", ldbImporte)
Console.ReadLine()
End Sub


Sub Main()
moEmple = New Empleado()
moEmple.Nombre = "Juan"
moEmple.Sueldo = 500 ' esta asignacin no provoca el evento
moEmple.Sueldo = 8000 ' esta s provoca el evento
End Sub

18
1.1.3 Mtodos
Los mtodos, son aquellos miembros de una clase que definen el
comportamiento de los objetos, como consecuencia de las acciones
que llevan a cabo al ser ejecutados.
19
1.1.3 Mtodos
En la clase Empleado necesitamos realizar un clculo del da en que
va a finalizar un empleado sus vacaciones; para ello precisamos
conocer la fecha de comienzo y la cantidad de das que va a estar de
vacaciones, por lo que escribiremos un mtodo en nuestra clase al que
llamaremos CalcularVacaciones( ); a este mtodo le pasaremos los
parmetros de la fecha de inicio y el nmero de das, devolviendo, al
ser de tipo Function, la fecha de finalizacin del periodo vacacional.
20
1.1.3 Mtodos
Sub Main()
' instanciar objeto Empleado
Dim loEmpleado As Empleado
loEmpleado = New Empleado()
' asignar valores a propiedades
loEmpleado.Identificador = 78
loEmpleado.Nombre = "Antonio"
loEmpleado.Apellidos = "Iglesias"
' llamar a mtodo
loEmpleado.CalcularVacaciones("20/07/2002", 15)
End Sub
21
1.1.3 Mtodos
Public Class Empleado
' variables de propiedad
Private miID As Integer
Private msNombre As String
Private msApellidos As String
' procedimientos de propiedad
Public Property Identificador() As Integer
Get
Return miID
End Get
Set(ByVal value As Integer)
miID = value
End Set
End Property
Public Property Nombre() As String
Get
Return msNombre
End Get
Set(ByVal value As String)
msNombre = value
End Set
End Property
22
1.1.3 Mtodos
Public Property Apellidos() As String
Get
Return msApellidos
End Get
Set(ByVal value As String)
msApellidos = value
End Set
End Property
' mtodos
Public Sub CalcularVacaciones(ByVal ldtInicio As Date, _
ByVal liDias As Integer)
' en este mtodo calculamos el periodo
' de vacaciones del empleado,
' mostrando los resultados en consola
Dim ldtFinal As Date
ldtFinal = DateAdd(DateInterval.Day, liDias, ldtInicio)
Console.WriteLine("Empleado {0} - {1} {2}", _
Identificador, Nombre, Apellidos)
Console.WriteLine("Vacaciones desde {0} hasta {1}", _
Format(ldtInicio, "dd/MMM/yy"), _
Format(ldtFinal, "d/MMMM/yyyy"))
Console.ReadLine()
End Sub
End Class
23
1.1.4 Propiedades
Una propiedad en la clase se define, por norma general, mediante dos
elementos: una variable de propiedad y un procedimiento de propiedad.

La variable de propiedad, tal y como su nombre indica, es una variable con
mbito privado a nivel de la clase, que se encarga de guardar el valor de la
propiedad. Por su parte el procedimiento de propiedad o Property, es el
encargado de actuar de puente entre el cdigo cliente y la variable de
propiedad, realizando las operaciones de acceso y asignacin de valores a
dicha variable.
24
1.1.4 Propiedades
Por lo tanto, para crear una propiedad en nuestra clase, declararemos en
primer lugar una variable Private, y en segundo lugar un procedimiento de tipo
Property, que consta de dos bloques: Get, para devolver el valor de la variable
de propiedad; y Set, para asignrselo.
25
1.1.4 Propiedades
Public Class Empleado
' declarar una variable de propiedad
' para la propiedad Nombre
Private msNombre As String
' declarar el procedimiento Property
' para la propiedad Nombre
Public Property Nombre() As String
' bloque Get para devolver
' el valor de la propiedad
Get
Return msNombre
End Get
' bloque Set para asignar
' valor a la propiedad
Set(ByVal Value As String)
msNombre = Value
End Set
End Property
End Class
26
1.1.4 Propiedades
Dim loEmpleado As New Empleado()
' asignar valor a una propiedad
loEmpleado.Nombre = "Guillermo"
' mostrar el valor de una propiedad del objeto
Console.WriteLine("El valor de la propiedad Nombre es:{0}", _
loEmpleado.Nombre)
Console.ReadLine()
27
Gracias por su atencin

También podría gustarte