Classes, Collections, e Inheritance
Jul 19, 2015
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
Clases y objetos
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
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
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
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
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
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
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
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
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
Creando una clase
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
El Add New Item Dialog Box
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
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
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"
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
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
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())
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
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
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
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
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
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
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
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)
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
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()
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
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
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())
Collections
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
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
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])
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
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)
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
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
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)
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
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
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)
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
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
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")
Enfoque en la resolución de problemas: crear la aplicación de Colección: Estudiante
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
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
El browser de objetos
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
Introducción a la herencia
¿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
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
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
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
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
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
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
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
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
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
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á
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
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