LENGUAJE DE PROGRAMACIN
Paradigma OO
Resultado de la evolucin natural de la programacin, devenido en metodologa de programacin de propsito general que simula la forma en que el hombre trabaja y cuya idea bsica es que percibimos al mundo que nos rodea como una variedad de objetos.
Paradigma de la POO
Existen cuatro principios bsicos que cualquier sistema orientado a objetos debe incorporar
Paradigma de programacin Coleccin de conceptos que guan el proceso de construccin de un programa, determinando su estructura. Estos conceptos controlan la forma en que pensamos y formulamos los programas. Un lenguaje de programacin refleja un paradigma.
PARADIGMA
Imperativo Funcional Lgico Orientado a Objetos
LENGUAJE
C, Pascal, Cobol, ... Lisp, Hope, Miranda, ... Prolog, Parlog, ... Smalltalk, C++, Eiffel, Java, ...
Qu significa Orientacin a Objetos?
El software se organiza como una coleccin de objetos que contienen tanto estructura como comportamiento.
Qu es el desarrollo OO?
Una nueva forma de pensar acerca del software basndose en abstracciones que existen en el mundo real. Bombilla
color
encender() apagar()
Conceptos bsicos
Un Objeto es una entidad con una estructura de datos interna bien definida, junto a un conjunto de acciones que describen su comportamiento. Es la unidad bsica de la POO.
Ejemplo: Mara la florista Perla la florista Jos el florista
Conceptos bsicos
Un objeto o instancia es una variable concreta de una clase con su propia copia de variables miembros. Un objeto identidad. tiene estado, comportamiento e
Tiene datos internos que le dan el estado. Tiene mtodos para producir comportamiento. Cada objeto tiene una direccin nica en memoria lo que le da identidad.
Ejemplo: Enviar flores a una persona
de otra ciudad
EJEMPLOS
Propiedades
-Color: amarrillo -Tipo hoja : punteada -Especie: -Tamao:
Mtodos
- Abrir() -Cerrar()
Propiedades
-Color: beige -Tamao : -Marca: -Procesadror:
Mtodos
- Prender() -Calcular() -Apagar()
Conceptos bsicos
Mensaje: Forma de solicitar una accin a un objeto.
Cliente Mensaje Emisor
Servidor Receptor
Objeto, Usuario, Aplicacin
Objeto
Conceptos bsicos
Una clase es: una categora de objetos con caractersticas comunes. una plantilla que se usa para crear mltiples objetos con caractersticas similares.
Las clases engloban las caractersticas de un conjunto particular de objetos.
Cuando se escribe un programa en un lenguaje orientado a objetos no se definen objetos individuales sino clases de objetos. Ejemplo: Florista
Conceptos bsicos
Las clases son tipos de variables o tipos de datos creados por el usuario. Se puede extender un lenguaje de programacin adicionando nuevos tipos de datos especficos acorde a las necesidades del problema a resolver. Las clases pueden estar formadas por variables miembros y funciones miembros.
Conceptos bsicos
Cada clase puede estar compuesta por: Atributos: definen el estado de la clase. atributos pasivos, variables miembros, campos. Mtodos: definen el comportamiento de la clase. funciones miembros, atributos activos, operaciones, comportamiento, responsabilidades.
Ejemplos:
Variables Miembros
Funciones miembros Variables Miembros Funciones miembros
Notacin UML para representar una clase
Florista
Nombre Salario Edad Vender flores Enviar flores a otra ciudad Bombillo Consumo Enceder Apagar Aumentar Brillo Disminuir brillo
Atributos o variables miembros
Los atributos son caractersticas, propiedades que hacen que un objeto se diferencie del otro. Pueden determinar apariencia, cualidades, estado, etc. Los atributos se definen por variables. Para cada variable se define su tipo. Tanto en Java como en C++ es posible definir: Variables o atributos de clase Variables o atributos de objeto o de instancia
Mtodos o funciones miembros
El comportamiento de una clase se implementa a travs de sus mtodos o funciones miembros.
Una clase o un objeto puede llamar mtodos de otras clases para: Indicar a otro objeto que cambie Pedir a otro objeto que haga algo
Es posible definir: Mtodos de instancia: aplican a cada objeto de la clase. Mtodos de clase (en Java).
Mtodos de clase
Estn disponibles para cualquier instancia de la clase y para otras clases. No se requiere una instancia de la clase para poder invocar a un mtodo de clase. Para definir los mtodos de clase hay que anteponer a la definicin del mtodo la clusula static.
Conceptos de OO
Abstraccin Encapsulamiento Modularidades Objetos Clases Vinculos y Asociasiones Composicion Herencia
Mensajes y Mtodos Herencia Clases y Operaciones Abstractas Modularidades Polimorfismo
Abstraccin
Ignorar aspectos irrelevantes y concentrarnos en los principal Tipos:
Abstraccin de datos. Abstraccin de procedimientos.
Encapsulamiento
Separar los aspectos externos de los aspectos internos:
Aspectos externos: Interfaz, contrato Aspectos internos: Implementacin
Modularidad
Descomponer el sistema en mdulos Fundamental para el reuso.
Vnculos y Asociaciones
Objetos relacionados entre si:
Vnculos: Conexin entre objetos. Asociacin: Conexin entre clases que representa existencia de vnculos. Asociaciones pueden ser cardinalidades
Composiciones
Los objetos complejos son compuestos por objetos mas simples. Composicin: Las partes pueden ser relacionadas a todo. Agregacin: Las partes pueden ser descompuestas.
Herencia
Cuando las clases tienen semejanzas podemos generalizarlas. Jerarquias
Relaciones entre super clases y sub clases
Mensajes y Mtodos
Los Objetos envan mensajes para comunicarse, debe ser la nica forma. Mtodos: Operaciones que un objeto puede realizar.
Persistencia
Capacidad del objeto de trascender en tiempo y espacio:
Almacenamiento en banco de datos. Transmisin por la red.
Clases y Metodos Abstractos
Las clases abstractas no pueden ser instancias. Metodos abstractos no pueden ser implementados. Clases compuestas solamente por metodos abstractas.
Sobrecarga y Sobrescrita
Sobrecarga: Operaciones distintas con el mismo nombre. Sobrescrita: Sub Clase define nueva implementacin para operaciones definidas en una super clase.
Polimorfimo
Habilidad de tomar varias formas.
PROPIEDADES DEL LENGUAJE JAVA
Portable , debido a que es posible ejecutar el mismo archivo de clase (.class), sobre una amplia variedad de arquitecturas de hardware y de software, sin ninguna modificacin. Dinmico, debido a que las clases son cargadas en el momento en que son necesitadas (dinmicamente), ya sea del sistema de archivos local o desde algn sitio de la red mediante algn protocolo URL. Java tiene la capacidad de aumentar su sistema de tipos de datos dinmicamente o en tiempo de ejecucin. Este "enlace tardo" (latebinding) significa que los programas slo crecen al tamao estrictamente necesario, aumentando as la eficiencia del uso de los recursos. Java hace menos suposiciones sobre las implantaciones de las estructuras de datos, que los lenguajes estticos de "enlace temprano" o en tiempo de compilacin (early-binding) como C o C++. Seguridad y la fiabilidad, por lo que se le integraron varias capas de seguridad para evitarque programas maliciosos pudiesen causar daos en los sistemas, sobre los que ejecuta la implantacin de la Mquina Virtual Java.
ARQUITECTURA
LA MAQUINA VIRTUAL JAVA (MVJ)
La Mquina Virtual Java es el ncleo del lenguaje de programacin Java. De hecho, es imposible ejecutar un programa Java sin ejecutar alguna implantacin de la MVJ. En la MVJ se encuentra el motor que en realidad ejecuta el programa Java y es la clave de muchas de las caractersticas principales de Java, como la portabilidad, la eficiencia y la seguridad. Siempre que se corre un programa Java, las instrucciones que lo componen no son ejecutadas directamente por el hardware sobre el que subyace, sino que son pasadas a un elemento de software intermedio, que es el encargado de que las instrucciones sean ejecutadas por el hardware. Es decir, el cdigo Java no se ejecuta directamente sobre un procesador fsico, sino sobre un procesador virtual Java, precisamente el software intermedio. La representacin de los cdigos de instruccin Java (bytecode) es simblica, en el sentido de que los desplazamientos e ndices dentro de los mtodos no son constantes, sino que son cadenas de caracteres o nombres simblicos. Estos nombres son resueltos la primera vez que se ejecuta el mtodo, es decir, el nombre simblico se busca dentro del archivo de clase (.class) y se determina el valor numrico del desplazamiento. Este valor es guardado para aumentar la velocidad de futuros accesos. Gracias a esto, es posible introducir un nuevo mtodo o sobreescribir uno existente en tiempo de ejecucin, sin afectar o romper la estructura del cdigo.
MAQUINA VIRTUAL JAVA
FIGURA 1 La Mquina Virtual Implementada para una variedad de plataformas
En ella podemos ver que lo verdaderamente dependiente del sistema es la Mquina Virtual Java (JVM) y las libreras fundamentales, que tambin nos permitiran acceder directamente al hardware de la mquina. Adems, habr APIs de Java que tambin entren en contacto directo con el hardware y sern dependientes de la mquina, como ejemplo de este tipo de APIs podemos citar: Java Java Java Java Java Java 2D: grficos 2D y manipulacin de imgenes Media Framework : Elementos crticos en el tiempo: audio, video... Animation: Animacin de objetos en 2D Telephony: Integracin con telefona Share: Interaccin entre aplicaciones multiusuario 3D: Grficos 3D y su manipulacin
LA TRADUCCION Y MOMENTO DE ENCADENAMIENTO
Por ser strongly typed(depender de JMV), casi todo el chequeo y enlaces de tipos se hacen en tiempo de compilacin.
La compilacin se refiere a la conversin del programa hecho por el programador a byte-codes.
Sin embargo por ser un lenguaje interpretado, los enlaces se calculan en tiempo de ejecucin. En alguno sistemas, una parte del cdigo se compila realmente en cdigo maquina, pero despus que la JVM hizo chequeos de integridad.
Class Loader Byte-Codes Verifier
La JVM: Carga el cdigo
Interpreter Runtime
JIT Compiler
Lo verifica y
Lo ejecuta
HARWDARE
ARQUITECTURA NEUTRAL
Para establecer Java como parte integral de la red, el compilador Java compila su cdigo a un archivo objeto de formato independiente de la arquitectura de la mquina en que se ejecutar. Cualquier mquina que tenga el sistema de ejecucin (run-time) puede ejecutar ese cdigo objeto, sin importar en modo alguno la mquina en que ha sido generado. Actualmente existen sistemas run-time para Solaris 2.x, SunOs 4.1.x, Windows XX-NT, Linux, Irix, Aix, Mac, Apple y probablemente haya grupos de desarrollo trabajando en el porting a otras plataformas.
El cdigo fuente Java se "compila" a un cdigo de bytes de alto nivel independiente de la mquina. Este cdigo (byte-codes) est diseado para ejecutarse en una mquina hipottica que es implementada por un sistema run-time, que s es dependiente de la mquina. En una representacin en que tuvisemos que indicar todos los elementos que forman parte de la arquitectura de Java sobre una plataforma genrica, obtendramos una figura como la siguiente:
INDEPENDENCIA DE LA ARQUITECTURA (CREACIN DE LA JVM)
Cdigo fuente Compilador Java Byte-codes Macintosh JVM Cdigo mquina Macintosh
Win32 JVM Cdigo mquina Win32
UNIX JVM Cdigo mquina UNIX
Java es mucho!
Un lenguaje de programacin Java Un ambiente de ejecucin. Un Kit de desarrollo Java. Una biblioteca de clases (API) Java.
Java Development Kit
Solamente para programadores Contiene:
Herramientas de desarrollo. Ambiente de Ejecucin API JAVA SE (Compilada y Cdigo Fuente) Programas de Ejemplo. Bibliotecas adicionales Documentacin (obtenida separadamente)
Herramientas Disponibles
Compilador (javac) Interprete (java) Generador de documentacin (javadoc) Depurador (jdb) Generador de Paquetes (jar) Otros:
Visualizados de Applets (appletviewer) Criptografa(keytool, jarsigner, etc.) Etc.
Escribe una vez, ejecuta donde quieras:
Los cdigos de Java son compilados para un lenguaje intermedio llamado: ByteCode ByteCodeesinterpretadoporunamaquina virtualaJVM. A JVM envia comandos especficos a la plataforma para el sistema operativo
Principales APIs
AWT/Swing/SWT: interfaces grficas; Java2D: Diseo; JDBC: acesso a Base de Datos; JNDI: acesso a servidores de dominios; RMI: Invocacin remota de mtodos; Beans: padre de JavaBeans; i18n: suporte a internacionalizacion; I/O: entrada y salida (archivos); JNI: Intergracion con lenguajes nativos Math: clculos matemticos;
Principales APIs
Networking: Transmisin por redes; Security: Seguridad; Serialization:; XML: Procesamiento de XML; Lang & Util: ncleo da lenguaje, utilitarios (colecciones, datas, etc.); Concurrencua: Programacion Concurrente(threads); Logging: (log); Reflection
Java Platform, Enterprise Edition
Permite el desarrollo de aplicaciones corporativas:
Multi-llamada, distribudas, centradas en servidores, altamente robustas, estables y escalables Incluye especificaciones para desarrollo Web: Servlets, JSP, Web Services.
Servlets, JSP e EJBs
Servlets e JSPs:
Componentes que responden a peticiones Web usados para construir pginas dinmicas de Web Services
Componentes heredados integrados a otras tecnologas Java EE para proveer acceso remoto, persistencia y transacciones transparentes, procesamiento asncrono, etc.
EJBs:
Java Platform, Mobile Edition
Permite desarrollo de aplicaciones para dispositivos mobiles.
Telefonos Celulares. PDAs Dispositivos Embedded. Etc.
Java Card: Aplicaciones para Smart Cards y una cantidad ilimitada de dispositivos
JAVA EN TODO LUGAR
Java esta en todo lugar
Enterprise (Empresa)
COMO COMENZAR?
Preparando el ambiente
Descargar JDK En cualquiera de las direcciones electrnicas
Escoja la versin de su sistema operativo.
Instalando
Windows:
Instalar primero Microsft, simplicado. Documentacin compactada.
Linux:
Instalar de los repositorios Documentacin compactada.
Escribiendo Programas
Puedes usar:
Eclipse NetBeans JetBrains IntelliJ IDEA Borland Jbuilder Etc. Editores mas simples:
JEdit JCreator
El lenguaje de programacin JAVA
Qu es exactamente JAVA?
Es un lenguaje de programacin orientado a Objetos
herencia polimorfismo (late binding) encapsulamiento (abstraccin datos)
Sintaxis general y estructuras de control parecidas al C. Todo son clases: no hay estructuras de datos separadas ni variables globales.
Qu es exactamente JAVA?
Corre en Varias plataformas, ya que el explorador del computador, interpreta el cdigo generado por el compilador(Byteco de) y lo convierte a lenguaje de mquina, donde se necesita ejecutar el programa.
Programa fuente [Link] Compilacin (Javac) [Link] ByteCode [Link] [Link]
JVM para la mquina 1
JVM para la mquina 2
JVM para la mquina 3
Cdigo mquina 1
Cdigo mquina 2
Cdigo mquina 3
Qu es exactamente JAVA?
Crea Applets, los cuales son programas interactivos para ejecutarse en la Red Internet con un Explorador Es seguro y confiable, ya que posee Excepciones, para la captura de errores A travs de la herencia se puede reusar cdigo, permitiendo un ahorro de tiempo de programacin.
Aplicaciones Java
Lenguaje de programacin que permite crear cinco tipos distintos de aplicaciones:
Aplicaciones Autnomos Applets. Manipuladores de Protocolo Manipuladores de Contenido Mtodos Nativos
Aplicaciones Autnomas
Es aquel programa que se puede ejecutar bajo un sistema operativo. En el caso del JDK, se utiliza el Dos para Compilacin, Generacin de ByteCode y despus ejecutarlo. 1. Compilacin y Generacin de ByteCode: javac <Nombre de [Link]> 2. Ejecucin: java <nombre de [Link]>
Modelo Ejecucin Programas Autnomos
Editor
Programa fuente [Link] Compilacin (Javac) ByteCode [Link]
JAVA es un lenguaje que se compila a un cdigo intermedio:
bytecode
Interpretacin por la JVM (Java) Cdigo mquina
Para ejecutar un programa, una mquina virtual interpreta ese cdigo.
APPLETS
Es aquel programa puede ejecutarse a travs de un Explorador. 1. Debe compilarse el programa fuente(extensin java), para as, generarse el programa ByteCode(extensin class) 2. Crearse un Archivo HTML <applet code=[Link] height=1000 width=1000> </applet> 3. Utilizando un explorador, ejecutarse el archivo HTML
Modelo Ejecucin APPLETS
JAVA es un lenguaje que se compila a un cdigo intermedio:
bytecode
Para ejecutar un programa, se necesita de un Explorador
Manipuladores de Protocolo
Programas que se cargan en el Navegador del Usuario e Interpreta un Protocolo. Estos protocolos, pueden ser los estandares, los HTTp FTP por ejemplo, como protocolos definidos por el usuario.
Manipulador de Contenido
Programas cargados en el navegador del usuario, que interpreta archivos de un tipo definido por el programador Java. El programador Java suministra el cdigo necesario para el navegador del usuario visualice/interprete un formato especial.
Mtodos Nativos
Mtodos que aparecen declarados en una clase Java, pero que estn implementados en lenguaje Java. En esencia, tales mtodos nativos permiten que el programador en Java pueda acceder a un cdigo C desde Java.
CLASES EN JAVA
En Java todas las clases son subordinadas de una superclase llamada Object
OBJECT CLASE A CLASE B
CLASE C
Declaracin de Clases
La sintaxis en Java es la siguiente: class Identificador { cuerpo-clase; } donde el identificador es el nombre de clase(Primera Letra en mayscula)
Ejemplo de Clase
class Triangulo { float area, altura; int a, b, c; void Triangulo (int la, int lb, int lc) { a = la; b = lb; c = lc; } }
Modificadores de clase
public. Indica que las variables y mtodos de una clase son accesibles, tanto dentro como fuera de la clase. abstract. Clase en donde se define los prototipos de los [Link] ejemplo, de una clase abstracta son las Interfaces final. Indica que esta clase no podr tener herencia.
Modificadores de Acceso Variables/Mtodos
predeterminado. Los objetos de una clase pueden tener acceso a las variables/mtodos public. Indica que las variables y mtodos de una clase son accesibles, tanto dentro como fuera de la clase. protected. Indica que los miembros de una clase slo son accesibles a mtodos de la clase y sus subclases.
Modificadores de Acceso Variables/Mtodos
static. Indica que una variable o un mtodo es el mismo para todos los objetos de una clase determinada.
final. En el caso de una variable indica que posee un valor constante. En el caso de un mtodo indica que un mtodo de una subclase no puede sustituirse.
Modificadores de Acceso Mtodos
native. Informa al compilador de Java que una implementacin de un mtodo es un archivo C externo. abstract. Mtodos declarados pero sin cuerpo(no implementados) syncrhonized. En el caso del Multisubprocesos, slo deja que acceda a un mtodo un nico subproceso, obligando a que los dems esperen su turno.
Constructor
Es un mtodo especial, implementable en todas las clases, que permite iniciar variables y ejecutar cualquier otra operacin, cuando se crea una instancia de esa clase (objeto). Tienen el mismo nombre que la clase.
Destructor
Es un mtodo que puede ejecutar operaciones que el programador necesita una vez se quiere destruir un objeto. En Java, el destructor se denomina finalize, debiendo declararse as: protected void finalize(){ }
Creacin de Objetos
Para crear un objeto o instancia de una clase, declare una variable objeto y use el operador new. Clase nombre=new Clase(parmetros) donde: nombre: Nombre de objeto parmetros: parmetros exigidos por el constructor
Creacin de Objetos
Ejemplo: 1. Suma A=new Suma(); La Clase es Suma, el objeto es A y el constructor a utilizarse es sin parmetros. 2. Suma A=new Suma(3); La Clase es Suma, el objeto es A y el constructor utiliza como parmetro un entero.
Creacin de Objetos
En Java, los vectores de nmeros como las cadenas de caracteres son Objetos, por tanto, se deben declarar as: tipo nombre[]=new tipo[dimension]; ejemplo: char c[]=new char[4]; int a[]=new int[4]; float b[]=new float[4];
BIBLIOTECA DE CLASES
La reutilizacin del cdigo es una de las ventajas de la POO, ahorrando as, cantidades de tiempo y esfuerzo. El Java reutiliza el cdigo en su implementacin de una gran variedad de objetos Los objetos Java se conocen de forma colectiva como las bibliotecas de clases de Java.
BIBLIOTECA DE CLASES
Las Bibliotecas de clases de Java se implementan como Paquetes, que contienen grupos de clases relacionadas. Junto con las clases, los paquetes Java tambin incluyen definiciones de interfaces, excepciones y de errores.
BIBLIOTECA DE CLASES
Java se compone de cinco bibliotecas de clases o paquetes: El Paquete del Lenguaje El Paquete de Utilidades El Paquete de E/S El Paquete del Sistema de Ventanas El paquete de trabajo en Red
PAQUETE DEL LENGUAJE
Tambin se conoce con el nombre de [Link], proporciona las clases que componen el ncleo del lenguaje Java, conteniendo as, las clases al nivel ms bajo. Se encuentra en este paquete, la clase Object, de la cual se derivan todas las clases.
PAQUETE DEL LENGUAJE
Se enumeran algunas clases que contiene este paquete: Object Character Number Math Clases de Cadenas
PAQUETE DE UTILIDADES
Conocido tambin como [Link], proporciona varias clases que trabajan con fechas, conjunto de clases de estructura de datos, para generar nmeros aleatorios, descomposicin de cadenas en tokens
PAQUETE DE E/S
Conocido tambin como [Link], proporciona las clases con soporte para la lectura y escritura de datos desde y hacia diferentes dispositivos de entrada y salida, incluyendo archivos. El paquete de E/S incluye clases para la entrada, salida de flujos de datos, trabajo de archivos,etc
PAQUETE DE TRABAJO EN RED
Una de las mejores caractersticas de java es su soporte de red. Java tiene clases que van desde conexiones TCP/IP de bajo nivel a otras que proporcionan acceso instantneo a recursos en la WWW