Este documento trata sobre lenguajes de programación orientados a objetos. Explica brevemente la historia de los LPOO desde Simula en 1966 hasta Java en los años 90. Luego clasifica los LPOO según Peter Wegner en tres categorías: basados en objetos, basados en clases y orientados a objetos, dependiendo del nivel de soporte para objetos, clases y herencia. Finalmente, proporciona algunos ejemplos de lenguajes para cada categoría.
Este documento presenta una introducción a la programación en C/C++. Explica brevemente la historia de los lenguajes C y C++, y describe los componentes típicos de un entorno de programación en C/C++, incluido el compilador GNU GCC y el entorno de desarrollo integrado Code::Blocks. Además, muestra cómo crear un primer programa "Hola mundo" en este entorno.
El documento resume la evolución cronológica de los lenguajes de programación desde 1953 hasta 1999. Algunos de los lenguajes más importantes mencionados son FORTRAN (1953), LISP (1959), ALGOL (1960), COBOL (1960), BASIC (1965), Pascal (1970), C (1972), C++ (1980), Java (1990s) y Visual C++ (1993). El documento proporciona fechas clave y breves descripciones sobre el propósito y características de varios de estos lenguajes históricos.
Este documento trata sobre la programación orientada a objetos. Explica conceptos básicos como clases, objetos, métodos y atributos. También cubre temas avanzados como la herencia, que permite reutilizar código de clases padre, y el polimorfismo, que permite que una variable se refiera a objetos de clases relacionadas. Además, incluye una breve historia de los lenguajes orientados a objetos y ejemplos de implementación de clases como Punto y Segmento.
Este documento describe la historia y evolución de los lenguajes de programación. Explica que los primeros lenguajes surgieron con Charles Babbage y Ada Lovelace en el siglo XIX. Luego, clasifica los lenguajes en cuatro niveles: lenguaje máquina, ensamblador, de alto nivel e intérpretes. Finalmente, compara las ventajas e inconvenientes de los lenguajes de bajo y alto nivel.
El documento describe la historia y evolución de los lenguajes de programación. Comenzó con lenguajes de códigos en máquinas como la máquina de tejer de Jacquard en 1801 y los primeros programas escritos por Ada Lovelace en 1843. En las décadas de 1940 y 1950 se desarrollaron los primeros lenguajes de programación modernos como FORTRAN, LISP y COBOL. En las décadas siguientes surgieron lenguajes innovadores que establecieron nuevos paradigmas como Simula, C, Smalltalk y Prolog. La investigación
Visual FoxPro es un sistema de desarrollo de bases de datos orientado a objetos que deriva de FoxPro y Fox BASE. Fue adquirido por Microsoft en 1992 y pasó a formar parte de Visual Studio. Ha tenido varias versiones desde la 3.0 hasta la 9.0, agregando nuevas características y compatibilidad con otras tecnologías de Microsoft. Permite crear formularios, bases de datos, informes, vistas y proyectos, además de incluir un potente motor de base de datos y lenguaje de programación orientado a objetos.
Este documento proporciona una introducción a Visual FoxPro, incluyendo definiciones de términos clave como objetos, clases, métodos, eventos y programación orientada a objetos. Explica los pasos básicos de la programación y los tipos de datos fundamentales en Visual FoxPro como caracteres, moneda, fecha y lógicos. Además, destaca la importancia de los datos y campos en las aplicaciones.
Este documento presenta una introducción a la programación en C/C++. Explica brevemente la historia de los lenguajes C y C++, y describe los componentes típicos de un entorno de programación en C/C++, incluido el compilador GNU GCC y el entorno de desarrollo integrado Code::Blocks. Además, muestra cómo crear un primer programa "Hola mundo" en este entorno.
El documento resume la evolución cronológica de los lenguajes de programación desde 1953 hasta 1999. Algunos de los lenguajes más importantes mencionados son FORTRAN (1953), LISP (1959), ALGOL (1960), COBOL (1960), BASIC (1965), Pascal (1970), C (1972), C++ (1980), Java (1990s) y Visual C++ (1993). El documento proporciona fechas clave y breves descripciones sobre el propósito y características de varios de estos lenguajes históricos.
Este documento trata sobre la programación orientada a objetos. Explica conceptos básicos como clases, objetos, métodos y atributos. También cubre temas avanzados como la herencia, que permite reutilizar código de clases padre, y el polimorfismo, que permite que una variable se refiera a objetos de clases relacionadas. Además, incluye una breve historia de los lenguajes orientados a objetos y ejemplos de implementación de clases como Punto y Segmento.
Este documento describe la historia y evolución de los lenguajes de programación. Explica que los primeros lenguajes surgieron con Charles Babbage y Ada Lovelace en el siglo XIX. Luego, clasifica los lenguajes en cuatro niveles: lenguaje máquina, ensamblador, de alto nivel e intérpretes. Finalmente, compara las ventajas e inconvenientes de los lenguajes de bajo y alto nivel.
El documento describe la historia y evolución de los lenguajes de programación. Comenzó con lenguajes de códigos en máquinas como la máquina de tejer de Jacquard en 1801 y los primeros programas escritos por Ada Lovelace en 1843. En las décadas de 1940 y 1950 se desarrollaron los primeros lenguajes de programación modernos como FORTRAN, LISP y COBOL. En las décadas siguientes surgieron lenguajes innovadores que establecieron nuevos paradigmas como Simula, C, Smalltalk y Prolog. La investigación
Visual FoxPro es un sistema de desarrollo de bases de datos orientado a objetos que deriva de FoxPro y Fox BASE. Fue adquirido por Microsoft en 1992 y pasó a formar parte de Visual Studio. Ha tenido varias versiones desde la 3.0 hasta la 9.0, agregando nuevas características y compatibilidad con otras tecnologías de Microsoft. Permite crear formularios, bases de datos, informes, vistas y proyectos, además de incluir un potente motor de base de datos y lenguaje de programación orientado a objetos.
Este documento proporciona una introducción a Visual FoxPro, incluyendo definiciones de términos clave como objetos, clases, métodos, eventos y programación orientada a objetos. Explica los pasos básicos de la programación y los tipos de datos fundamentales en Visual FoxPro como caracteres, moneda, fecha y lógicos. Además, destaca la importancia de los datos y campos en las aplicaciones.
Este documento clasifica y describe diferentes estilos de programación y sus lenguajes asociados. Presenta una clasificación de los lenguajes por tipo de solución, generaciones, y procesos. También describe conceptos clave de los estilos imperativo, orientado a objetos y lógico o declarativo.
A finales de los 70, la ""prohibición"" del uso de la instrucción de salto ""go to"" en lenguajes de alto nivel propició un desarrollo de código más legible, mantenible y mejorable bajo el paradigma de la programación estructurada. El uso de bucles tipo while, until y for permitieron a los programadores ser mucho más eficientes y evitar el código espagueti típico de lenguajes lineales como el basic.
Pero los computadores utilizados en la época disponían de un solo procesador.
En la actualidad, aunque disponemos de varios procesadores o núcleos para ejecutar cualquier programa, incluso en entornos personales, el estilo de programación actual hace que se saque poco partido a estos recursos, siendo secuencial la mayoría del código que nuestros estudiantes generan, y haciendo difícil la paralelización del mismo.
En esta charla se plantea la conveniencia de la prohibición del ""bucle"" como una de las estructuras básicas de programación, para permitir desarrollar un pensamiento paralelo abstracto desde el principio, y que utilizando algunas de las ventajas del paradigma funcional permita la generación de código paralelo de forma natural por los nuevos programadores.
Línea de-tiempo-del-lenguaje-de-programaciónArmandoC42
Este documento presenta una línea de tiempo de la historia de los lenguajes de programación. Comienza con el lenguaje ensamblador en 1950 y concluye con Groovy en 2007. Entre medias se describen lenguajes como Fortran, Lisp, Algol, COBOL, BASIC, Pascal, C, C++, HTML y Python. El documento concluye que los lenguajes de programación se utilizan para resolver problemas y dar órdenes a las computadoras.
Este prólogo presenta la carrera de Ingeniería en Sistemas y describe la importancia del estudio de los Lenguajes Formales y Teoría de Autómatas (LFTA). LFTA es un campo científico clásico y multidisciplinario que sienta las bases para campos como la algoritmia y la computabilidad. Además, el estudio de LFTA permite entender la estructuración de los lenguajes de programación y es útil para el diseño de lenguajes y compiladores.
El documento presenta una introducción a los diferentes lenguajes de programación, incluyendo su origen e historia. Explica conceptos como los niveles de lenguaje, la programación orientada a objetos y los lenguajes más utilizados. Finaliza con conclusiones y referencias bibliográficas.
Ambiente virtual y Lenguaje de Domino Específico para la enseñanza de la prog...José Albert
Este documento discute el uso de ambientes virtuales y lenguajes de programación específicos de dominio para la enseñanza de la programación. Propone comenzar con Scratch para enseñar conceptos básicos de una manera interactiva y visual antes de pasar a un lenguaje de programación de propósito general. También recomienda utilizar objetos para explicar conceptos clave de programación orientada a objetos como mensajes y métodos.
Java es un lenguaje de programación orientado a objetos desarrollado por Sun Microsystems en los años 90 que toma su sintaxis de C y C++ pero tiene un modelo de objetos más simple y elimina herramientas de bajo nivel como punteros. Las aplicaciones Java se compilan típicamente a bytecode que luego es interpretado o compilado a código nativo para su ejecución. C es un lenguaje débilmente tipificado de medio nivel con características de bajo nivel y que permite mezclar código en ensamblador. Lisp es una
Java es un lenguaje de programación orientado a objetos desarrollado por Sun Microsystems en los años 90 que toma su sintaxis de C y C++ pero tiene un modelo de objetos más simple y elimina herramientas de bajo nivel como punteros. Las aplicaciones Java son típicamente compiladas a bytecode e interpretadas o compiladas a código nativo en tiempo de ejecución. C es un lenguaje débilmente tipificado de medio nivel con características de bajo nivel y estructuras de alto nivel, y los compiladores suelen ofrecer extensiones
El c++ por la práctica, introducción al lenguaje y su filoso prevjtk1
Este documento presenta un libro sobre programación en C++ dirigido a personas sin experiencia previa en programación. El libro utiliza un enfoque práctico mediante fichas de trabajo que contienen ejemplos y ejercicios de programación en lugar de un texto tradicional. El objetivo es familiarizar al lector con la programación en C++ de una manera práctica y gradual.
Este documento describe brevemente la historia de los lenguajes de programación desde 1940 hasta la actualidad. Los primeros lenguajes eran códigos especializados dependientes del hardware. En la década de 1940 se crearon las primeras computadoras modernas, forzando a los programadores a escribir programas en secuencias de código. Desde entonces, los lenguajes han evolucionado con los sistemas operativos, incluyendo lenguajes pioneros como FORTRAN, COBOL, LISP, y más recientemente lenguajes orientados a objetos.
Este documento describe la historia y tipos de lenguajes de programación. Explica que hay cuatro niveles de lenguajes de programación: declarativos, de alto nivel, ensambladores y de máquina. También presenta una línea de tiempo que muestra la evolución de lenguajes importantes como FORTRAN, COBOL, ALGOL, LISP, Pascal y C a través de las décadas. Finalmente, discute brevemente las características de la sintaxis y semántica de los lenguajes de programación.
Lógica De La Programación Y Lenguaje de PascalFernando Galvez
El documento trata sobre la programación lógica y el lenguaje de programación Pascal. Explica que la programación lógica permite formalizar hechos y reglas para establecer hipótesis y responder preguntas de manera deductiva. También describe a Pascal como un lenguaje estructurado y tipado fuertemente desarrollado en los años 1970 que sigue utilizándose hoy gracias a herramientas modernas.
Este documento presenta una introducción al lenguaje de programación C++. Explica conceptos básicos como programa, función, tokens y tipos de datos. Incluye un índice con 10 secciones que cubren temas como constantes, operadores, control de flujo, tipos de datos derivados, funciones, entrada/salida y el preprocesador. El objetivo es proporcionar una base para aprender a programar en C++.
Este documento presenta una introducción al lenguaje de programación C++. Explica conceptos básicos como programa, función, tokens y tipos de datos. También describe características del lenguaje como compiladores, preprocesadores y librerías estándar. Finalmente, incluye un índice de los temas que se cubrirán en el resto del documento.
Este documento presenta una introducción al lenguaje de programación C++. Explica conceptos básicos como programa, función, tokens y tipos de datos. Incluye un índice con 10 secciones que cubren temas como constantes, operadores, control de flujo, tipos de datos derivados, funciones, entrada/salida y el preprocesador. El objetivo es proporcionar una base para aprender a programar en C++.
Este documento presenta una introducción al lenguaje de programación C++. Explica conceptos básicos como programa, función, tokens y tipos de datos. También describe elementos del lenguaje como operadores, expresiones, sentencias de control de flujo, tipos de datos derivados, funciones, flujos de entrada/salida y el preprocesador. El documento contiene un índice detallado de los temas cubiertos.
El seminario destacó la importancia de que los gobiernos locales y regionales tomen decisiones para gestionar mejor los cambios climáticos y reducir riesgos de desastres. La sequía en la región de Puno amenaza al sector agropecuario, disminuyendo los rendimientos de cultivos, pastos y ganado, y poniendo en riesgo la seguridad alimentaria. Se proponen estrategias como el uso eficiente del agua, cultivos resistentes, protección de suelos y sistemas silvopastoriles para reducir los ries
Este documento presenta una introducción a las nuevas etiquetas semánticas de HTML5 como <header>, <nav>, <section>, <article>, <aside> y <footer>. Estas etiquetas reemplazan el uso de <div> para darle significado semántico a las diferentes secciones de una página web como la cabecera, navegación, contenido principal, contenido relacionado y pie de página. El documento también incluye un ejemplo de cómo usar estas etiquetas en la estructura básica de un blog construido con HTML5.
Este documento clasifica y describe diferentes estilos de programación y sus lenguajes asociados. Presenta una clasificación de los lenguajes por tipo de solución, generaciones, y procesos. También describe conceptos clave de los estilos imperativo, orientado a objetos y lógico o declarativo.
A finales de los 70, la ""prohibición"" del uso de la instrucción de salto ""go to"" en lenguajes de alto nivel propició un desarrollo de código más legible, mantenible y mejorable bajo el paradigma de la programación estructurada. El uso de bucles tipo while, until y for permitieron a los programadores ser mucho más eficientes y evitar el código espagueti típico de lenguajes lineales como el basic.
Pero los computadores utilizados en la época disponían de un solo procesador.
En la actualidad, aunque disponemos de varios procesadores o núcleos para ejecutar cualquier programa, incluso en entornos personales, el estilo de programación actual hace que se saque poco partido a estos recursos, siendo secuencial la mayoría del código que nuestros estudiantes generan, y haciendo difícil la paralelización del mismo.
En esta charla se plantea la conveniencia de la prohibición del ""bucle"" como una de las estructuras básicas de programación, para permitir desarrollar un pensamiento paralelo abstracto desde el principio, y que utilizando algunas de las ventajas del paradigma funcional permita la generación de código paralelo de forma natural por los nuevos programadores.
Línea de-tiempo-del-lenguaje-de-programaciónArmandoC42
Este documento presenta una línea de tiempo de la historia de los lenguajes de programación. Comienza con el lenguaje ensamblador en 1950 y concluye con Groovy en 2007. Entre medias se describen lenguajes como Fortran, Lisp, Algol, COBOL, BASIC, Pascal, C, C++, HTML y Python. El documento concluye que los lenguajes de programación se utilizan para resolver problemas y dar órdenes a las computadoras.
Este prólogo presenta la carrera de Ingeniería en Sistemas y describe la importancia del estudio de los Lenguajes Formales y Teoría de Autómatas (LFTA). LFTA es un campo científico clásico y multidisciplinario que sienta las bases para campos como la algoritmia y la computabilidad. Además, el estudio de LFTA permite entender la estructuración de los lenguajes de programación y es útil para el diseño de lenguajes y compiladores.
El documento presenta una introducción a los diferentes lenguajes de programación, incluyendo su origen e historia. Explica conceptos como los niveles de lenguaje, la programación orientada a objetos y los lenguajes más utilizados. Finaliza con conclusiones y referencias bibliográficas.
Ambiente virtual y Lenguaje de Domino Específico para la enseñanza de la prog...José Albert
Este documento discute el uso de ambientes virtuales y lenguajes de programación específicos de dominio para la enseñanza de la programación. Propone comenzar con Scratch para enseñar conceptos básicos de una manera interactiva y visual antes de pasar a un lenguaje de programación de propósito general. También recomienda utilizar objetos para explicar conceptos clave de programación orientada a objetos como mensajes y métodos.
Java es un lenguaje de programación orientado a objetos desarrollado por Sun Microsystems en los años 90 que toma su sintaxis de C y C++ pero tiene un modelo de objetos más simple y elimina herramientas de bajo nivel como punteros. Las aplicaciones Java se compilan típicamente a bytecode que luego es interpretado o compilado a código nativo para su ejecución. C es un lenguaje débilmente tipificado de medio nivel con características de bajo nivel y que permite mezclar código en ensamblador. Lisp es una
Java es un lenguaje de programación orientado a objetos desarrollado por Sun Microsystems en los años 90 que toma su sintaxis de C y C++ pero tiene un modelo de objetos más simple y elimina herramientas de bajo nivel como punteros. Las aplicaciones Java son típicamente compiladas a bytecode e interpretadas o compiladas a código nativo en tiempo de ejecución. C es un lenguaje débilmente tipificado de medio nivel con características de bajo nivel y estructuras de alto nivel, y los compiladores suelen ofrecer extensiones
El c++ por la práctica, introducción al lenguaje y su filoso prevjtk1
Este documento presenta un libro sobre programación en C++ dirigido a personas sin experiencia previa en programación. El libro utiliza un enfoque práctico mediante fichas de trabajo que contienen ejemplos y ejercicios de programación en lugar de un texto tradicional. El objetivo es familiarizar al lector con la programación en C++ de una manera práctica y gradual.
Este documento describe brevemente la historia de los lenguajes de programación desde 1940 hasta la actualidad. Los primeros lenguajes eran códigos especializados dependientes del hardware. En la década de 1940 se crearon las primeras computadoras modernas, forzando a los programadores a escribir programas en secuencias de código. Desde entonces, los lenguajes han evolucionado con los sistemas operativos, incluyendo lenguajes pioneros como FORTRAN, COBOL, LISP, y más recientemente lenguajes orientados a objetos.
Este documento describe la historia y tipos de lenguajes de programación. Explica que hay cuatro niveles de lenguajes de programación: declarativos, de alto nivel, ensambladores y de máquina. También presenta una línea de tiempo que muestra la evolución de lenguajes importantes como FORTRAN, COBOL, ALGOL, LISP, Pascal y C a través de las décadas. Finalmente, discute brevemente las características de la sintaxis y semántica de los lenguajes de programación.
Lógica De La Programación Y Lenguaje de PascalFernando Galvez
El documento trata sobre la programación lógica y el lenguaje de programación Pascal. Explica que la programación lógica permite formalizar hechos y reglas para establecer hipótesis y responder preguntas de manera deductiva. También describe a Pascal como un lenguaje estructurado y tipado fuertemente desarrollado en los años 1970 que sigue utilizándose hoy gracias a herramientas modernas.
Este documento presenta una introducción al lenguaje de programación C++. Explica conceptos básicos como programa, función, tokens y tipos de datos. Incluye un índice con 10 secciones que cubren temas como constantes, operadores, control de flujo, tipos de datos derivados, funciones, entrada/salida y el preprocesador. El objetivo es proporcionar una base para aprender a programar en C++.
Este documento presenta una introducción al lenguaje de programación C++. Explica conceptos básicos como programa, función, tokens y tipos de datos. También describe características del lenguaje como compiladores, preprocesadores y librerías estándar. Finalmente, incluye un índice de los temas que se cubrirán en el resto del documento.
Este documento presenta una introducción al lenguaje de programación C++. Explica conceptos básicos como programa, función, tokens y tipos de datos. Incluye un índice con 10 secciones que cubren temas como constantes, operadores, control de flujo, tipos de datos derivados, funciones, entrada/salida y el preprocesador. El objetivo es proporcionar una base para aprender a programar en C++.
Este documento presenta una introducción al lenguaje de programación C++. Explica conceptos básicos como programa, función, tokens y tipos de datos. También describe elementos del lenguaje como operadores, expresiones, sentencias de control de flujo, tipos de datos derivados, funciones, flujos de entrada/salida y el preprocesador. El documento contiene un índice detallado de los temas cubiertos.
El seminario destacó la importancia de que los gobiernos locales y regionales tomen decisiones para gestionar mejor los cambios climáticos y reducir riesgos de desastres. La sequía en la región de Puno amenaza al sector agropecuario, disminuyendo los rendimientos de cultivos, pastos y ganado, y poniendo en riesgo la seguridad alimentaria. Se proponen estrategias como el uso eficiente del agua, cultivos resistentes, protección de suelos y sistemas silvopastoriles para reducir los ries
Este documento presenta una introducción a las nuevas etiquetas semánticas de HTML5 como <header>, <nav>, <section>, <article>, <aside> y <footer>. Estas etiquetas reemplazan el uso de <div> para darle significado semántico a las diferentes secciones de una página web como la cabecera, navegación, contenido principal, contenido relacionado y pie de página. El documento también incluye un ejemplo de cómo usar estas etiquetas en la estructura básica de un blog construido con HTML5.
Este documento describe las características y funcionalidades del paquete de oficina Microsoft Office 365. Incluye programas como Word, Excel, PowerPoint, Outlook y OneDrive. Explica que Office 365 se alquila por un año y permite el acceso a los programas desde cualquier dispositivo. También incluye instrucciones paso a paso para crear documentos en Word, agregar formato a texto e imágenes, crear tablas y encabezados, e insertar referencias y citas bibliográficas.
Este documento trata sobre el emprendimiento en la era del conocimiento. Brevemente describe cómo la sociedad actual es una sociedad de la información basada en el conocimiento, la innovación y la tecnología. También resalta la importancia de la innovación para las empresas y la necesidad de que los países mejoren sus indicadores de innovación para ser más competitivos a nivel global.
Este documento presenta los fundamentos de la programación. Explica conceptos clave como informática, computadoras, hardware, software, programación e historia de los lenguajes de programación. También introduce conceptos de sintaxis y semántica de los lenguajes de programación y presenta un primer programa "Hola Mundo" en C++.
El documento presenta organizadores visuales sobre las corrientes contemporáneas de la educación en un curso de Planificación Curricular Universitaria impartido en la Universidad Nacional del Altiplano, Facultad de Ciencias de la Educación, Programa de Segunda Especialidad.
Este documento es un reporte de un estudiante de la Universidad Nacional del Altiplano en la Facultad de Ciencias de la Educación. El estudiante se llama Aldo Zanabria Gálvez y está cursando la Unidad de Segunda Especialidad.
El documento discute la importancia del aprendizaje mutuo entre maestro y alumno, y propone una metodología de enseñanza basada en formas sociales, esquemas de acción y pasos de la enseñanza que constituyen una amplia forma metódica. También critica las tradiciones educativas centradas en el maestro más que en el aprendizaje del alumno. Finalmente, argumenta que la enseñanza debe adaptarse a los cambios sociales y hacer un uso efectivo de las nuevas tecnologías para apoyar contextos
El documento discute las diferentes escuelas de pensamiento en didáctica, incluyendo la escuela anglosajona que busca estandarizar los contenidos, la escuela alemana que se enfoca en lo formativo y la normativa estatal, la escuela francesa que aplica métodos científicos, la escuela soviética con énfasis colectivo y descentralización del maestro, y la escuela latinoamericana que evalúa la diversidad cultural. Concluye que mientras las primeras escuelas enfatizan más lo político, las últimas
Los carolinos del milenio pasado nacieron entre 1980 y 1989. Jugaban en la calle y disfrutaban programas como "Las Tortugas Ninja" y "Los Pitufos". Creían que eran la última generación cuerda porque crecieron sin mucha tecnología pero se divertían igual. Ahora se reúnen en Facebook y aseguran que fueron felices en esa época.
El documento habla sobre la carrera de Ingeniería de Sistemas en la Universidad Nacional. Explica que a pesar de ser una carrera relativamente nueva, es importante para preparar recursos humanos calificados en informática. También define la naturaleza de la profesión de Ingeniería de Sistemas y discute las aplicaciones e importancia de esta carrera para el desarrollo del país. Finalmente, presenta estadísticas sobre la carrera e información sobre sus objetivos.
Este documento describe las principales fuentes de energía renovable en Perú, incluyendo energía hidroeléctrica, solar, eólica, biomasa y geotérmica. Explica sus ventajas y el potencial de cada recurso en el país. También resume el marco normativo para promover la generación eléctrica con energías renovables a través de subastas, donde se otorgan contratos de concesión de 20 años con una tarifa garantizada. El objetivo es mejorar la calidad de vida y proteger el medio ambiente mediante la inversión en
El documento describe los diferentes tipos de variables que pueden utilizarse en una investigación. Explica que las variables pueden ser cualitativas o cuantitativas, individuales o colectivas, y nominales, ordinales o de intervalo/razón dependiendo de la escala de medición. También distingue entre variables independientes, dependientes e indicadores operacionales.
En 3 oraciones o menos:
El documento presenta información sobre un diplomado especializado en gestión pública de gobiernos regionales y locales. Incluye definiciones de siglas comunes, diagramas de la estructura y niveles de articulación de los gobiernos, y discute conceptos como diseño institucional, desarrollo organizacional municipal y nueva gestión pública.
Este documento describe el marco legal y las funciones de la Autoridad Nacional del Agua (ANA) en Perú relacionadas con la gestión de la calidad del agua. La ANA es responsable de clasificar los cuerpos de agua, autorizar los vertimientos de aguas residuales tratadas, y realizar el monitoreo y vigilancia de la calidad del agua a nivel nacional. El documento también explica los procedimientos para obtener una autorización de vertimiento de aguas residuales tratadas de acuerdo con la legislación peruana.
Este documento resume las principales herramientas digitales que pueden ser útiles para el emprendimiento turístico. Incluye plataformas como WordPress, Facebook, TripAdvisor y Booking que pueden usarse para crear sitios web, realizar publicidad y reservas. También describe software como CRM y gestores de procesos que pueden usarse para administrar clientes, tareas y operaciones. Finalmente, menciona algunos servicios y aplicaciones desarrollados por GrupoSistemas para el sector turístico.
Este documento describe brevemente algunos componentes básicos de una computadora como el interruptor, la memoria y el procesador. Explica que el interruptor puede abrir o cerrar un circuito eléctrico para conectar o desconectar líneas telefónicas. La memoria se usa para almacenar datos en celdas direccionables. El procesador es el circuito integrado que procesa la información y controla las demás partes de la computadora. También menciona algunos dispositivos de entrada y salida como teclados,
Este documento describe un foro panel sobre la importancia y representatividad política de la mujer trabajadora que se llevará a cabo en Puno, Perú. El foro se centrará en promover la participación activa de las mujeres en la sociedad y generar mayor liderazgo femenino a nivel local, regional y nacional. Se presentarán ponencias sobre el pasado, presente y futuro de la mujer trabajadora, su realidad socioeconómica, y la ideología de la emancipación femenina. El evento contará con debates, intercambio de experiencias
Este documento presenta el marco normativo referencial existente para realizar tasaciones de bienes inmuebles en Perú. Incluye regulaciones como el Reglamento Nacional de Tasaciones, el Código Civil, el Código de Procedimientos Civiles, entre otros. También define términos clave relacionados a tasaciones como predio urbano, edificación, depreciación, valor comercial, entre otros. Finalmente, resume los componentes requeridos en un informe de tasación para predios urbanos como la memoria descriptiva, tasación del terreno, edificaciones y
El documento trata sobre la producción en empresas turísticas. Explica las características de la producción de servicios y las específicas de las empresas turísticas. Define el sistema de producción como el proceso de transformar insumos en productos a través de entradas, procesos de transformación y salidas. Finalmente, cubre la administración y control de la producción a través de objetivos, decisiones y presupuestos.
2. Tema 1: Lenguajes de Programación Orientados a Objetos
Esquema
1. Historia y evolución
2. Clasificación
3. Características
4. Revisión general de algunos LPOO
representativos
5. Referencias
6. Lecturas complementarias
Departamento de Informática y Automática - Universidad de Salamanca 3
1. Historia y Evolución
Departamento de Informática y Automática - Universidad de Salamanca 4
Departamento de Informática y Automática - Universidad de Salamanca 2
3. Tema 1: Lenguajes de Programación Orientados a Objetos
1.1 Historia de los LPOO
1966 Simula
1970 ••La historia de los LPOO comienza
La historia de los LPOO comienza
Smalltalk 72 a finales de los años 60, con el lenguaje
a finales de los años 60, con el lenguaje
1980 Smalltalk 80 Simula, diseñado en el Norwegian Computing
Simula, diseñado en el Norwegian Computing
C++ Centre
Centre
Objective-C ••Durante la década de los 70s la poca actividad
Durante la década de los 70s la poca actividad
en el tema la monopoliza Smalltalk
en el tema la monopoliza Smalltalk
Eiffel
••La década de los 80s supone un nuevo auge para
La década de los 80s supone un nuevo auge para
1990
OO COBOL la POO
la POO
ADA 95 ••Entre 1980 yy1983 Stroustrup desarrolla C++
Entre 1980 1983 Stroustrup desarrolla C++
SQL3 ••En la década de los 90s se produce la explosión
En la década de los 90s se produce la explosión
total de las tecnologías orientadas al objeto
total de las tecnologías orientadas al objeto
Delphi
Java
Departamento de Informática y Automática - Universidad de Salamanca 5
1.1 Historia de los LPOO
CPL
Algol 60
BCPL
COBOL CLU Pascal Algol 68
Simula 67 C
OO COBOL ADA 83
Smalltalk 72
ADA 95
LISP Actor
Object C++ Eiffel
Pascal FLAVORS
Smalltalk 80
Objective C
Delphi LOOPS
Java
CLOS
Evolución de los LPOO
Departamento de Informática y Automática - Universidad de Salamanca 6
Departamento de Informática y Automática - Universidad de Salamanca 3
4. Tema 1: Lenguajes de Programación Orientados a Objetos
2. Clasificación de los LPOO
Departamento de Informática y Automática - Universidad de Salamanca 7
2.1 Introducción
Existen varias clasificaciones de los LPOO,
atendiendo a criterios de construcción o
características específicas de los mismos
• Clasificación de Peter Wegner
• Clasificación de Tesler
• Clasificación según el origen
Departamento de Informática y Automática - Universidad de Salamanca 8
Departamento de Informática y Automática - Universidad de Salamanca 4
5. Tema 1: Lenguajes de Programación Orientados a Objetos
2.2 Clasificación de
Wegner
• Lenguajes Basados en Objetos: Soportan objetos. Es decir,
disponen de componentes caracterizados por un conjunto de
operaciones (comportamiento) y un estado
• Lenguajes Basados en Clases: Disponen, además de objetos,
de componentes tipo clase con operaciones y estado común
• Lenguajes Orientados al Objeto: Además de objetos y clases
ofrecen mecanismos de herencia
[Wegner, 1987]
Departamento de Informática y Automática - Universidad de Salamanca 9
2.2 Clasificación de
Wegner
Objetos Basado en + Clases
Objetos
Ada 83
Clipper 5.2 Basado en + Herencia
Clases
CLU
Orientado al
• Basado en objeto = encapsulamiento + Objeto
identidad de objetos Ada 95
• Basado en clases = basado en objetos + C++
Eiffel
abstracción de conjunto Smalltalk
Delphi
• Orientados a objetos = Basados en clases +
herencia + autorrecursión
Departamento de Informática y Automática - Universidad de Salamanca 10
Departamento de Informática y Automática - Universidad de Salamanca 5
6. Tema 1: Lenguajes de Programación Orientados a Objetos
2.3 Clasificación de Tesler
Orientados al Orientados al
proceso objeto
POSL OOSL
Process-Oriented Object-Oriented
Estático Static Languages Static Languages
Pascal, C C++, Java
PODL OODL
Process-Oriented Object-Oriented
Dinámico Dinamic Languages Dinamic Languages
Lisp, Scheme Smalltalk, Dylan
[Tesler, 1993]
Departamento de Informática y Automática - Universidad de Salamanca 11
2.3 Clasificación de Tesler
Un sistema de tipos son las reglas que establecen la
utilización de los tipos su corrección en un lenguaje
de modelado o realización
Departamento de Informática y Automática - Universidad de Salamanca 12
Departamento de Informática y Automática - Universidad de Salamanca 6
7. Tema 1: Lenguajes de Programación Orientados a Objetos
2.3 Clasificación de Tesler
Monomórficos
MOMENTO
Sistemas de tipos
del CHEQUEO
[Cardelli and Wegner, 1985] Polimórficos
Estática
dinámico Ligadura
Dinámica
Smalltalk
estático
Eiffel, CAML
Pascal OO
C++
declaración inferencia
FORMA
estricta
débil
sin tipos
RIGUROSIDAD
Departamento de Informática y Automática - Universidad de Salamanca 13
2.3 Clasificación de Tesler
• Beneficios del uso de lenguajes con tipos
estrictos
– Evitan los fallos en tiempo de ejecución
derivados de conflictos con los tipos
– Detección temprana en tiempo de compilación
de errores
– Declaración de tipos como ayuda para la
documentación
– Eficiencia en el código [Tesler, 1981]
Departamento de Informática y Automática - Universidad de Salamanca 14
Departamento de Informática y Automática - Universidad de Salamanca 7
8. Tema 1: Lenguajes de Programación Orientados a Objetos
2.3 Clasificación de Tesler
Tipificación o tipado (“typing”) es el proceso de
Tipificación o tipado (“typing”) es el proceso de
declarar cuál es el tipo de información que puede
declarar cuál es el tipo de información que puede
contener una variable
contener una variable
Sistemas de tipos estáticos Sistemas de tipos dinámicos
• También llamados sistemas con • También llamados sistemas con tipado
tipado fuerte o estricto débil,no estricto o dinámico
• Exigen asociación explícita de un tipo • No exigen asociación explícita de un tipo
a cada nombre declarado a cada variable
• El tipo de cada objeto se ha de determinar • Cada objeto conoce su tipo cuando se crea
con anterioridad a la ejecución del programa durante la ejecución
• Menos flexible pero más segura • Más flexibilidad
• Ejecución más eficiente al no tener que • Pérdida de eficiencia durante la ejecución del
hacer comprobación de tipos en tiempo de programa, debida a la necesidad de mantener
ejecución y comprobar el tipo de todos los objetos
durante la ejecución
Departamento de Informática y Automática - Universidad de Salamanca 15
2.3 Clasificación de Tesler
Ligadura es el proceso de asociar un atributo a un nombre.
En el caso de las funciones, el término ligadura (binding) se
refiere a la conexión o enlace entre una llamada a función
y el código real ejecutado como resultado de la llamada
[Joyanes, 1998]
Ligadura dinámica o
tardía
Ligadura estática o
temprana
Departamento de Informática y Automática - Universidad de Salamanca 16
Departamento de Informática y Automática - Universidad de Salamanca 8
9. Tema 1: Lenguajes de Programación Orientados a Objetos
2.3 Clasificación de Tesler
• Ligadura estática o temprana
– Resuelve las correspondencias en tiempo de compilación
– No hay sobrecarga en tiempo de ejecución y los fallos se detectan
en tiempo de compilación
– Los enlaces no pueden hacerse sin volver a compilar
• Ligadura dinámica o tardía
– La correspondencia se hace al invocar los métodos
– Soporta la evolución de los programas sin tener que recompilar
– Coste en tiempo de ejecución
Departamento de Informática y Automática - Universidad de Salamanca 17
2.3 Clasificación de Tesler
Comprobación Comprobación
Estática Dinámica
Ligadura Garantía de corrección, Combinación no válida
Estática interpretación inflexible (Sin sentido)
C, Cobol
Ligadura Garantía de corrección, No hay garantía de
Dinámica Interpretación flexible corrección,
interpretación flexible
C++, Object Pascal Smalltalk
Departamento de Informática y Automática - Universidad de Salamanca 18
Departamento de Informática y Automática - Universidad de Salamanca 9
10. Tema 1: Lenguajes de Programación Orientados a Objetos
2.3 Clasificación según el
Origen
Lenguajes Puros Lenguajes Híbridos
Objetos Objetos
Mensajes Mensajes
Clases Clases
Smalltalk +
Eiffel
Lenguajes
con base
tradicional
C++
Object Pascal
Departamento de Informática y Automática - Universidad de Salamanca 19
2.3 Clasificación según el
Origen
Lenguajes Puros Lenguajes Híbridos
Ventajas Desventajas Ventajas Desventajas
• Obligan a seguir los • En general, son menos • Rápidos • Pierden con frecuencia
principios del paradigma rápidos que los híbridos • Permiten una mayor alguna característica
objetual • Son difíciles de codificar integración con el entorno del paradigma objetual
• Proporcionan su máxima en toda clase de operaciones existente • No permiten modificar
flexibilidad para cambiar fundamentales • Los programadores pueden las características de
los aspectos esenciales del • Pérdida de eficiencia en seguir siendo productivos construcción del
lenguaje tiempo de ejecución mientras aprenden las lenguaje base
extensiones orientadas al
objeto
Departamento de Informática y Automática - Universidad de Salamanca 20
Departamento de Informática y Automática - Universidad de Salamanca 10
11. Tema 1: Lenguajes de Programación Orientados a Objetos
3. Características de los
LPOO
Departamento de Informática y Automática - Universidad de Salamanca 21
3.1 Elementos Concretos
• Objetos • Polimorfismo
• Clases • Excepciones
• Herencia simple • Concurrencia
• Herencia múltiple • Persistencia
• Comprobación estricta de • Metadatos
tipos frente a comprobación débil • Afirmaciones y restricciones
• Encapsulamiento • Bibliotecas de clases
• Empaquetamiento • Eficiencia
• Genericidad • Administración de memoria
• Paso de mensajes • Entorno de desarrollo
[Rumbaugh et al., 1991]
Departamento de Informática y Automática - Universidad de Salamanca 22
Departamento de Informática y Automática - Universidad de Salamanca 11
12. Tema 1: Lenguajes de Programación Orientados a Objetos
3.2 Requisitos Deseables
en los LPOO
• Conceptos claros • Eliminación de la
• Orientación al Objeto redundancia
pura • Pequeño
• Seguridad • De fácil transición a
otros lenguajes
• Alto nivel
• Soporte para el
• Modelo de ejecución aseguramiento de la
simple corrección
• Sintaxis fácil de leer • Entornos agradables
[Kölling, 1999]
Departamento de Informática y Automática - Universidad de Salamanca 23
4. Revisión de algunos de
los Principales LPOO
C+
Java
ta lk +
all Eif
u la
S m Ja fel
Si m
va
i E
C++
ffe
C++
l
u la
a
Smalltal
Jav
k Si m
Departamento de Informática y Automática - Universidad de Salamanca 24
Departamento de Informática y Automática - Universidad de Salamanca 12
13. Tema 1: Lenguajes de Programación Orientados a Objetos
4.1 Simula
• El Simula 67 fue considerado como el
primer LPOO
• Fue diseñado en 1967 por Ole-Johan Dhal
y Kristen Nygaard en el Norwegian
Computing Center en Oslo
• El nombre de Simula 67 fue acortado a
Simula en 1986, existiendo un estándar del
lenguaje desde 1987 [SIS, 1987]
Departamento de Informática y Automática - Universidad de Salamanca 25
4.1 Simula
class POLIGONO;
virtual: procedure set_vertices
begin
procedure dibuja begin ... end;
end POLIGONO
POLIGONO class TRIANGULO
...
end TRIANGULO
...
ref(TRIANGULO) t; ref(POLIGONO) p;
...
p :- t;
p.set_vertices;
p.dibuja;
(p qua TRIANGULO).dibuja
Departamento de Informática y Automática - Universidad de Salamanca 26
Departamento de Informática y Automática - Universidad de Salamanca 13
14. Tema 1: Lenguajes de Programación Orientados a Objetos
4.1 Simula
CORRUTINAS
a
resume a resume a
resume b resume b
b
Departamento de Informática y Automática - Universidad de Salamanca 27
4.1 Simula
CORRUTINAS
begin
class CONTROLLER; begin
integer i;
detach;
for i:= 1 step 1 until 1000 resume printer
end CONTROLLER;
class PRINTER; begin
integer i;
detach;
while true do
for i:=1 step 1 until 8 do begin
resume producer;
outreal(producer.last_input);
resume controller;
end;
next_line
end
end PRINTER; ...
ref(PRINTER) printer; ref(CONTROLLER) controller; ...
printer :- new PRINTER; controller :- new CONTROLLER;...
resume controller
end
Departamento de Informática y Automática - Universidad de Salamanca 28
Departamento de Informática y Automática - Universidad de Salamanca 14
15. Tema 1: Lenguajes de Programación Orientados a Objetos
4.2 Smalltalk
- Primer lenguaje creado con tecnología de objetos puros
- El origen de Smalltalk está alrededor de 1970 en la Universidad de Utah
de la mano de Alan Kay
- Smalltalk se desarrolla en el Xerox Palo Alto Research Center (PARC)
de la mano de Alan Kay, Adele Goldberg y Daniel Ingalls
- Los conceptos de Smalltalk han influido en el diseño de LPOO y en el aspecto
y sensación de los GUI como los de Macintosh o Motif
- Smalltalk 72, Smalltalk 74, Smalltalk 76, Smalltalk 78 y Smalltalk 80.
- Smalltalk/V de Digital
- Entorno de programación: Lenguaje Smalltalk básico, Colección de clases y el
entorno real de programación
- El estilo del lenguaje se enfatiza la ligadura dinámica y no realiza chequeo de
tipos
- El bloque fundamental es la clase, que contiene la descripción de variables y
métodos
- Los métodos contienen el código, y definen cómo responde un objeto a un
mensaje
Departamento de Informática y Automática - Universidad de Salamanca 29
4.2 Smalltalk
- La ejecución de una rutina de un objeto se denomina en la terminología de
Smalltalk “enviar un mensaje” al objeto, cuya clase encontrará la forma
apropiada de manejar dicho mensaje
- Todo en Smalltalk son objetos, incluyendo a las propias clases
- El entorno de Smalltalk permite un rápido desarrollo de programas
- La biblioteca de clases fue diseñada para ser extendida y adaptada por adición
de subclases para satisfacer las necesidades de la aplicación
- La arquitectura Modelo/Vista/Controlador (MVC) es una importante contribución
de Smalltalk
- Una referencia clásica sobre Smalltalk es [Goldberg and Robson, 1983]
Departamento de Informática y Automática - Universidad de Salamanca 30
Departamento de Informática y Automática - Universidad de Salamanca 15
16. Tema 1: Lenguajes de Programación Orientados a Objetos
4.2 Smalltalk
Abstracción Variables de instancia Sí
Métodos de instancia Sí
Variables de clase Sí
Métodos de clase Sí
Encapsulamiento De variables Privado
De métodos Público
Modularidad Tipos de módulo Ninguno
Jerarquía Herencia Simple
Unidades genéricas No
Metaclases Sí
Tipos Comprobación estricta No
Polimorfismo Sí
Concurrencia Multitarea Indirectamente
(mediante clases)
Persistencia Objetos persistentes No
Departamento de Informática y Automática - Universidad de Salamanca 31
4.3 C++
- C++ es un lenguaje híbrido, extensión del lenguaje C
- Fue desarrollado por Bjarne Stroustrup en los laboratorios AT&T
- Las primeras versiones del lenguaje se denominaron C con clases,
y datan de 1980
- El nombre de C++ se debe a Rick Mascitti, quien lo bautizó de esta
manera en el verano de 1983
- C++ fue instalado por primera vez fuera del grupo de investigación
del autor en julio de 1983
- En 1987 surge la necesidad de estandarización de C++
- Dispone de capacidades para la herencia simple y múltiple
- Por defecto C++ tiene ligadura estática
- Las funciones definidas como virtuales pueden beneficiarse del
concepto de ligadura dinámica
Departamento de Informática y Automática - Universidad de Salamanca 32
Departamento de Informática y Automática - Universidad de Salamanca 16
17. Tema 1: Lenguajes de Programación Orientados a Objetos
4.3 C++
- C++ es estrictamente tipado, aunque admite la posibilidad de casting.
- No cuenta con un recolector de basura
- La ausencia de un gestor automático de memoria por defecto, obliga
al concepto de destructor
- Ocultamiento de la información, incluso a los descendientes
- Cuenta con un mecanismo de acceso especial por parte de una clase o
una función que se declare como friend
- Soporte de manejo de excepciones
- Soporte de genericidad mediante las plantillas
- Permite sobrecarga de operadores
- Sintaxis oscura, y gramática difícil de analizar
- Lenguaje complejo, preocupado por la detección temprana de errores,
y por la eficiencia de la ejecución, perdiendo algo de sencillez y de
flexibilidad para el diseño
- [Stroustrup, 1997] es una referencia válida para este lenguaje
Departamento de Informática y Automática - Universidad de Salamanca 33
4.3 C++
#include <iostream.h>
#include <string.h>
class Saludos {
char *saludo;
public:
Saludos(char *msg) {
int longitud = strlen(msg);
saludo = new char[longitud+1];
strcpy(saludo, msg);
}
char* muestra(void) {return saludo;}
};
void main(void) {
Saludos s1("Hola Mundo }:()");
Saludos s2("Bye, dear friends :(((");
cout << s1.muestra() << endl;
cout << s2.muestra() << endl;
}
Departamento de Informática y Automática - Universidad de Salamanca 34
Departamento de Informática y Automática - Universidad de Salamanca 17
18. Tema 1: Lenguajes de Programación Orientados a Objetos
4.3 C++
Abstracción Variables de instancia Sí
Métodos de instancia Sí
Variables de clase Sí
Métodos de clase Sí
Encapsulamiento De variables Público, Privado, Protegido
De métodos Público, Privado, Protegido
Modularidad Tipos de módulo Fichero
Jerarquía Herencia Múltiple
Unidades genéricas Sí
Metaclases No
Tipos Comprobación estricta Sí
Polimorfismo Sí
Concurrencia Multitarea Indirectamente
(mediante clases)
Persistencia Objetos persistentes No
Departamento de Informática y Automática - Universidad de Salamanca 35
4.4 Eiffel
- Eiffel fue desarrollado por Bertrand Meyer
- Es un lenguaje orientado al objeto puro
- Soporta ligadura dinámica
- Tiene comprobación estricta de tipos
- Admite herencia múltiple
- Soporta clases parametrizadas
- La gestión de memoria la lleva a cabo el entorno de programación
- Eiffel proporciona una biblioteca de clases predefinidas muy completa
- Eiffel cuenta con la clase como único criterio de estructuración
- Una declaración de clase en Eiffel puede incluir una lista de características
exportadas, una lista de clases predecesoras, y una lista de declaraciones de
características
- Cuenta con manejo de excepciones
- [Meyer, 1992] es una de las referencias obligadas, aunque con unas miras
más amplias, se recomienda [Meyer, 1997]
Departamento de Informática y Automática - Universidad de Salamanca 36
Departamento de Informática y Automática - Universidad de Salamanca 18
19. Tema 1: Lenguajes de Programación Orientados a Objetos
4.4 Eiffel
- Diseño por contrato
• Precondiciones: que deben cumplirse antes de que se invoque un método
Precondiciones
Aserciones
• Postcondiciones: que se garantizan han de cumplirse después de que se
Postcondiciones
haya ejecutado el método
• Invariantes:
Invariantes condición que debe cumplir la clase en toda circunstancia
estable
• Un contrato entre el proveedor y el usuario de una clase espera que
El usuario de una clase asegurará que las precondiciones de un método
se cumplan antes de que el método se invoque
El proveedor de la clase garantizará que las postcondiciones se cumplan
después que se ha aplicado el método
Departamento de Informática y Automática - Universidad de Salamanca 37
4.4 Eiffel
- Violación de Aserciones
¿De quién es la responsabilidad?
• Precondiciones: De quien solicita el servicio (cliente)
• Postcondiciones: De quien ofrece el servicio (servidor)
Postcondiciones
• Invariantes:
Invariantes De quien esté actuando en ese momento sobre el objeto
• ¿Qué provoca la violación de una aserción? Excepciones
• ¡Qué se encargue el responsable!
Manejo de la excepción: tratar de arreglar la situación,
cláusula de rescate: , intentar nuevamente:
Pasar la responsabilidad... ¿Nadie? El sistema aborta
Aserciones y Herencia: La subcontratación
el subcontratado pide menos y garantiza más (sino no es negocio )
Departamento de Informática y Automática - Universidad de Salamanca 38
Departamento de Informática y Automática - Universidad de Salamanca 19
20. Tema 1: Lenguajes de Programación Orientados a Objetos
4.4 Eiffel
class STACK[T] full : BOOLEAN is do pop is require
creation Result := total = not empty
create max_size do
feature {NONE} ensure total := total -1
elems : ARRAY[T]; equal(strip(), old strip()) ensure
feature end; total = old total -1;
max_size : INTEGER; top : T is require not full
total : INTEGER; not empty end
create(n : INTEGER) is do invariant
require Result := elems@total 0 <= total;
n>0 ensure total <= max_size
do equal(strip(), old strip()) end – STACK
!!elems.make(1,n); end
max_size := n push(x : T) is require
ensure not full
max_size = n; do
total = 0; total := total + 1;
end; elems.put(x,total)
empty : BOOLEAN is do ensure
Result := total = 0 not empty;
ensure total = old total + 1;
equal(strip(), old strip()) top = x
end; end;
Departamento de Informática y Automática - Universidad de Salamanca 39
4.4 Eiffel
Abstracción Variables de instancia Sí
Métodos de instancia Sí
Variables de clase No
Métodos de clase No
Encapsulamiento De variables Público (sólo lectura),
Privado, Selectivamente
De métodos Público, Privado,
Selectivamente
Modularidad Tipos de módulo Clase
Jerarquía Herencia Múltiple
Unidades genéricas Sí
Metaclases No
Tipos Comprobación estricta Sí
Polimorfismo Sí
Concurrencia Multitarea Si (mediante clases de
bibliotecas)
Persistencia Objetos persistentes Si (mediante clases)
Departamento de Informática y Automática - Universidad de Salamanca 40
Departamento de Informática y Automática - Universidad de Salamanca 20
21. Tema 1: Lenguajes de Programación Orientados a Objetos
4.5 Java
- Realizado por un equipo de Sun Microsystems a finales de 1995
- Ha recibido una especial atención desde los primeros meses de 1996
- Es un lenguaje orientado al objeto puro diseñado desde cero, que recibe
muchas influencias de C++
- Se le atribuyen las siguientes características
• Simple y poderoso
• Seguro
• Robusto
• Interactivo
• Independiente de la arquitectura
• Interpretado
• Sencillo de aprender
- Soporta threads
-Recogida de basura automática
- De la abundante bibliografía existente se recomienda [SUN, 2001]
Departamento de Informática y Automática - Universidad de Salamanca 41
4.5 Java
- Java produce un bytecode que será interpretado por una máquina virtual
- La máquina virtual se encuentra a menudo en navegadores web
- La explosión de Internet ha influido en el auge de Java
la
de
ulo
rí c s
cur e
del sidad
ro r
d ent nive
pal rias U
nci
e pri are va
ent ftw En los primer
pon l So apareció en la
os seis meses
de 1996, Java
com ría de prensa de US
u n ni e punto de com 4325 veces, co
a es ge paración Bill mo
Jav In
5096 veces
Gates apareció
Departamento de Informática y Automática - Universidad de Salamanca 42
Departamento de Informática y Automática - Universidad de Salamanca 21
22. Tema 1: Lenguajes de Programación Orientados a Objetos
4.5 Java
class _saludos {
String saludo="";
_saludos(String msg) {
saludo = msg;
}
public void mostrar() {
System.out.println(saludo);
}
}
class Saludos {
public static void main(String args[]) {
_saludos s1 = new _saludos("Hola Mundo :)))");
_saludos s2 = new _saludos("Adios amigos :((");
s1.mostrar();
s2.mostrar();
}
}
Departamento de Informática y Automática - Universidad de Salamanca 43
4.5 Java
Abstracción Variables de instancia Sí
Métodos de instancia Sí
Variables de clase Sí
Métodos de clase Sí
Encapsulamiento De variables Público, Privado, Protegido
De métodos Público, Privado, Protegido
Modularidad Tipos de módulo Fichero
Jerarquía Herencia Simple
Unidades genéricas No
Metaclases No
Tipos Comprobación estricta Sí
Polimorfismo Sí
Concurrencia Multitarea Sí
Persistencia Objetos persistentes No
Departamento de Informática y Automática - Universidad de Salamanca 44
Departamento de Informática y Automática - Universidad de Salamanca 22
23. Tema 1: Lenguajes de Programación Orientados a Objetos
5. Referencias
[Cardelli and Wegner, 1985] Cardelli, L., Wegner, P. “On Understanding Types, Data Abstraction and
Polymorphism”. ACM Computing Surveys, 17(4). 1985.
[Goldberg and Robson, 1983] Goldberg, A., Robson, D. “Smalltalk-80: The Language and its
Implementation”. Addison-Wesley, 1983.
[Joyanes, 1998] Joyanes Aguilar, L. “Programación Orientada a Objetos”. 2ª Edición. McGraw-Hill,
1998.
[Kölling, 1999] Kölling, M. “The Problem of Teaching Object-Oriented Programming, Part 1:
Languages”. Journal of Object-Oriented Programming, 11(8):8-15. January, 1999.
[Meyer, 1992] Meyer, B. “Eiffel: The Language”. Prentice Hall Object-Oriented Series, 1991; second
revised printing, 1992.
[Meyer, 1997] Meyer, B. “Object Oriented Software Construction”. 2nd Edition. Prentice Hall, 1997.
[Rumbaugh et al., 1991] Rumbaugh, J., Blaha, M., Premerlani, W., Eddy, F., Lorensen, W. “Object-
Oriented Modeling and Design”. Prentice-Hall, 1991.
[SIS, 1987] SIS. “Data Processing - Programming Languages — SIMULA”.
Standardiseringskommissionen i Sverige (Swedish Standards Institute), Svensk Standard SS 63 61
14, 20 May, 1987.
[Stroustrup, 1997] Stroustrup, B. “The C++ Programming Language”. 3rd Edition, Addison Wesley,
1997.
[SUN, 2001] SUN Microsystems. “The Java Tutorial. A Practical Guide for Programmers”.
http://java.sun.com/docs/books/tutorial/index.html. [Última vez visitado, 13/2/2002]. December
2001.
[Tesler, 1981] Tesler, L. “The Smalltalk Environment”. Byte, 6(8). August, 1981.
[Tesler, 1993] Tesler, L. “Object-Oriented Dynamic Languages”. In Proceedings of the Object Expo
Conference. July, 1993.
[Wegner, 1987] Wegner, P. “The Object-Oriented Classification Paradigm in Research Directions on
Object-Oriented Programming”. MIT Press, Cambridge, MA, 1987.
Departamento de Informática y Automática - Universidad de Salamanca 45
6. Lecturas Complementarias
“The Real Stroustrup Interview”. IEEE Computer, 31(6):110-114. June, 1998.
En 1998 se difundió por Internet una supuesta entrevista con Bjarne Stroustrup
en la prácticamente el autor de C++ tiraba por los suelos su obra. Así en el mes
de junio de este mismo año se publica en la revista IEEE Computer una
entrevista, esta vez de verdad con Stroustrup, donde da su opinión sobre el papel
de C++ en el mundo de la Programación Orientada a Objetos.
Interactive Software Engineering. “Object-Oriented Languages: A Comparison”.
Interactive Software Engineering (ISE).
http://www.eiffel.com/doc/manuals/technology/oo_comparison/page.html [Última vez
visitado, 13-2-2002]. 2001.
Tablas comparativas entre Eiffel, C++, Java y Smalltalk.
Joyner, I. “C++?? A Critique of C++ and Programming and Language Trends of the
1990s”. 3rd edition http://www.progsoc.uts.edu.au/~geldridg/cpp/cppcv3/cppcv3.pdf.
[Última vez visitado 7/1/2000]. 1996.
Informe crítico sobre C++, comparando sus características con otros lenguajes
de programación, en especial con Eiffel.
Kay, A C. “The Early History of Smalltalk”. In Proceedings of the second ACM SIGPLAN
conference on History of programming languages – HOPL II. (April 20 - 23, 1993,
Cambridge United States). ACM SIGPLAN Notices, 28(3):69-75. March, 1993.
Artículo sobre los orígenes de Smalltalk.
Meyer, B. “Approaches to Portability”. Journal of Object-Oriented Programming (JOOP),
11(4):68-70. July/August, 1998.
Comparativa de los bytecodes de Java con el método propio de Eiffel consistente
en utilizar C como lenguaje intermedio para conseguir la portabilidad del
software.
Departamento de Informática y Automática - Universidad de Salamanca 46
Departamento de Informática y Automática - Universidad de Salamanca 23
24. Tema 1: Lenguajes de Programación Orientados a Objetos
6. Lecturas Complementarias
Meyer, B. “Construcción de Software Orientado a Objetos”. 2ª Edición. Prentice Hall, 1999.
En relación con el presente tema se destaca en capítulo 35, De Simula a Java y más allá: los
principales entornos y lenguajes O-O, donde se repasan algunos de los lenguajes de
programación orientados a objetos de mayor peso.
Piattini, M. G. “Selección de Lenguajes de Programación Orientados al Objeto: ¿Cuestión de Religión?”.
Revista BASE de la ALI (Asociación de Doctores, Licenciados e Ingenieros en Informática), Nº24:58-62.
Abril, 1994.
Artículo intoductorio al mundo de los LPOO.
Prechelt, L. “Comparing Java vs. C/C++ Efficiency Differences to Interpersonal Differences”.
Communications of the ACM, 42(10):109-112. October 1999.
Artículo en el que se presenta un experimento llevado a cabo para comparar la eficiencia de estos
lenguajes de programación.
Rans, M. “A History of Object-Oriented Programming Languages and their Impact on Program Design and
Software Development”. http://jeffsutherland.com/papers/Rans/OOlanguages.pdf [Última vez visitado,
13/2/2002]. November 1999.
Resumen de la historia de algunos lenguajes de programación orientados a objetos destacados.
Stroustrup, B. “The Design and Evolution of C++”. Addison-Wesley, 1994. Reprinted with corrections in
April 1995.
Libro del autor de C++ explicando la historia, diseño y evolución de C++.
Departamento de Informática y Automática - Universidad de Salamanca 47
Departamento de Informática y Automática - Universidad de Salamanca 24