27
1 UNIDAD I FUNDAMENTOS DEL LENGUAJE Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display.

1 Fundamentos del lenguaje

  • Upload
    jeshue

  • View
    397

  • Download
    6

Embed Size (px)

Citation preview

Page 1: 1 Fundamentos del lenguaje

1

UNIDAD I

FUNDAMENTOS DEL LENGUAJE

Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display.

Page 2: 1 Fundamentos del lenguaje

2

1.1

Programación orientada a eventos.

Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display.

Page 3: 1 Fundamentos del lenguaje

3

1.1.1 Objetos1.1.1 Objetos

Un objeto es una agrupación de código, compuesta de propiedades y métodos, que pueden ser manipulados como una entidad independiente. Las propiedades definen los datos o información del objeto, permitiendo consultar o modificar su estado; mientras que los métodos son las rutinas que definen su comportamiento.Un objeto es una pieza que se ocupa de desempeñar un trabajo concreto dentro de una estructura organizativa de nivel superior, formada por múltiples objetos, cada uno de los cuales ejerce la tarea particular para la que ha sido diseñado.

Page 4: 1 Fundamentos del lenguaje

4

1.1.1 Objetos1.1.1 Objetos

Una clase no es otra cosa que el conjunto de especificaciones o normas que definen cómo va a ser creado un objeto de un tipo determinado; algo parecido a un manual de instrucciones conteniendo lasindicaciones para crear el objeto.Los términos objeto y clase son utilizados en OOP con gran profusión y en contextos muy similares, por lo que para intentar aclarar en lo posible ambos conceptos, diremos que una clase constituye la representación abstracta de algo, mientras que un objeto constituye la representación concreta de lo que una clase define.

Page 5: 1 Fundamentos del lenguaje

5

1.1.1 Objetos1.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 categoría, 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.

Page 6: 1 Fundamentos del lenguaje

6

1.1.1 Objetos1.1.1 Objetos

Page 7: 1 Fundamentos del lenguaje

7

1.1.1 Objetos1.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

Page 8: 1 Fundamentos del lenguaje

8

1.1.2 Eventos1.1.2 Eventos

Un evento es un suceso o situación, que acontece en una ubicación de espacio y tiempo no predecible.Cuando una máquina deja de funcionar por una avería, 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 .NETCiñéndonos al ámbito de la programación, un evento es, dentro de una aplicación, una notificación lanzada por un objeto, que podrá ser respondida por aquellos otros objetos interesados en darle soporte.

Page 9: 1 Fundamentos del lenguaje

9

1.1.2 Eventos1.1.2 Eventos

Programación estrictamente procedural

Antes de la llegada de los sistemas y lenguajes orientados a eventos, las aplicaciones ejecutaban su código en un orden fijo, ya que estaban basadas en un modelo construido exclusivamente a base de procedimientos: se realizaban llamadas a las rutinas de código en un orden predeterminado, y una vez terminada la ejecución de tales rutinas, finalizaba la aplicación.

Page 10: 1 Fundamentos del lenguaje

10

1.1.2 Eventos1.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 validación a tal efecto, emitiendo un mensaje cuando el sueldo que asignemos sea superior. Ver el Código fuente.

Page 11: 1 Fundamentos del lenguaje

11

1.1.2 Eventos1.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("Asignación de sueldo incorrecta") Console.ReadLine() Else mdbSueldo = Value End If End Set End Property End Class

Page 12: 1 Fundamentos del lenguaje

12

1.1.2 Eventos1.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 ocasión, aunque necesita la validación 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 versión de la clase Empleado, tendremos el trabajo extra de mantener ambas. Para solucionarlo mediante una única versión de la clase recurriremos a los eventos.

Page 13: 1 Fundamentos del lenguaje

13

1.1.2 Eventos1.1.2 Eventos

Programación basada en eventos

La aparición 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 están produciendo constantemente eventos (sucesos), provocados por las acciones del usuario o por el propio sistema. Tan elevado es el número de eventos que se producen, que dar respuesta a todos, es decir, codificar todas aquellas situaciones que acontecen a lo largo de la ejecución de un programa, es algo impensable.Por tal motivo, la técnica seguida al escribir código orientado a eventos, se basa en codificar sólo los eventos que nos interese tratar, ya que para el resto, será el propio sistema quien proporcione el comportamiento por defecto.

Page 14: 1 Fundamentos del lenguaje

14

1.1.2 Eventos1.1.2 Eventos

En una aplicación Windows típica, 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 más habitual: al pulsar un botón, se produce su evento clic; si queremos que el programa realice alguna acción al pulsar dicho botón, deberemos escribir código en el procedimiento de evento asociado, para dar respuesta a tal suceso.

Page 15: 1 Fundamentos del lenguaje

15

1.1.2 Eventos1.1.2 Eventos

Esquema básico 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.

Page 16: 1 Fundamentos del lenguaje

16

1.1.2 Eventos1.1.2 Eventos Public Class Empleado PublicPublic EventEvent LimiteSueldo( LimiteSueldo(ByValByVal ldbImporte ldbImporte AsAs DoubleDouble)) 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("Asignación de sueldo incorrecta") 'Console.ReadLine() RaiseEventRaiseEvent LimiteSueldo(Value) LimiteSueldo(Value) Else mdbSueldo = Value End If End Set End Property End Class

Page 17: 1 Fundamentos del lenguaje

17

1.1.2 Eventos1.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 límite" & _ " establecido de sueldo", _ moEmple.Nombre) Console.WriteLine("El importe {0} no es válido", ldbImporte) Console.ReadLine() End Sub

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

Page 18: 1 Fundamentos del lenguaje

18

1.1.3 Métodos1.1.3 Métodos

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

Page 19: 1 Fundamentos del lenguaje

19

1.1.3 Métodos1.1.3 Métodos

En la clase Empleado necesitamos realizar un cálculo del día en que va a finalizar un empleado sus vacaciones; para ello precisamos conocer la fecha de comienzo y la cantidad de días que va a estar de vacaciones, por lo que escribiremos un método en nuestra clase al que llamaremos CalcularVacaciones( ); a este método le pasaremos los parámetros de la fecha de inicio y el número de días, devolviendo, al ser de tipo Function, la fecha de finalización del periodo vacacional.

Page 20: 1 Fundamentos del lenguaje

20

1.1.3 Métodos1.1.3 Métodos

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 método loEmpleado.CalcularVacaciones("20/07/2002", 15) End Sub

Page 21: 1 Fundamentos del lenguaje

21

1.1.3 Métodos1.1.3 Métodos 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

Page 22: 1 Fundamentos del lenguaje

22

1.1.3 Métodos1.1.3 Métodos Public Property Apellidos() As String Get Return msApellidos End Get Set(ByVal value As String) msApellidos = value End Set End Property ' métodos Public Sub CalcularVacaciones(ByVal ldtInicio As Date, _ ByVal liDias As Integer) ' en este método 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

Page 23: 1 Fundamentos del lenguaje

23

1.1.4 Propiedades1.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 código cliente y la variable de propiedad, realizando las operaciones de acceso y asignación de valores a dicha variable.

Page 24: 1 Fundamentos del lenguaje

24

1.1.4 Propiedades1.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 asignárselo.

Page 25: 1 Fundamentos del lenguaje

25

1.1.4 Propiedades1.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

Page 26: 1 Fundamentos del lenguaje

26

1.1.4 Propiedades1.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()

Page 27: 1 Fundamentos del lenguaje

27

Gracias por su atenciónGracias por su atención