Download Programación Orientada a Objetos

Document related concepts

Scala (lenguaje de programación) wikipedia , lookup

Transcript
Programación Orientada a
Objetos
Introducción a Java
Angela Carrillo Ramos
Java: Lenguaje de Programación
¿Por qué surge un lenguaje?
Para adaptarse a los cambios de
entorno y usos:
usos: Independencia de la
plataforma
Implantar refinamientos y mejoras a la
programación:: POO e Internet
programación
2
1
JAVA: Lenguaje de Programación
•Lenguaje Orientado por Objetos
•Simple, Poderoso y Fácil de aprender
•Robusto
•Interactivo
•Arquitectura neutral
•Interpretado y de alto desempeño
•Distribuido (concurrencia) y Dinámico
•Admite el modelo cliente/Servidor
3
JAVA: Lenguaje de Programación
Seguro
Tiene el Java Security Manager el cual
limita el programa Java a un entorno de
ejecución Java
Portabilidad
La compilación produce Código Binario
(bytecode)
bytecode) que es interpretado por la
máquina virtual de Java (JVM)
El intérprete se implementa en cada
plataforma..
plataforma
4
2
JAVA: Lenguaje de Programación
Robusto
Fuertemente tipado y hace validaciones en
tiempo de compilación y de ejecución
Manejo
de memoria (Recolector de
Basura)
Manejo
de condiciones excepcionales
(excepciones)
Simple
No maneja apuntadores
No herencia múltiple.
múltiple.
No hay sobrecarga de operadores
5
JAVA: Lenguaje de Programación
O.O
Todo es objeto (excepto tipos básicos)
Superclase Object
JNI (Java Native Interface)
Es un API que permite a la JVM llamar
aplicaciones y librerías escritas en otros
lenguajes.. Se crean DLL.
lenguajes
DLL.
Escribir métodos en C/C++ u otros lenguajes
Llamar métodos JAVA desde otro lenguaje
6
3
Aplicaciones y Applets
Aplicación::
Aplicación
Programa que se ejecuta en el computador
utilizando el Sistema Operacional de ese
computador
Applet::
Applet
Aplicación diseñada para ser transmitida
por internet y ejecutada en un navegador
compatible con JAVA.
JAVA.
Reacciona ante eventos producidos por
usuarios..
usuarios
7
JDK: Java Development Kit
•CLASSPATH
•Directorios: bin, demo, docs, include,
lib, src
•Compilador de Java
javac
•Intérprete de Java
java,
appletviewer
•Depurador de código
dbx, jdb
•Generación de documentación
javadoc /** */
8
4
JDK: Java Development Kit
CLASSPATH
Especifica dónde buscar las clases de
JAVA durante tiempo de compilación y
ejecución
Se coloca como una variable más del
autoexec..bat
autoexec
9
JAVA: Lenguaje de Programación
CLASSPATH (continuación)
Ej
Ej.. Si tiene como valores:
valores:
C:/jdk/lib
/jdk/lib;;C:/misclases
y necesitamos buscar el archivo POO
POO..class en
el paquete javeriana
javeriana..sistemas.
sistemas.pregrado la
búsqueda que se hace es:
es:
C:/jdk/lib/javeriana/sistemas/pregrado/POO.
/jdk/lib/javeriana/sistemas/pregrado/POO.class
C:/misclases/javeriana/sistemas/pregrado/POO.
/misclases/javeriana/sistemas/pregrado/POO.class
./javeriana/sistemas/pregrado/POO
/javeriana/sistemas/pregrado/POO..class
10
5
Máquina Virtual de JAVA (JVM)
DOS
Archivo
Ejecutable
Código
Fuente
Compilado
r
Linker
01010101
01010101
11111000
Programa en
ejecución
UNIX
Programa en
ejecución
WINDOWS
Librerías
Otros Lenguajes
de Programación
11
Máquina Virtual de JAVA (JVM)
DOS
Archivo
de Clase
Código
Fuente
01010101
01010101
11111000
Compilado
r de Java
javac
Programa en
ejecución
UNIX
Programa en
ejecución
WINDOWS
Otros archivos
de clase
Máquina
virtual de
JAVA
12
6
Máquina Virtual de JAVA (JVM)
Problemas de Seguridad
Negación del servicio
Invasión de privacidad
Robo de datos
Modificación del sistema
...
13
Máquina Virtual de JAVA (JVM)
•Seguridad
•Protecciones a nivel de Lenguaje
•A nivel de JVM
•SandBox (para Applets)
•Cargador de Clase (Java Class Loader)
•Verificador del código de Byte (Java
Class Verifier)
14
7
Máquina Virtual de JAVA (JVM)
INTERNET
Clases Applet
HTML
Navegado
r WEB
Cargador
de Clase
Verificador
de código
byte
Máquina
Virtual de
JAVA
Administrador
de Seguridad
15
Archivo JAR
Formas independientes de la plataforma para
empaquetar archivos .class,
class, html,
html, sonido u
otros componentes de applets o aplicaciones
en un paquete simple que puede ser bajado
en una sola transferencia al cliente.
cliente.
<applet code=“
code=“archivo
archivo..class”
class” archive=“arch.
archive=“arch.jar,
arch2
arch
2.jar” width = 100 height=
height= 150>
150>
16
8
Archivo JAR
•Forma eficaz de distribuir applets así como
aplicaciones y JavaBeans
•Archivo manifest (contenido del archivo JAR)
•Ventajas
•Mejoran la eficacia de las descargas
•Mejoran el almacenamiento de archivos
•Mejoran la seguridad
•Son independientes de la plataforma (pkzip)
•Son compatibles con versiones antiguas
•Son extensibles
17
Archivo JAR
•Creación: Utilidad jar
jar <opciones> <archivo.jar><archivos>
18
9
Paquetes
•Colección de clases relacionadas
•Agrupación lógica de un conjunto de clases.
•Son almacenados de manera jerárquica.
•Para utilizar parcial o totalmente las clases
de un paquete se utiliza:
import nompaquete;
•Para asociar una clase a un paquete:
package nompaquete;
19
Paquetes del núcleo de Java
•java.applet
Clase applet de JAVA
•java.awt
Componentes de GUI
•java.io
Servicios generales de Comunicaciones
•java.lang Clases integradas de JAVA
•java.math Matemática
•java.net
Servicios de red
•java.rmi
Invocación de métodos remotos
•java.security
Mecanismos de seguridad
•java.sql
Manejo de Bases de Datos
•java.text
Manejo de Texto
•java.util
Clases de servicio
20
10
Interfaces
Mecanismo mediante el cual se puede definir
la forma general de una clase garantizando
que todas las versiones específicas de esa
clase amplíen el mismo conjunto de Reglas
Reglas..
Proporciona polimorfismo
Una clase que implemente una interface
debe implementar todos sus métodos (deben
ser públicos).
públicos). De lo contrario se convierte en
clase abstracta.
abstracta.
21
Comparación con C++
•Aprovecha los puntos fuertes de C++
•Utilización de tipos estrictos
•Conversión de tipos hacia arriba
•Conversión de tipos hacia abajo
•Orientación a objetos
•Constructores
•Familiaridad de la sintaxis
•Especificadores de acceso (public, protected,
private)
•Declaración de constantes
•Verificación de tipos durante ejecución
•Control de errores mediante excepciones
22
11
Comparación con C++
•Superación de la limitaciones de C++
•Inicialización predeterminada (NULL)
•Unicode nativo
•Utilización de nombres globales (todo es
objeto)
•Verificación de los límites de un arreglo en
ejecución
•Paquete genérico de contenedoras
•Uso de paquetes
•Multi-hilos
•Clase Object
23
Comparación con C++
Lo que no tiene de C++
Destructores
Sobrecarga de operadores
Herencia Múltiple
Apuntadores
Clases amigas
Templates (a partir de la 1.5)
24
12