2. CONTENIDO
Presentación de Materia
Del Profesor
Contenido Programático
Evaluación del Curso.
Programacion Orientada a Objetos
Generalidades de JAVA
3. DEL CATEDRATICO
Profesor : Jorge Alberto Campos Rosa
Profesión : Ingeniero en Sistemas, Master en Informática,
Experiencia Laboral:
mas de 30 años de experiencia en el área de informática.
Programador para PHP/ Visual Studio Microsft/JAVA,
Administrador de Servidores en LINUX y Servidores Windows.
Catedrático de las Materias de Redes en U Evangélica.
Cursos de CISCO, Routing and Switch HP (3COM)
Cursos de Administración de Redes Windows y Linux.
PARA CONSULTAS SOBRE LAS CLASES Y DUDAS DE LOS TEMAS DESARROLLADOS:
Correo Electrónico : jcamposr@gmail.com
Facebook : buscar por nombre completo
Tel Celular : 7874-8988, 7416-4998
4. PRESENTACION DE LA MATERIA
Nombre : PROGRAMACION ORIENTADA A
OBJETOS.
Código: POO01
Prerrequisito: Ofimática y Tecnologías Eficaces
Duración del ciclo en semanas: 16
Duración de la hora clase: 50 minutos
Horario : Miercoles 06:10 am a 08:20 am
Laboratorio :
5. CONTENIDO PROGRAMATICO
OBJETIVO
Cimentar los conocimientos necesarios sobre la programación orientada a
objetos con el lenguaje de programación Java, para poder seguir con
normalidad el desarrollo de aplicaciones de consola y escritorio
ESPECIFICOS
Identificar y aplicar correctamente los diferentes conceptos que integran el
paradigma de orientación a objetos como herramienta de análisis y diseño de
software.
Comprender y utilizar las relaciones válidas dentro de POO para modelar los
vínculos existentes entre los componentes de un sistema software.
Integrar UML con el paradigma de orientación a objetos como un estándar
actualmente utilizado en el área de diseño y modelado de software
6. Unidad I: Conceptos generales de POO.
Objetivo: Conocer y aplicar de forma clara y adecuada, los conceptos
básicos del paradigma de la programación orientada a objetos.
I.1 Lenguaje de Programación Java.
I.2 Estructuras de control Condicionales e Iterativas.
I.3 Clases, objetos, atributos y métodos
I.4 Mensajes
I.5 Elementos estáticos
I.6 Herencia y polimorfismo
I.7 Clases abstractas
I.8 Interfaces
I.9 Relación de clases
I.10 Paquetes
CONTENIDO PROGRAMATICO
7. Unidad II: Herencia y generalización
Objetivo: Modelar sistemas basados en clases y objetos, mediante las relaciones
válidas dentro del paradigma de orientación a objetos.
II.1 Relaciones de generalización/especialización.
II.2 Herencia múltiple y repetida.
II.3 Relaciones de agregación y asociación
II.4 Cardinalidad de las relaciones.
Unidad III: Modelado con UML
Objetivo: Introducir al estudiante en los conceptos fundamentales de UML como
metodología para el análisis, diseño y desarrollo de sistemas software.
III.1 El proceso unificado de desarrollo.
III.2 UML y la orientación a objetos.
III.3 Casos de uso.
III.4 Arquitectura de software
CONTENIDO PROGRAMATICO
8. Utilizaremos Pseudocodigo, colección de palabra
reservadas que se usaran como comandos.
Diagramas de Flujo, para representar gráficamente una
solución.
Libros de la Biblioteca de UPES.
Libros en Formato Digital
Cualquier otro recurso que esta a disposición de los
alumnos.
Campus Virtual para colocar clases.
RECURSOS TECNOLOGICOS
10. PROGRAMACION ORIENTADA A
OBJETOS
Los problemas suelen tener varias soluciones posibles.
En programación existen diversas metodologías que
nos ayudan a enfrentar un problema.
Cada metodología tiene diversos lenguajes que las
soportan.
Algunos lenguajes soportan varias metodologías.
Metodología Lenguaje
Estructurada Fortran, C, Pascal, Basic
Orientada a objetos
(OOP)
C++, Java, Smalltalk
Orientada a eventos VisualBasic
11. Programación Orientada a
Objetos
Definición:
La Programación Orientada a Objetos (OOP) es un método de
programación en el cual los programas se organizan en colecciones
cooperativas de objetos, cada uno de los cuales representa una instancia
de alguna clase, y cuyas clases son, todas ellas, miembros de una
jerarquía de clases unidas mediante relaciones de herencia.
Comentarios:
Usamos objetos en lugar de algoritmos como bloque fundamental
Cada objeto es una instancia de una clase
Las clases están relacionadas entre sí por relaciones tan complejas como la herencia
12. Ventajas de la POO
Proximidad de los conceptos modelados respecto a objetos del mundo
real
Facilita la reutilización de código
Y por tanto el mantenimiento del mismo
Se pueden usar conceptos comunes durante las fases de análisis, diseño
e implementación
Disipa las barreras entre el qué y el cómo
13. Desventajas de la POO
Mayor complejidad a la hora de entender el flujo de
datos
Pérdida de linealidad
Requiere de un lenguaje de modelización de problemas
más elaborado:
Unified Modelling Language (UML)
Representaciones gráficas más complicadas
14. Conceptos de la OOP
Conceptos básicos
Objeto
Clase
Características de la OOP
Abstracción:
Encapsulamiento:
Modularidad:
Jerarquía
Otros conceptos OOP
Tipos
Persistencia
Tipos de relaciones
Asociación
Herencia
Agregación
Instanciación
Representaciones gráficas
Diagramas estáticos (de
clases, de objetos...)
Diagramas dinámicos (de
interacción...)
15. Objeto y Clase
Un objeto es algo de lo
que hablamos y que
podemos manipular
Existen en el mundo real (o en
nuestro entendimiento del
mismo)
Una clase describe los
objetos del mismo tipo
Todos los objetos son instancias de
una clase
Describe las propiedades y el
comportamiento de un tipo de
objetos
Clase
Atributos
Operaciones
Objeto:Clase
Atributo1=valor
Atributo2=valor
...
16. Conceptos OOP: Abstracción
Nos permite trabajar con la complejidad del mundo real
Resaltando los aspectos relevantes de los objetos de una clase
Ocultando los detalles particulares de cada objeto
Separaremos el comportamiento de la implementación
Es más importante saber qué se hace en lugar de cómo se hace:
Un sensor de temperatura
Se define porque...
mide la temperatura
nos muestra su valor
se puede calibrar...
No sabemos... (no nos importa)
cómo mide la temperatura
de qué está hecho
cómo se calibra
17. Conceptos OOP: Abstracción
La abstracción no es única:
Un coche puede ser...
Una cosa con ruedas, motor, volante y pedales
(conductor)
Algo capaz de transportar personas (taxista)
Una caja que se mueve (simulador de tráfico)
Conjunto de piezas (fabricante)
18. Conceptos OOP:
Encapsulamiento
Ninguna parte de un sistema complejo debe depender de los
detalles internos de otra.
Complementa a la abstracción
Se consigue:
Separando la interfaz de su implementación
Ocultando la información interna de un objeto
Escondiendo la estructura e implementación de los métodos
(algoritmos).
Exponiendo solo la forma de interactuar con el objeto
19. Conceptos OOP:
Encapsulamiento
Vemos que se puede...
Construir con:
4 puntos (y restricciones)
1 punto y 2 vectores
1 punto, 1 vector, 1
ángulo y 1 lado
Transformaciones:
Escalado
Rotación
Desplazamiento
Dibujar
No vemos...
Como está representado
internamente
4 puntos?
1 punto y 2 vectores?
...
Como se modifica su escala
Guardando el factor?
Escalando en el momento?
Idem para rotación, traslación,
etc...
Ejemplo: Un paralelogramo
20. Conceptos OOP: Modularidad
Consiste en separar el sistema en bloques poco ligados entre sí:
módulos.
Organización del código
Es una especie de encapsulamiento de más alto nivel.
El C++ no lo impone aunque lo soporta (namespace)
El Java es más formal (packages)
Difícil pero muy importante en sistemas grandes.
Suele aplicarse refinando el sistema en sucesivas iteraciones
Cada módulo debe definir una interfaz clara
21. Conceptos POO: Jerarquía
Es una clasificación u ordenamiento de las abstracciones
Hay dos jerarquías fundamentales:
Estructura de clases:
Jerarquía “es un/a”
Relaciones de herencia
Estructura de objetos:
Jerarquía “parte de”
Relaciones de agregación
Está implementada de manera genérica en la estructura
de clases
22. Conceptos OOP: Persistencia
Propiedad de un objeto de trascender en el tiempo y
en el espacio a su creador (programa que lo generó)
No se trata de almacenar sólo el estado de un objeto
sino toda la clase (incluido su comportamiento)
No está directamente soportado por el C++
Existen librerías y sistemas completos (OODBMS)
que facilitan la tarea
Frameworks (entornos) como ROOT lo soportan
parcialmente (reflex)
El concepto de serialización del Java está
directamente relacionado con la persistencia
23. Relaciones
Están presentes en cualquier sistema
Definen como se producen los intercambios de
información y datos
También ayudan a comprender las propiedades de
unas clases a partir de las propiedades de otras
Existen 4 tipos de relaciones:
Asociación
Herencia
Agregación
Instanciación
26. ¿Qué es
JAVA?
Es un lenguaje de programación para añadir interactividad,
dinamismo entre otras funcionalidades al contenido de una pagina
web.
27. ¿Qué puede hacer
JAVA?
Puede hacer un
APPLET , que es un
programa mas
pequeño dentro de
un programa, que
es un programa del
navegador por
ejemplo
28. El lenguaje de programación JAVA
fue desarrollado para tener las
siguientes características :
Orientado a objetos. Busca crear objetos o piezas de código autónomo, que pueda
interactuar con otros objetos para resolver un problema.
Distribuido. Proporciona una colección de clases para su uso en aplicaciones de red,
que permiten abrir sockets y establecer y aceptar conexiones con servidores o
clientes remotos.
Simple. Posee una curva de aprendizaje muy rápida.
Multihilo. Soporta la sincronización de múltiples hilos de ejecución a nivel de
lenguaje.
Seguro. Se implementaron barreras de seguridad en el lenguaje y en el sistema de
ejecución en tiempo real.
Independiente de la plataforma. No requiere que sus programas sean compilados ni
ligados en cada máquina.
29. En diciembre de 1950 Patrick Naughton,
ingeniero de Sun Microsystems, reclutó a
varios colegas entre ellos James Gosling y
Mike Sheridan para trabajar sobre un nuevo
proyecto conocido como "El proyecto
verde". Con la ayuda de otros ingenieros,
empezaron a trabajar en una pequeña
oficina en Sand Hill Road en Menlo Park,
California.
30. JAVA Y SUS INICIOS
JAVA surge en 1991 cuando un grupo de ingenieros de
Sun Microsystems trataron de diseñar un nuevo lenguaje
de programación destinado a electrodomésticos. No fue
creado originalmente para la red internet. Sun
Microsysteam comenzó a desarrollarlo con el objetivo
de crear un lenguaje independiente de la plataforma y
del sistema operativo. Para el desarrollo de electrónica
de consumo (dispositivos electrónicos inteligentes ,
como televisores, videos, televisores , equipos de
música, etc)
31. Sucesos
importantes
1992 El equipo ya había desarrollado un sistema en un prototipo
llamado Star7 (*7).
1995 JAVA se introduce como lenguaje de programación para
computadoras.
incorporación de un intérprete Java en la versión 2.0 del programa
Netscape Navigator, produciendo una verdadera revolución en
Internet. Java 1.1 apareció a principios de 1997, mejorando
sustancialmente la primera versión del lenguaje.
Java 1.2, más tarde rebautizado como Java 2, nació a finales de
1998. Java incorpora en el propio lenguaje muchos aspectos que en
cualquier otro lenguaje son extensiones propiedad de empresas de
software o fabricantes de ordenadores (threads, ejecución remota,
componentes, seguridad, acceso a bases de datos, etc.)
32. Dispositivo e interface del prototipo denominado *7(star
seven) con el cual se hizo una demostración de la plataforma
JAVA (aún no denominada con este nombre).
35. Todas las instrucciones de código en Java deben terminar con un signo punto y coma ” ;
Todas las variables al igual que en otros lenguajes deben iniciar con una letra mas no con
un numero o carácter especial, pueden iniciar con una letra y posteriormente usar
números para nombrarlas.
36. -Otra regla importante es que para llevar
una estructura correcta, todo programa en
Java debe tener mínimo una clase, las
cuales deben tener métodos.
Las clases se crean de la siguiente manera:
public class Nombredeclase /*aqui se declara
una clase, nótese que comienza con
mayúsculas la cual es la forma correcta de
nombrar una clase*/
{
public static void main(String args[ ]){}/* este
es el metodo principal de la clase, dentro de
este se escriben instrucciones*/
}
37. DUKE, LA MASCOTA DE JAVA
Duke es la Mascota Oficial de Java. Fue
creado en le año de 1992, para aparecer
en un dispositivo llamado *7 (Star Seven),
creado por un grupo secreto de
programadores de Sun Microsystem,
llamado The Green Project.
Duke era "el agente de Software", era el
que "hacia" las cosas que el usuario pedía
por medio de la pantalla animada.
Podía moverse e interactuar con toda la
interfaz, incluso tenia un maletín para
llevar las cosas importantes.