visual basic 2010: classes collections e inheritance

68
Classes, Collections, e Inheritance

Upload: kenny-merle

Post on 19-Jul-2015

202 views

Category:

Technology


5 download

TRANSCRIPT

Page 1: Visual Basic 2010: Classes collections e inheritance

Classes, Collections, e Inheritance

Page 2: Visual Basic 2010: Classes collections e inheritance

Introducción

◦ Tipos de datos abstractos◦ Cómo crearlos con clases

◦ El proceso de análisis de un problema◦ La determinación de sus clases

◦ Técnicas◦ Para la creación de objetos, propiedades y métodos

◦ El Examinador de objetos◦ Proporciona información acerca de las clases en su proyecto

◦ Colecciones◦ Estructuras para grupos de objetos que sostiene

◦ Herencia◦ Un camino para nuevas clases que se crea a partir de los ya existentes

Page 3: Visual Basic 2010: Classes collections e inheritance

Clases y objetos

Page 4: Visual Basic 2010: Classes collections e inheritance

Programación orientada a objetos

Programación orientada a objetos (POO) es una forma de diseñar y codificar aplicaciones con componentes de software intercambiables que se pueden utilizar para construir programas más grandes

Primeros idiomas aparecieron en la década de 1980◦ El legado de estos lenguajes ha sido el desarrollo gradual de las herramientas visuales a objetos como los programas de

desarrollo

◦En Visual Basic, formas, botones, casillas de verificación, cuadros de lista y otros controles son ejemplos de objetos◦Estos diseños ayudan y producen programas que están bien

adaptados para el desarrollo continuo y la expansión

Page 5: Visual Basic 2010: Classes collections e inheritance

Tipos de datos abstractos

Un tipo de datos abstracto (TDA) es un tipo de datos creado por un programador

ADTs son importantes en la informática y la programación orientada a objetos

Una abstracción es un modelo de algo que incluye sólo sus características generales

Perro es un buen ejemplo de una abstracción◦ Define un tipo general del animal, pero no una raza, color o tamaño específico◦ Un perro es como un tipo de datos◦ Un perro específico es un ejemplo del tipo de datos

Page 6: Visual Basic 2010: Classes collections e inheritance

Clases

Una clase es una estructura de programa que define un tipo de datos abstracto◦ Crear la clase primero◦ Cree una instancia de la clase

◦ También llamado un objeto

◦ Instancias de clase comparten características comunes◦ Formularios y controles de Visual Basic son clases

Page 7: Visual Basic 2010: Classes collections e inheritance

Las propiedades de clase, métodos y procedimientos de evento Programas comunican con un objeto utilizando las propiedades y métodos de la clase

Las propiedades de clase:◦ Los botones tienen propiedades Ubicación, Texto y Nombre

Los métodos de clase:◦ Las funciones de método de enfoque de forma idéntica para cada botón

Procedimientos de evento de la clase:◦ Cada botón en un formulario tiene un procedimiento de evento click diferente

Page 8: Visual Basic 2010: Classes collections e inheritance

Diseño Orientado a Objetos

El reto es diseñar clases que cooperan con eficacia y se comunican

Analizar los requisitos de aplicación para determinar ADTs que mejor implementar las especificaciones

Las clases son los bloques de construcción fundamentales◦ Normalmente representan los sustantivos de algún tipo

Una clase bien diseñada puede sobrevivir a la aplicación◦ Otros usos de la clase se pueden encontrar

Page 9: Visual Basic 2010: Classes collections e inheritance

Encontrando las clases

Análisis orientado a objetos comienza con una especificación detallada del problema a resolver

Un término a menudo que se aplica a este proceso es encontrar las clases◦ Por ejemplo, las especificaciones para un programa que consiste en clases de la universidad de

programación para los estudiantes:◦ Observe los nombres en cursiva y sintagmas nominales:

◦ Lista de los estudiantes, la transcripción, el estudiante y curso◦ Estos serían ordinariamente convertido en clases en el diseño del programa

Page 10: Visual Basic 2010: Classes collections e inheritance

Buscando los Control Structures

Las clases también se pueden descibrir en◦ La descripción del procesamiento realizado por la aplicación◦ La descripción de las estructuras de control◦ Un agente de control podría ser implementado con una clase◦ Por ejemplo, una clase llamada Scheduler◦ Puede ser utilizado para que coincida con el horario de cada estudiante

con horario principal de la universidad

Page 11: Visual Basic 2010: Classes collections e inheritance

Describiendo las clases

El siguiente paso es describir las clases en términos de atributos y operaciones◦ Los atributos se implementan como propiedades◦ Las características de cada objeto◦ Describir las propiedades comunes de los objetos de la clase◦ Las operaciones se implementan como métodos◦ Acciones de los objetos de clase realizan◦ Mensajes que pueden responder a

Page 12: Visual Basic 2010: Classes collections e inheritance

Interfaz e Implementación

La interfaz de clase es la porción de la clase que es visible para el programador

El programa cliente se escribe para usar una clase◦ Se refiere a la relación cliente-servidor entre una clase y los programas que lo

utilizan

La implementación de la clase es la parte de la clase que se oculta a los programas clientes◦ Creado a partir de las variables miembro privadas, propiedades y métodos◦ La ocultación de datos y procedimientos en una clase se logra a través de un

proceso llamado encapsulación◦ Visualice la clase como una cápsula alrededor de sus datos y procedimientos

Page 13: Visual Basic 2010: Classes collections e inheritance

Creando una clase

Page 14: Visual Basic 2010: Classes collections e inheritance

Declaración de Clases y Añadir una clase Se crea una clase en Visual Basic con una declaración de clase utilizando el siguiente formato general:

◦ ClassName es el nombre de la clase◦ MemberDeclarations son las declaraciones de todas las variables, constantes y

métodos que pertenecerán a la clase

Para agregar una declaración de clase para un proyecto de aplicación de Windows:

1. Haga clic en proyecto en la barra de menú, el clic en Agregar clase

2. Cambie el nombre predeterminado que aparece en el cuadro de texto Nombre

3. Haga clic en el botón Agregar en el cuadro de diálogo Agregar nuevo elemento

Public Class ClassName MemberDeclarationsEnd Class

Page 15: Visual Basic 2010: Classes collections e inheritance

El Add New Item Dialog Box

Page 16: Visual Basic 2010: Classes collections e inheritance

Variables miembros

Una variable miembro es una variable que se declara dentro de una declaración de clase utilizando el siguiente formato general:

◦ AccessSpecifier determina la accesibilidad de la variable◦ Public access fuera de la clase o ensamblaje◦ Friend access sólo por otras clases dentro del mismo conjunto◦ Private access sólo por las declaraciones dentro de la declaración de la clase◦ VariableName es el nombre de la variable◦ DataType es el tipo de dato de la variabel

Al igual que con las estructuras, una declaración de clase no crea una instancia de la clase◦ Para trabajar con una clase, debe crear objetos de clase, que son instancias de la clase

AccessSpecifer VariableName As DataType

Page 17: Visual Basic 2010: Classes collections e inheritance

Creación de una instancia de una clase Un proceso de dos pasos crea una instancia de una clase

1. Declare una variable cuyo tipo es la clase

2. Crea la instancia de la clase con la palabra clave New y asignar la instancia a la variable

3. Usted puede lograr ambos pasos en una declaración

Dim freshman As New Student

Dim freshman As Student

freshman = New Student

Page 18: Visual Basic 2010: Classes collections e inheritance

Accediendo miembros

Una vez creado, se puede trabajar con los miembros públicos de un objeto de la clase en el código◦ Acceda a los miembros públicos con el (.) Operador punto◦ Supongamos que la clase del estudiante fue declarado de la siguiente manera:

◦ El siguiente asigna valores a cada una de las variables miembro de una instancia de la clase de primer año del estudiante nombrado :

Public Class Student Public strLastName As String Public strFirstName As String Public strId As StringEnd Class

' Assign values to the object's members.freshman.strFirstName = "Joy"freshman.strLastName = "Robinson"freshman.strId = "23G794"

Page 19: Visual Basic 2010: Classes collections e inheritance

Procedimiento de Propiedad

Un procedimiento de propiedad es una función que define una propiedad de clase utilizando el siguiente formato general :

PropertyName es el nombre del procedimiento de propiedadDataType es el tipo de datos que se puede asignar a la propiedadLa sección Get contiene el código que se ejecuta cuando se recupera el valorLa sección de Set es el código que se ejecuta cuando se almacena el valor

Public Property PropertyName() As DataType Get Statements End Get Set(ParameterDeclaration) Statements End SetEnd Property

Page 20: Visual Basic 2010: Classes collections e inheritance

Ejemplo de la propiedad de Clase

Public Class Student Private strLastName As String ' Holds last name Private strFirstName As String ' Holds first name Private strId As String ' Holds ID number Private dblTestAverage As Double ' Holds test average

Public Property TestAverage() As Double Get Return dblTestAverage End Get Set(ByVal value As Double) dblTestAverage = value End Set End Property

Page 21: Visual Basic 2010: Classes collections e inheritance

Ejemplo Uso Propiedad en una Clase

Almacena el valor de 82.3 en la propiedad TestAverage utilizando la sección de conjunto del procedimiento de propiedadCualquier declaración que recupera el valor de la propiedad TestAverage hace que la sección Get del procedimiento de propiedad para ejecutar

Dim freshman As New Studentfreshman.TestAverage = 82.3

dblAverage = freshman.TestAverage

MessageBox.Show(freshman.TestAverage.ToString())

Page 22: Visual Basic 2010: Classes collections e inheritance

Propiedades Read-Only

Los programas clientes pueden consultar una propiedad de sólo lectura y obtener es de valor, pero no pueden modificarloEste es el formato general de la lectura de procedimiento de propiedad :

◦ Utiliza la keword ReadOnly◦ No tiene sección Set◦ Sólo capaz de devolver un valor

Public ReadOnly Property PropertyName() As DataType Get Statements End GetEnd Property

Page 23: Visual Basic 2010: Classes collections e inheritance

Ejemplo de un propiedad Read-Only

Public ReadOnly Property Grade() As String Get Dim strGrade As String If dblTestAverage >= 90.0 Then strGrade = "A" ElseIf dblTestAverage >= 80.0 Then strGrade = "B" ElseIf dblTestAverage >= 70.0 Then strGrade = "C" ElseIf dblTestAverage >= 60.0 Then strGrade = "D" Else strGrade = "F" End If Return strGrade End GetEnd Property

Page 24: Visual Basic 2010: Classes collections e inheritance

Propiedades autoimplementadas

Una propiedad de clase se define por una única línea de código◦ Conveniente porque Visual Studio crea automáticamente un campo privado oculto, llamado un campo de respaldo

para mantener el valor de la propiedad◦ No incluye la comprobación de rango y otras validaciones◦ Una propiedad ReadOnly no puede ser auto-aplicada

Tiene dos formatos generales :

◦ InitialValue es un valor obcional que se le asigna a la propiedad

Por Ejemplo:

Public Property PropertyName As DataTypePublic Property PropertyName As DataType = InitialValue

Public Property FirstName As StringPublic Property LastName As StringPublic Property IdNumber As StringPublic Property TestAverage As Double

Page 25: Visual Basic 2010: Classes collections e inheritance

Eliminación de objetos y Recolección de Basura El espacio de memoria se consume cuando se crean instancias de objetosLos objetos ya no son necesarios y se deben quitarAjuste variable de objeto en Nothing lo que ya no hace referencia al objeto

Objeto es un candidato para la recolección de basura cuando ya no hace referencia a ninguna variable de objeto

Los monitores recolectores de basura automáticamente destruyen objetos que ya no son necesarios

freshman = Nothing

Page 26: Visual Basic 2010: Classes collections e inheritance

Saliéndose del Alcance

Una variable de objeto es local en el procedimiento en el que se declara◦ Se eliminará de la memoria cuando termina el procedimiento◦ Esto se llama ir fuera de alcance◦ La variable objeto no se elimina de la memoria si se hace referencia por una variable

Sub CreateStudent() Dim sophomore As New Student ' Create an instance of Student. ' Assign values to its properties. sophomore.FirstName = "Travis" sophomore.LastName = "Barnes" sophomore.IdNumber = "17H495" sophomore.TestAverage = 94.7 g_studentVar = sophomore ' Assign to global variable.End Sub

Page 27: Visual Basic 2010: Classes collections e inheritance

Comparando variables de objeto con operadores Is e IsNot El operador se determina si dos variables hacen referencia al mismo objeto

El operador IsNot determina si dos variables no hacen referencia a un mismo objeto

El valor Nothingdetermina si las referencias a variablescualquier objeto

If collegeStudent Is transferStudent Then ' Perform some actionEnd If

If collegeStudent IsNot transferStudent Then ' Perform some actionEnd If

If collegeStudent Is Nothing Then ' Perform some actionEnd IfIf transferStudent IsNot Nothing Then ' Perform some actionEnd If

Page 28: Visual Basic 2010: Classes collections e inheritance

Creando un arreglo de objetos

Se puede crear un conjunto de variables de objeto

A continuación, se crea un objeto para cada elemento de referencia

Utilice otro bucle para liberar

la memoria utilizada por la matriz

Dim mathStudents(9) As StudentDim intCount As IntegerFor intCount = 0 To 9 mathStudents(intCount) = New StudentNext

Dim intCount As Integer

For intCount = 0 To 9 mathStudents(intCount) = NothingNext

Page 29: Visual Basic 2010: Classes collections e inheritance

Escribiendo procedimientos y funciones que trabajan con objetos Puede utilizar variables de objeto como argumentos a un procedimiento o función◦ Ejemplo: objeto Student s como argumento

Pasar variable de objeto con la llamada del procedimiento

Sub DisplayStudentGrade(ByVal s As Student) ' Displays a student's grade. MessageBox.Show("The grade for " & s.FirstName & " " & s.LastName & " is " & s.TestGrade.ToString())End Sub

DisplayStudentGrade(freshman)

Page 30: Visual Basic 2010: Classes collections e inheritance

Pasando objetos por valor y por referencia

Si el argumento es declarado utilizando ByRef◦ Los valores de las propiedades del objeto pueden ser cambiados◦ La variable objeto original puede ser asignada a un objeto diferente

Si el argumento es declarada mediante ByVal◦ Los valores de las propiedades del objeto pueden ser cambiados◦ La variable de objeto original no puede ser asignado a un objeto diferente

Page 31: Visual Basic 2010: Classes collections e inheritance

Devolución de un objeto desde una función Ejemplo a continuación es una instancia de un objeto estudiante

Pregunta al usuario para y establece sus valores de propiedad

Luego devuelve el objeto instanciado

Function GetStudent() As Student Dim s As New Student s.FirstName = InputBox("Enter the student's first name.") s.LastName = InputBox("Enter the student's last name.") s.IdNumber = InputBox("Enter the student's ID number.") s.TestAverage = CDbl(InputBox("Enter the student's test average.")) Return sEnd Function

Dim freshman As Student = GetStudent()

Page 32: Visual Basic 2010: Classes collections e inheritance

Metodos

Un método es un procedimiento o función que es un miembro de una clase◦ Realiza alguna operación en los datos

almacenados en la clase◦ Por ejemplo, la siguiente declaración llama al

método Clear del estudiante de primer año objeto Student

freshman.Clear()

Public Class Student ' Member variables Private strLastName As String Private strFirstName As String Private strId As String Private dblTestAverage As Double

(...Property procedures omitted...)

' Clear method Public Sub Clear() strFirstName = String.Empty strLastName = String.Empty strId = String.Empty dblTestAverage = 0.0 End SubEnd Class

Page 33: Visual Basic 2010: Classes collections e inheritance

Constructores

Un constructor es un método que se llama automáticamente cuando se crea una instancia de la clase◦ Piense en constructores como rutinas de

inicialización◦ Útil para inicializar variables miembro u otras

operaciones de puesta en marcha

Para crear un constructor:◦ Cree un método llamado New dentro de la clase◦ Alternativamente, seleccione Newen la lista

desplegable el nombre del método

Public Class Student ' Member variables Private strLastName As String Private strFirstName As String Private strId As String Private dblTestAverage As Double

' Constructor Public Sub New() strFirstName = "(unknown)" strLastName = "(unknown)" strId = "(unknown)" dblTestAverage = 0.0 End Sub

(The rest of this class is omitted.)End Class

Page 34: Visual Basic 2010: Classes collections e inheritance

Mostrando mensajes en la ventana de salida La ventana de resultados es una valiosa herramienta de depuración

Mostrar haciendo clic en el menú Ver, Otras ventanas y, a continuación salida o puede pulsar las teclas Ctrl + Alt + O combinación de teclas

Muestra tus propios mensajes con el método Debug.WriteLine utilizando el siguiente formato general:

Permite depurar mensajes insertando la siguiente en controlador de eventos Load del formulario de inicio:

Debug.WriteLine(Output)

Debug.Listeners.Add(New ConsoleTraceListener())

Page 35: Visual Basic 2010: Classes collections e inheritance

Collections

Page 36: Visual Basic 2010: Classes collections e inheritance

Collections

Una colección es similar a un arreglo◦ Una sola unidad que contiene varios elementos◦ Accede a artículos individuales con un valor de índice

Las diferencias de una matriz son las siguientes:◦ Los valores del índice de colecciones comienzan en 1◦ Las colecciones expanden automáticamente a medida que se agregan elementos y disminuye a

medida que se retiran los elementos◦ Los elementos de una colección no tienen que ser del mismo tipo de datos

Page 37: Visual Basic 2010: Classes collections e inheritance

Creación de una instancia de la clase de colección Visual Basic proporciona una clase denominada Colección◦ Para crear una instancia de la clase Collection:◦ Declare una variable cuyo tipo es la clase Collection

◦ Crear instancia de la clase con la palabra clave New y asignar la instancia a la variable

◦ O usted puede lograr ambos pasos en una declaración

Dim customers As Collection

customers = New Collection

Dim customers As New Collection

Page 38: Visual Basic 2010: Classes collections e inheritance

Agregando elementos a una colección Es preferible agregar elementos a una colección con el método Add utilizando el siguiente formato general:

◦CollectionName es el nombre de una variable de objeto que hace referencia a una colección◦El artículo es el objeto, variable, o valor que se va a añadir a la colección◦Key es una expresión de cadena opcional que se puede utilizar para buscar

elementos◦ Debe ser único para cada miembro de una colección

CollectionName.Add(Item [, Key])

Page 39: Visual Basic 2010: Classes collections e inheritance

Ejemplos de añadir elementos a una colección Declarar un objeto de colección

Insertar un valor en la colección

Insertar un valor en la colección con un valor clave opcional

Manejo de excepciones clave duplicados

Private customers As New Collection

customers.Add(myCustomer)

customers.Add(myCustomer, myCustomer.Name)

Try customers.Add(myCustomer, myCustomer.Name)Catch ex as ArgumentException MessageBox.Show(ex.Message)End Try

Page 40: Visual Basic 2010: Classes collections e inheritance

Acceso a elementos por sus índices

Se puede acceder a un elemento de una colección mediante un entero con el método de artículo de la siguiente manera:

◦ CollectionName es el nombre de la variable de objeto de colección◦ índice es el índice entero del elemento que desea recuperar◦ El método Item devuelve un Object◦ Llame al método Ctype convertir el objeto al tipo necesario

◦ El artículo es el método por defecto para las colecciones, así que usted puede utilizar un formato abreviado, como en el siguiente ejemplo:

CollectionName.Item(index)

Dim cust As Customer = CType(customers.Item(1), Customer)MessageBox.Show("Customer found: " & cust.Name & ": "& cust.Phone)

Dim cust As Customer = CType(customers(3), Customer)

Page 41: Visual Basic 2010: Classes collections e inheritance

La Excepción IndexOutOfRange

Una excepción IndexOutOfRange se produce si se utiliza un índice que no coincide con ningún elemento de una colección

El ejemplo de código siguiente se muestra cómo manejar la excepción:

Try Dim cust As Customer Dim index As Integer = CInt(txtIndex.Text) cust = CType(customers.Item(index), Customer) MessageBox.Show("Customer found: " & cust.Name & ": " & cust.Phone)

Catch ex As IndexOutOfRangeException MessageBox.Show(ex.Message)End Try

Page 42: Visual Basic 2010: Classes collections e inheritance

La propiedad Count

Cada colección tiene una propiedad Count◦ Sostiene que el número de elementos de la colección

El ejemplo de código siguiente:◦ Utiliza un bucle For Next◦ Con la propiedad Count como el límite superior◦ Para agregar el contenido de la colección a un cuadro de lista

Dim intX As IntegerFor intX = 1 To names.Count lstNames.Items.Add(names(intX).ToString())Next

Page 43: Visual Basic 2010: Classes collections e inheritance

La búsqueda de un artículo por Clave de Valor y el Uso del método de artículo El método de elemento puede utilizarse para recuperar un elemento con un valor clave específica utilizando el siguiente formato general:

◦ CollectionName es el nombre de una colección◦ La expresión puede ser una expresión numérica o de cadena

Si se utiliza una expresión de cadena

El valor de la clave que coincide con la cadena se devuelve◦ Si se utiliza una expresión numérica, se convierte en el valor del índice

◦ El miembro del índice especificado se devuelve

◦ Si no existe ningún miembro con un índice o una clave Expresión valor coincidente, se produce una excepción IndexOutOfRange

CollectionName.Item(Expression)

Dim s As Student = CType(studentCollection.Item("49812"), Student)

Page 44: Visual Basic 2010: Classes collections e inheritance

Usando referencias versus Copias

Cuando un elemento de una colección es:◦ Un tipo fundamental de Visual Basic◦ Integer, String, Decimal, etc.◦ Sólo se devuelve una copia del miembro◦ su valor no se puede cambiar

Un objeto de clase◦ Se devuelve una referencia al objeto◦ Su valor puede ser cambiado

Page 45: Visual Basic 2010: Classes collections e inheritance

Utilizando el For Each ... Next Loop en una colección Usted puede utilizar el For Each ... Next para acceder a los miembros individuales de una colección◦Elimina la necesidad de una variable de contador◦por ejemplo:

Dim s As StudentFor Each s In studentCollection MessageBox.Show(s.LastName)Next

Page 46: Visual Basic 2010: Classes collections e inheritance

Removiendo Miembros

Utilice el método Remove para quitar un miembro de una colección utilizando el siguiente formato general:

◦ CollectionName es el nombre de una colección◦ Expression puede ser una expresion numérica o de cadena◦ Si se utiliza una expresión de cadena◦ Se elimina el valor clave que coincide con la cadena◦ Un ArgumentExeception se produce si el valor de la clave no coincide con un elemento

de la colección◦ Si se utiliza una expresión numérica, se convierte en el valor del índice◦ El miembro del índice especificado se elimina◦ Una excepción IndexOutOfRange ocurre si el índice no coincide con ningún elemento

de la colección

CollectionName.Remove(Expression)

Page 47: Visual Basic 2010: Classes collections e inheritance

Prevención de excepciones cuando se hace Extracción de Miembros Para evitar lanzar una excepción con el método Remove:◦ Compruebe siempre el rango del índice

◦ Asegúrese de que existe un valor de clave antes de usarlo

Dim intIndex As Integer' (assign value to intIndex...)If intIndex > 0 and intIndex <= studentCollection.Count Then studentCollection.Remove(intIndex)End If

Dim strKeyToRemove As String' (assign value to strKeyToRemove...)If studentCollection.Contains(strKeyToRemove) Then studentCollection.Remove(strKeyToRemove))End If

Page 48: Visual Basic 2010: Classes collections e inheritance

Escribir procedimientos Sub y funciones que utilizan Colecciones Procedimientos y funciones Sub pueden aceptar colecciones como argumentos◦Recuerde que una colección es una instancia de una clase◦Siga las mismas pautas para:◦ El paso de un objeto de clase como argumento◦ La devolución de un objeto de clase de una función

Page 49: Visual Basic 2010: Classes collections e inheritance

Relacionar los elementos en Colecciones paralelas A veces es útil para almacenar datos relacionados en dos o más colecciones paralelas

Utilice un valor de clave única para relacionar los elementos de las colecciones◦ Un número de identificación o empleado, por ejemplo,◦ Por ejemplo, el siguiente código trabaja con material de las colecciones paralelas mediante el número de

empleado 55678 como valor clave

Dim hoursWorked As New Collection ' To hold hours workedDim payRates As New Collection ' To hold hourly pay rates

hoursWorked.Add(40, "55678") ' Store a value using the key valuepayRates.Add(12.5, "55678") ' Use the same key value again

' The key value is used once again when retrieving the related datasngGrossPay = hoursWorked.Item("55678") * payRate.Item("55678")

Page 50: Visual Basic 2010: Classes collections e inheritance

Enfoque en la resolución de problemas: crear la aplicación de Colección: Estudiante

Page 51: Visual Basic 2010: Classes collections e inheritance

El Formulario MainForm

-Muestra una lista de los números de identificación de los estudiantes en el cuadro de lista

-Cuando se selecciona un número de identificación, datos de los estudiantes se muestra en las etiquetas

-El botón Agregar Estudiante causa la forma AddForm a visualizar

-El botón Eliminar elimina un estudiante con el número de ID seleccionado

Page 52: Visual Basic 2010: Classes collections e inheritance

El Formulario AddForm

Permite al usuario introducir datos de los estudiantes en los cuadros de texto

El botón Agregar agrega los datos de los estudiantes a las colecciones

Page 53: Visual Basic 2010: Classes collections e inheritance

El browser de objetos

Page 54: Visual Basic 2010: Classes collections e inheritance

El browser de objetos

El Examinador de objetos es un cuadro de diálogo que muestra información acerca de los objetos

Usted puede utilizar el explorador de objetos para examinar:◦ Las clases que se han creado en su proyecto◦ Los espacios de nombres, clases y otros componentes que Visual Basic pone al

servicio de su proyecto

Page 55: Visual Basic 2010: Classes collections e inheritance

Introducción a la herencia

Page 56: Visual Basic 2010: Classes collections e inheritance

¿Qué es la herencia?

La herencia permite que nuevas clases deriven sus características de las clases existentes

La clase del estudiante puede tener varios tipos de estudiantes como◦ GraduateStudent◦ ExchangeStudent◦ StudentEmployee

Estos pueden convertirse en nuevas clases y compartir todas las características de la clase Estudiante

Cada nueva clase sería luego de añadir características especiales que los diferencian

Page 57: Visual Basic 2010: Classes collections e inheritance

Clases Base y derivadas

La clase base es una clase de propósito general que otras clases pueden basarse en◦Piense en la clase base como padre

Una clase derivada se basa en la clase base y hereda las características de ella◦Piense en la clase derivada como el niño

Page 58: Visual Basic 2010: Classes collections e inheritance

La clase base vehicle

Considere una clase de vehículo en lo siguiente:◦ Variable privada para el número de pasajeros◦ Variable privada para las millas por galón◦ Propiedad pública para el número de pasajeros (Pasajeros)◦ Propiedad pública por millas por galón (MilesPerGallon)

Esta clase contiene datos generales sobre un vehículo

Puede crear clases más especializadas de la clase Vehicle

Page 59: Visual Basic 2010: Classes collections e inheritance

La clase derivada camion

Camion deriva de la clase vehículo◦ Hereda todos los métodos no privados, propiedades y variables de clase de vehículo

Camion define dos propiedades de su propia◦ MaxCargoWeight - sostiene superior peso de la carga◦ FourWheelDrive - indica si es camión 4WD

Page 60: Visual Basic 2010: Classes collections e inheritance

Anulación de propiedades y métodos A veces, un procedimiento de propiedad de clase base o método deben trabajar de forma diferente para una clase derivada◦ Puede anular método de la clase base o propiedad◦ Usted debe escribir el método o propiedad como se desee en la clase derivada

utilizando el mismo nombre

Cuando un objeto de la clase derivada acceso a la propiedad o llama al método◦ Se utiliza la versión sustituida en clase derivada◦ La versión de la clase base no se utiliza

Page 61: Visual Basic 2010: Classes collections e inheritance

Ejemplo Anulación de Procedimiento La clase de vehículo no tiene ninguna restricción en el número de pasajeros

Pero tal vez desee restringir la clase de camiones a dos pasajeros como máximo

Puede anular en vehículo los Pasajeros a través de:◦ Codificación de pasajeros como propiedad de clase derivada◦ Especifique la palabra clave Overridable en la propiedad de la clase base◦ Especifique la palabra clave Overrides en propiedad clase derivada

Page 62: Visual Basic 2010: Classes collections e inheritance

Overridable Procedimiento de la clase Ejemplo

Public Overridable Property Passengers() As Integer Get Return intPassengers End Get Set(ByVal value As Integer) intPassengers = value End SetEnd Property

Page 63: Visual Basic 2010: Classes collections e inheritance

Procedimiento overriden propiedad de la clase Ejemplo Derivado Overrides -palabra clave y nueva lógica añade a Truck el cual es derivada un procedimiento de propiedad de clase

La palabra clave MyBase se refiere a la clase base

Public Overrides Property Passengers() As Integer Get Return MyBase.Passengers End Get Set(ByVal value As Integer) If value >= 1 And value <= 2 Then MyBase.Passengers = value Else MessageBox.Show("Passengers must be 1 or 2.", "Error") End If End SetEnd Property

Page 64: Visual Basic 2010: Classes collections e inheritance

Sustitución de métodos

El formato general de un procedimiento que anula un procedimiento de la clase base es el siguiente:

El formato general de una función que se impone a una función de clase base es como sigue:

Al reemplazar los métodos y procedimientos, recuerde que:

Una clase derivada no puede acceder a los métodos o procedimientos de propiedad en la clase base que se declaran como privada

Una clase derivada debe mantener el mismo nivel de acceso como la clase base

AccessSpecifier Overrides Sub ProcedureName() StatementsEnd Sub

AccessSpecifier Overrides Function FunctionName() As DataType StatementsEnd Sub

Page 65: Visual Basic 2010: Classes collections e inheritance

Reemplazando el método ToString

Cada clase que se crea en Visual Basic se deriva de un objeto de clase integrada llamada◦ La clase de objeto tiene un método llamado ToString◦ Puede anular este método por lo que devuelve una representación de cadena de

los datos almacenados en un objeto' Overridden ToString methodPublic Overrides Function ToString() As String ' Return a string representation of a vehicle. Dim str As String

str = "Passengers: " & intPassengers.ToString() & " MPG: " & dblMPG.ToString() Return strEnd Function

Page 66: Visual Basic 2010: Classes collections e inheritance

Clase base y Constructores clase derivada Un constructor (llamado Nuevo) puede definirse tanto para la clase base y una clase derivada

Cuando se crea un nuevo objeto de la clase derivada, se ejecutan ambos constructores◦El constructor de la clase base se llamará primero◦Luego, el constructor de la clase derivada se llamará

Page 67: Visual Basic 2010: Classes collections e inheritance

Base y clase derivada Constructores Ejemplo

Public Class Vehicle

Public Sub New() MessageBox.Show("This is the base class constructor.") End Sub ' (other properties and methods...)End Class

Public Class Truck Inherits Vehicle

Public Sub New() MessageBox.Show("This is the derived class constructor.") End Sub ' (other properties and methods...)End Class

Page 68: Visual Basic 2010: Classes collections e inheritance

Los miembros protegidos

El especificador de acceso protegido puede ser utilizado en la declaración de un miembro de la clase base, tales como las siguientes:

◦Miembros de la clase de base Protegidas son tratados como◦ Público a clases derivadas de esta base◦ Privado a clases no derivados de esta base