• Diferencia entre programación orientada a objetos y lenguaje
orientado a objetos – Programación orientada a objetos • Es una “filosofía” (forma de pensar) • Modelo de programación, con su teoría y su metodología – Lenguaje orientado a objetos • Lenguaje de programación que permite el diseño de aplicaciones orientadas a objetos
• Primero se debe adquirir la forma de pensar es decir la
“filosofía” orientada a objetos y aprender después el lenguaje Introducción a POO
• La programación orientada a objetos
– No se trata de nuevas características de un lenguaje de programación – Es una nueva forma de pensar acerca del proceso de descomposición de problemas y de desarrollo de soluciones. Introducción a POO
• Hasta el momento la forma de enfrentarse a la complejidad
que presenta el software ha sido empleando lo que llamamos programación estructurada – Descomposición del problema en sub-problemas hasta llegar a acciones muy simples y fáciles de codificar. – Básicamente descomponer el problema en acciones • Por ejemplo un programa que resuelva ecuaciones de segundo grado: – Pedir el valor de los coeficientes a, b y c; – Calcular el valor del discriminante – En función del signo del discriminante, calcular ninguna, una o dos raíces. Introducción a POO
• La programación orientada a objetos es otra forma de
descomponer problemas. – Descomposición en objetos • Los lenguajes de programación tradicionales no orientados a objetos – C, Pascal, BASIC, o VB – Funcionamiento en el concepto de procedimiento o función. • Una función es simplemente un conjunto de instrucciones que operan sobre unos argumentos y producen un resultado. Introducción a POO
• El elemento básico de los lenguajes orientados no es la
función, sino un ente denominado objeto. – C++, Java, C#, VB .NET • Un objeto es la representación en un programa de un concepto – Contiene toda la información necesaria para abstraerlo: • Datos que describen sus atributos • Operaciones que pueden realizarse sobre los mismos. Introducción a POO • Una nueva forma de pensar y enfocar los problemas implica una dificultad de aprendizaje de un lenguaje totalmente orientado a objetos
• El lenguaje a usar en este curso es Java
– Java es un lenguaje de objetos – Java incorpora el uso de la orientación a objetos como uno de sus pilares básicos y fundamentales – Es un lenguaje interpretado – Es un lenguaje de propósito general
• Diferencias con respecto a C++.
– C++ es orientado a objetos pero permite escribir código no orientado a objetos. – En Java todo programa por más sencillo o pequeño que sea es forzado a implementar objetos. – En Java nada se puede hacer sin usar al menos un objeto. Fundamentos de Java Plataforma Fundamentos de Java Características • Multiplataforma – Los programas se compilan en un bytecode independiente de la máquina y existen entornos de ejecución de apliacaciones JAVA para casi todos los SO. • Seguro – Forza restricciones sobre las operaciones permitidas • Applets no tienen acceso directamente al hardware de la PC – Antes de ejecutar se verifican los bytecodes de la aplicación Fundamentos de Java Características • Cuenta con bibliotecas estándar – Manejo de colecciones – Acceso a datos • JDBC – Interfaces gráficas • AWT/JFC/Swing – Redes de ordenadores • RMI, Jini – Aplicaciones distribuidas • EJB – Interfaces web • Servlets/JSP – Manejo de hilos – Compresión de datos – Criptografía Fundamentos de Java Características • Gestión automática de memoria • Comprobación estricta de tipos • Sintaxis simplificada con respecto a C++ – No se manejan punteros explícitamente, aunque todo es puntero en la orientación a objetos. – No hay que mantener archivos de encabezados aparte – No existen macros (#define) por ser propensas a errores – No hay que crear makefiles (archivos de dependencias) Fundamentos de Java La máquina virtual (JVM)
• En el proceso de compilación, el compilador JAVA (javac.exe) genera un
código independiente de la plataforma, código bytecode – Bytecode es una especie de lenguaje de máquina de una máquina virtual Fundamentos de Java La máquina virtual (JVM)
• En el proceso de ejecución, la Java Virtual Machine (java.exe) realiza una
compilación Just In Time – Compila el Bytecode para generar el código de máquina según la arquitectura y sistema operativo sobre el cual se encuentra. Fundamentos de Java Creación y ejecución de aplicaciones Fundamentos de Java Creación y ejecución de applets