Upload
others
View
10
Download
0
Embed Size (px)
Citation preview
Fundamentos de
Programación con JavaIng. Juan Carlos Medina Díaz
¿Qué es un programa de Computadora?
1
• Serie de Instrucciones ejecutan
en el procesador central.
Paradigmas de la Programación
2
Paradigmas de la Programación
Paradigma “Patrón o Modelo”
Propuesta Tecnológica para la resolución de
problemas bien delimitada
Como es que el lenguaje será implementado
3
Programación Estructurada
4
Carro
CaracterísticasColor
Motor
Puertas
Cilindros
FuncionalidadesEnciende motor
Frena
Apaga motor
Nombre Marca
Numero de Puertas
Programación Orientada a Objetos
5
Carro
CaracterísticasColor
Marca
Cilindros
Puertas
FuncionalidadesEnciende()
Apaga()
asignaMarca()
Cilindros()
cargaGasolina()
POO vs Programación Estructurada
Programación Estructurada un solo bloque de código
Secuencia lógica de pasos
Hace uso de instrucciones de control como secuencias
repetitivas, condicionales, selectivas.
POO permite reutilización del código
Creación de sistemas mas complejos
Facilidad del trabajo en equipo
6
Orígenes POO (Programación Orientada
a Objetos).
Simula 67 lenguaje de simulación
Primer lenguaje de Programación que incorporo el
concepto de Clase
Desarrollado por Kristen Nygaard y Ole-Johan Dahl del
Centro Noruego de Computación en Oslo.
7
Orígenes POO (2)
Small Talk Desarrollado por la Empresa Xerox
Era propiamente un Sistema Operativo “Virtualizaba”
Todo es un objeto se comunica con “mensajes”
8
Orígenes POO (3)
Java Programación "Write Once, Run Anywhere“
Desarrollado en los años 90’s por Patrick Naughton
Primer nombre fue Oak
9
Estructura Básica POO (1)
Objeto
Mensaje
Clase
10
Estructura Básica POO (2)
Objetos
Encapsulación Abstracta de datos
Métodos para manipular datos
11
Estructura Básica POO(3)
Mensajes
Objetos: reciben, interpretan, responden
Acción a tomar:
mensaje: objeto.maximizar()
12
Estructura Básica POO(4)
Metodos
Establecen el comportamiento de la clase
13
Estructura Básica POO(5)
Clases
Generalización de objetos
Propiedades y comportamientos comunes de
Objetos -> Abstracción
Objeto -> representación concreta de la clase
14
Estructura Básica POO(6)
15
Propiedades Aplicadas POO
Abstracción
Encapsulamiento
Herencia
Polimorfismo
16
Abstracción
Gato
Nombre
Edad
Dueño
Raza
Maúlla()
Come()
Bebe()
Duerme
17
Encapsulamiento
Que puede ser visible y
que no puede ser visible
18
Herencia
Las clases pueden tener descendencia “compartir
características”
Reutilización de Código
19
Polimorfismo
Un mismo método ejecuta varias funciones
Mensaje a diferentes clases cada una responderá
apropiadamente
20
Lenguaje Unificado de Modelado
22
UML (1)
Modelos describen el aspecto y la conducta de "algo“
Sirve para representar visualmente las reglas de creación, estructura y comportamiento de un grupo relacionado de objetos y procesos
Orientado a Objetos
Proporciona los Planos del Sistema
22
UML (2)
Conjunto de normas que nos dicen cómo hay que representar
esquemas de software.
Gato
Cazar()
23
Tipos de Diagramas
Diagramas de casos de uso
Diagramas de clases
Diagramas de secuencia
Diagramas de Objetos
Diagramas de estados
Diagramas de actividades
24
Diagrama de Casos de Uso
Comportamiento del
Sistema desde la
perspectiva del Usuario.
Caso de Uso
Nombre Sistema
Comunicación Actor -
Caso de Uso
25
Diagrama de Clases
Relación entre las clases
que involucran el sistema
Comparten atributos,
operaciones, relaciones,
etc.
Todo parte - composición
26
Diagrama de Secuencias
Mensajes se
intercambian en
un contexto para
alcanzar un fin
27
Introducción a Java
Write Once, Run Anywhere
28
Tecnología Java
Lenguaje de programación parecido a C++
Ambiente de Desarrollo JDK Java Development Kit(
Herramientas)
Compatibilidad para generar aplicaciones móviles, web,
datos
Maquina Virtual
29
Versiones
Actualmente estas son las versiones mas utilizadas de
Java:
JSE o Java Standard Edition. Para desarrollo de aplicaciones
de escritorio, no tiene soporte para algunas tecnologías web
JEE o Java Enterprise Edition. Orientado a empresas y a la
integración entre sistemas. Incluye programas útiles
para Aplicaciones de Servidores
JME o Java Micro Edition. Orientado a Móviles( Teléfonos,
Tabletas,…)
30
Lenguaje de Programación Java
Diseñado para ser:
Orientado a objetos
Distribuido
Simple
Multihilo
Seguro
Independiente de la plataforma
31
Orientado a Objetos
Énfasis en la creación de objetos
Piezas de código que interactúan con otros objetos
Resolver problemas: interactuando objetos
Bases en SIMILA-67 (1967), C++, Java
32
Distribuido
Java se ha diseñado para trabajar en ambiente de redes
Contienen una gran biblioteca de clases para la utilización del protocolo TCP/IP, incluyendo HTTP y FTP
El código Java se puede manipular a través de recursos URL. Universal Resource Locator (URL)
La tecnología java permite descargar código de internet y ejecutarlo en la PC
33
Simple
Eliminación de partes complejas y obscuras de otros lenguajes de programación
No se permite manipulación directa con apuntadores a localidades de memoria
Manipulación de objetos usando referencia a objetos
Limpieza de la memoria por medio del Garbage Collector
Datos boolean sólo puede ser true o false no como en otros lenguajes (1 o 0)
34
Multihilo
Ejecución de varios procesos a la vez
Eficiencia en el sistema
35
Seguro
El entorno donde se ejecuta Java usa medidas de
seguridad para proteger a los programas de ataques
Medidas:
Prohibición de la manipulación de la memoria por medio de
apuntadores
Prohibición a programas distribuidos, como applets, lectura
y escritura al disco duro de una computadora
Soporte de firmas digitales (certificados de validación)
36
Independiente de la Plataforma
.class
37
Iniciando con Java
Write Once, Run Anywhere
38
Características Java (1)
Java Virtual Machine (JVM)
Recolección de basura (Garbage Collector)
Java Runtime Environment (JRE)
Tareas JVM
39
Java Virtual Machine
Maquina imaginaria que se emula en una maquina real
Código de los programas se guarda en archivos .class
Proporciona las especificaciones del hardware donde se va a ejecutar la aplicación
Java Compilación e Interpretación -> genera un bytecode (código maquina)
Garantizar la Portabilidad
40
Recolector de Basura
Muchos lenguajes de programación permiten reserva de
memoria, el programador no es consiente de ello
Java quita la responsabilidad al programador de la
administración de la memoria Garbage Colector se
encarga de liberar la memoria que se ocupó
La liberación de memoria es automática durante el ciclo
de vida de un programa java
41
Java Runtime Environment (JRE)
42
Tareas JVM
Cargar el código -> class loader
Verificar el código -> bycode verifier
Ejecutar el código -> runtime interpreter
43
Class Loader
Carga todas las clases necesarias para la ejecución del
programa
Agrega seguridad por dominios (namespaces)
Clases locales
Clases de la red
Después de cargar todas las clases, se determina la memoria
para el archivo ejecutable
44
Bytecoder
Revisa el formato del código - código válido
Pasos del verificador de código
1. Toda clase debe coincidir con el formato de archivo de
clases de la especificación JVM
2. No debe existir ninguna violación de restricción de acceso
3. El código no debe generar overflows o underflows de pila
4. Los tipos de los parámetros del código funcional deben ser
correctos
5. No debe existir conversiones ilegales
45
ImpSaludo.java
1. // Clase imprime un saludo
2. // archivo: ImpSaludo.java
3. public class ImpSaludo
4. {
5. public static void main(String[] args)
6. {
7. Saludo obj = new Saludo();
8. obj.saludar()
9. }
10. }
Comentarios
Nombre de la Clase
Punto de Inicio
Creación de Objeto
Mensaje a Método
46
Saludo.java
1. // Implementa Saludo
2. // archivo: Saludo.java
3. public class Saludo
4. {
5. public void saludar()
6. {
7. System.out.println("Hola !!!");
8. }
9. }
47
Ejecución del Programa (1)
48
Ejecución del Programa (2)
Compilación
javac ImpSaludo.java genera ImpArchivo.class
C:\> javac ImpSaludo.java
Ejecución (nombre del archivo class sin la extensión) java
ImpSaludo
C:\> java ImpSaludo (contiene al método main)
49