2009-08-26 10 views
18

¿Cómo cobraron vida estas palabras clave y conceptos? ¿Cuáles fueron las fuerzas y los problemas que los hicieron aparecer? ¿Cuál fue el primer idioma en tenerlos?Historial de modificadores de control de acceso como público/privado/protegido

En realidad, no se trata sólo de public/private/protected, sino más bien el conjunto de palabras clave que hacen cumplir algunas reglas (abstract, final, internal).

Pero, por favor, no asuma las cosas. Responda si conoce al menos parte de la respuesta o respuesta si vivió esos momentos. Las referencias son muy apreciadas.

+2

¡excelente pregunta! –

+0

Todavía necesitamos un origen para _interface_. Solo espero que no sea OLE/COM. –

+0

Realmente me sorprende la falta de información sobre este tema. Bueno, al menos no parece encontrarlo fácilmente. –

Respuesta

8

Simula (1967), considerado el primer idioma OO, tiene modificadores llamados protected and hidden. Supongo que el público es el predeterminado, no lo recuerdo. También usa virtual.

Y, con gracias a Pavel, Simula introdujeron las palabras clave más importantes (y conceptos) de clase, esta, nuevos, downcasting y de referencia tipos.

Smalltalk (1980), un lenguaje orientado a objetos más tarde, pero mucho más fundamental, nos dio Métodos responder a mensajes . Esto básicamente es la misma funcionalidad que las funciones virtuales. Los mensajes y las clases se imitaron más tarde en C (no-OO) para proporcionar el comportamiento polimórfico de la API de Windows. Pero aún necesita feos declaraciones de cambio y punteros de función para reemplazar la herencia.

El primer uso de Propiedades fue, hasta donde sé, en Delphi (Object Pascal, < 1994).

+3

Ese es el verdadero origen. "Oculto" de Simula era lo que hoy llamamos "privado", "protegido" es lo que es, y el valor predeterminado era de hecho público. Simula también introdujo los términos "clase" y "objeto" en el significado que se usan en el OOP/OOD de hoy, herencia única para clases, tanto el término como el concepto de métodos "virtuales", notación de puntos para acceso de campo y llamadas a métodos , la idea de downcasts y typewitch controlados, y la noción de que las clases son "tipos de referencia" con identidad referencial inherente (a diferencia de otros tipos que son "tipos de valor"). –

+1

Ah, me olvidé de la idea de las secuencias de E/S generalizadas como objetos, y la idea de que las transmisiones no tienen que ser solo archivos: en Simula, las cadenas en sí mismas son transmisiones (por lo que son como 'StringBuilder' Cª#). –

+2

... y también la palabra clave 'new' para instanciar objetos, y' this' para referirse al objeto mismo desde dentro de un método. –

0

este tipo de cosas comienzan con varios diseñadores de idiomas que preguntan '¿cuál es un nombre lógico simple para este concepto'? luego, con el tiempo, ciertos nombres se hacen populares (a veces porque son buenos nombres, a veces simplemente porque). agregue 20 años, y la mayoría de las personas terminan eligiendo los mismos nombres, según lo que hayan visto.

una pregunta similar, tal vez, a preguntar cómo se agregan nuevas palabras a (por ejemplo) el idioma inglés.

+1

En realidad, me interesa más el proceso que condujo a ese concepto que la elección de los nombres. Los nombres importan, pero es interesante ver qué problemas tienen en ese momento que los hizo sentir la necesidad de estos conceptos. Tal vez hubo un gran proyecto que se olvidó mientras tanto. Quién sabe. –

+1

Simula, como su nombre lo indica, era un lenguaje diseñado para la simulación de procesos: originalmente (Simula I) se centraba en "actores", pero luego los diseñadores pensaban que ese concepto se podía generalizar más, y así nacieron las clases/objetos Simula 67. –

2

público, privado y protegido access modifiers proceden de C++. It seems que público y privado ya existían en "C con clases", precursor de corta duración de C++. Esto probablemente se detalla en The design and Evolution of C++.

I think abstract y final vienen de Java e internos de C#.

+0

Gracias por el enlace. Aunque no es del todo completo, ofrece algunos antecedentes. –

0

Para C++, los orígenes de la protección privada y pública provienen de los experimentos de Stroustrup con C With Classes, pero de un sistema aún más antiguo: la computadora Cambridge CAP. Esto se describe en la sección 2.10 de "El diseño & Evolución de C++".

En cuanto a protegido, que ha tenido un pasado más sucio & No tengo una buena referencia para él.

Cuestiones relacionadas