Fundamentos de Programación con Java · Fundamentos de Programación con Java Ing. Juan Carlos...

50
Fundamentos de Programación con Java Ing. Juan Carlos Medina Díaz [email protected]

Transcript of Fundamentos de Programación con Java · Fundamentos de Programación con Java Ing. Juan Carlos...

  • Fundamentos de

    Programación con JavaIng. Juan Carlos Medina Díaz

    [email protected]

  • ¿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