Tanto C # y Java son “puros” lenguajes orientados a objetos
Cualquier clase en ambos idiomas implícita (o explícita) subclases de un objeto. Esta es una muy buena idea, ya que proporciona una clase base predeterminada de una clase definida por el usuario o incorporado. C + + sólo puede simular este apoyo a través del uso de punteros void, lo que es problemático para muchas razones, incluyendo la seguridad de tipos. ¿Por qué es C # y Java, además de bueno? Bueno, por un lado, permite la creación de contenedores muy genéricas. Por ejemplo, los dos idiomas tienen clases pila predefinidos, que permiten código de aplicación para empujar cualquier objeto a una instancia de pila inicializado, a continuación, llamar pop más adelante, que elimina y devuelve la referencia al objeto superior al llamador-suena como la definición clásica de una pila . Naturalmente, esto por lo general requiere que el desarrollador para convertir la referencia aparecido de nuevo a alguna clase de objeto derivado de más específico de modo que alguna operación significativa (s) se puede realizar, pero en realidad el tipo de todos los objetos que existen en cualquier instancia de la pila debe ser realmente conocido en tiempo de compilación por el promotor de todos modos. Esto es, al menos, porque a menudo es difícil hacer algo útil con un objeto si la interfaz pública de la clase es desconocido cuando hace referencia a un objeto después apareció. (Reflexión, una característica muy potente en ambos idiomas, se puede utilizar en un objeto genérico. Pero un desarrollador sería necesario para defender fuertemente su uso en este escenario
Tanto C # y Java tienen soporte para el manejo formal de excepción, como C + +. ¿Por qué la gente siente la necesidad de manejo de excepciones, sin embargo? Después de todo, las lenguas existen que no tienen este apoyo, y los desarrolladores son capaces de escribir código con idiomas que funciona correctamente. Pero sólo porque algo funciona no significa que sea necesariamente bueno. Creación de funciones mediante el manejo formal de excepción se puede reducir en gran medida la complejidad del código en el servidor y en el cliente. Sin excepciones, las funciones deben definir y devolver un valor no válido en el lugar de un ser válida en caso de que no se cumplan las condiciones previas. Esto puede ser problemático, ya que la definición de un valor no válido puede eliminar al menos un elemento de otra manera válida en el rango de función. Y puede ser un poco incómodo ya que el cliente debe entonces comprobar el valor devuelto contra algunos inválida uno predefinido. (Otras soluciones han sido juzgados, entre ellos: 1) añadir una referencia booleana no const extra para cada llamada a la función, y haga que el método establecido en true si el éxito y false. 2) Establecer un parámetro global, por lo menos el contexto del subproceso de llamada, que define el último error que un cliente puede comprobar después de las llamadas de función. Estos son lejos de satisfacer, y pueden requerir un desarrollador de aplicaciones para tener demasiado conocimiento acerca de cómo funcionan las cosas “bajo las sábanas.”)
http://msdn.microsoft.com/en-us/library/ms836794.aspx
No comments:
Post a Comment