Preguntas Teoricas

22/12/2005 - 18:01 por Daniel H. Villa | Informe spam
Hola Grupo:

Estoy buscando información para saber que significa los siguientes
conceptos, segun son orientados a VB.Net. Ojala y alguien sepa o donde puedo
obtener información al respecto.

1.- Que es un Método Virtual.
2.- Que es una Clase Abstracta.
3.- Que es Polimorfismo.
4.- Que es una Clase Sellada.
5.- Cuales son los diferentes Modificadores de Acceso que existen.
6.- Cuales son las diferencias entre una Clase y una Estructura.
7.- Cual es la diferencia entre "Tipos por Referencia" y "Tipos por Valor".
8.- Describir en que escenarios se utilizan las palabras reservadas Out y
Ref.


Salu2 :-)))

(""'·._.·L.I. Daniel Villa·._.·'"")

Preguntas similare

Leer las respuestas

#1 Leonardo
23/12/2005 - 12:34 | Informe spam
1 - Método Virtual (Overridable ) viene a ser un puntero a una función, de
este modo un método en la clase base invoca a un método en la clase que
hereda de ella.
2 - Una clase abstracta (MustInherit ) es aquella que tiene que ser heredada
necesariamente para funcionar.
3 - Polimorfismo (Overloads). Varias funciones / métodos ... con el nombre,
distintos parámetros o valores devueltos.
4 - Sellada - NotInheritable: No se permite heredar de ella, a veces es
conveniente que así sea.
6 - Básicamente las estructuras se almacenan en el stack (uso más eficiente
en local, más pesadas como parámetros), las clases en el montón (New) cuando
se pasan a una función byVal de hecho se pasa una copia del puntero que
apunta al mismo objeto, hay más diferencias y mirate también ValueType. Las
clases representan el concepto de usar punteros sin correr riesgos.
7 - Un tipo por referencia puede ser modificado en la función llamada, por
valor es una copia (si es una clase, lo que se copia es el "puntero").
8 - Ref no me suena en Vb pero sí en c++, era una manera "elegante" de
ahorrarse el & y * para los punteros. Out también es c#.
...
Es fácil liarse entre la sintáxis de Vb y C#, observa que para cada palabra
clave en C# existe la equivalente en Vb que no coincide en nombre.
Al mirar la documentación que está bastante clara, procura elegir la opción
correspondiente aVisual Basic cuando haya varias (Class, Function)

"Daniel H. Villa" escribió en el mensaje
news:
Mostrar la cita
#2 Daniel H. Villa
23/12/2005 - 17:00 | Informe spam
Muchas gracias Leonardo por tu ayuda

Salu2 :-)))

(""'·._.·L.I. Daniel Villa·._.·'"")


"Leonardo" escribió en el mensaje
news:
Mostrar la cita
#3 Tristan
23/12/2005 - 18:36 | Informe spam
Mostrar la cita
Un método virtual es un método que admite polimorfismo. Una llamada a un
método virtual no se conoce en tiempo de compilación, no se puede saber que
método se invocará exactamente hasta el tiempo de ejecución. Se utiliza una
tabla, llamada tabla virtual de métodos, vtable, para determinar en tiempo
de ejecución a cual de los métodos posibles se debe invocar. Se corresponde
en vb.net con el modificador "Overridable".

Mostrar la cita
Una clase de la que no se pueden crear instancias. Se denominan abstractas
por que no son concretas, no tienen objetos concretos. Sólo sirven como base
para otras clases. Son algo así como la generalización de un conjunto de
clases.

Mostrar la cita
El concepto más importante de la OOP. Hay varios tipos pero el más
importante, el de herencia, permite que un mismo código invoque un método u
otro en función del tipo del objeto. Por ejemplo, si tienes una tabla de
empleados, llamara al mismo método Print desde un bucle, invocaría métodos
distintos en función del tipo de empleado.

Mostrar la cita
Una clase que no admite herencia.

Mostrar la cita
Public, Protected, Protected Friend, Private

Mostrar la cita
Es decir, diferencia entre tipos referencia y tipos valor.

Una clase se gestiona como un puntero (almacenado en pila) y los datos a los
que apunta (almacenados en el heap). Una estructura se almacena enteramente
en pila y no necesita puntero.

Al funcionar como punteros, y reservarse su espacio de forma dinámica, las
clases admiten herencia, cosa que sería imposible en las estructuras.

Al asignar una variable de tipo clase a otra, solo se asigna su referencia,
si se modifica el objeto al que apunta la una, la otra queda igualmente
modificada. En las estructuras se copia el objeto entero, con lo que
modifcar uno no afecta al otro. Lo mismo ocurre al pasarlas como parámetro.
Para las clases sólo se pasa un puntero, para las estructuras se pasa el
objeto entero (en este último caso siempre y cuando no se utiliza ByRef o
ref en c#).

La creación de una estructura es instantanea, no requiere recursos, el
acceso a los miembros es también más eficiente, puesto que no requiere un
puntero. Las instancias de clase necesitan tiempo para la asignación
dinámica de su espacio, y también para su destrucción.

Mostrar la cita
Está respondido en la pregunta anterior.

Mostrar la cita
Esto sólo tiene sentido en C#. En vb.net ambos son ByRef.

En ambos casos el parámetro se pasa como referencia (puntero),
independientemente de que sean tipo valor o tipo referencia. Out se utiliza
cuando se va a utilizar como parámetro de salida. Ref siempre que es de
entrada/salida o cuando se quiere utilizar como de entrada pero evitando
hacer copia.

No olvides que las clases son siempre tipos referencia. Prácticamente nunca
tiene sentido pasar un objeto como referencia.

Juan Carlos Badiola
MVP - C#
#4 Daniel H. Villa
28/12/2005 - 21:19 | Informe spam
Gracias Tristan por tu ayuda

Salu2 :-)))

(""'·._.·L.I. Daniel Villa·._.·'"")


"Tristan" escribió en el mensaje
news:eaclcd%
Mostrar la cita
Ads by Google
Search Busqueda sugerida