Programación de computación III
Ing. Victor Daniel Angulo Morales MsC
Universidad Militar Nueva Granada.
Facultad de Ingeniería.
Ingeniería Mecatrónica
2020
Competencia General
• Las competencias necesarias para manejar los
fundamentos de la programación orientada a
objetos en aplicaciones concretas de interfaces de
sistemas de control, el manejo de computación
gráfica y en tiempo real.
2
Competencias específicas
• Desarrolla un aplicativo para dar solución a un problema relacionado con la vida real utilizando programación
estructurada y programación orientada a objetos
• Reconoce y maneja la sintaxis de un lenguaje de programación
• Entiende los conceptos necesarios para el manejo de Estructura de datos
• Modela soluciones mediante la aplicación de los conceptos de la programación orientada a objetos
• Reconoce los conceptos básicos de gráficos bidimensionales.
• Propone alternativas de solución a un problema
• Indica las instrucciones básicas para la elaboración de un programa
• Expresa inquietudes con respecto a aspectos semánticos y sintácticos del lenguaje
• Detecta y corrige los errores de lógica y sintaxis obtenidos al depurar un programa
• Formula, argumenta y da soluciones para la creación de un aplicativo orientado a objetos
• Manifiesta interés en aprender de forma autónoma
• Desarrolla habilidades para buscar, procesar y analizar información procedente de diferentes fuentes
3
Habilidades
• Analizar y explicar el comportamiento de programas
estructurados.
• Analizar y explicar el comportamiento de programas
de acuerdo con el paradigma de la programación
orientada a objetos.
• Crear algoritmos para resolver problemas.
• El diseño de programas utilizando Java.
4
Contenidos Generales
1. Introducción del curso
2. Programación Orientada a objetos
3. Tipos de datos
4. Jerarquias
5. Parcial
5
Contenidos Generales II
6. Estructura de datos
7. Listas, pilas, colas y arboles
8. Gráficos 2D
9. Eventos en geometrías
10. Librerias Java
11. Parcial II
6
Contenidos Generales III
12. Procesos de manejo de CAD
13. Espacio 3D
14. Librería Java 3D
15. Librerías de manejo de comunicación datos RxTx
16. Arduino-motores-Java
7
Evaluación
• Primer corte (30%): Quices(20%) – Talleres(30%) –
Parcial(50%)
• Segundo corte (30%): Quices(20%) – Talleres(30%) –
Parcial(50%)
• Tercer corte (40%): Quices(10%) – Talleres(30%) – Proyecto
Final(60%)
8
Proyecto Mecatrónico
• Grupos: 3 estudiantes
• Documentación
• Implementación mecatrónica
• Implementación software
9
Material complementario
• Aula Virtual
• Bibliografía
10
Lecturas recomendadas I
• Object-Oriented Analysis and Design
with Applications. Third Edition.
Addison-Wesley (2007). Booch G. et al.
• Es un libro donde se sientan las bases de la tecnología de objetos, así
como los conceptos metodológicos para hacer análisis y diseño
orientado a objetos. El libro incide más en el diseño que en el análisis.
11
Lecturas recomendadas II
• UML Distilled: A Brief Guide to the
Standard Object Modeling Language
(3rd Edition). Addison-Wesley (2003).
Martín Fowler.
• Es un libro para principiantes en UML. Trae un resumen breve y
escueto de la notación UML. Es un libro práctico para entender
rápidamente la notación. Existe una versión en castellano.
12
Lecturas recomendadas III
• The Unified Modeling Language User
Guide. 2nd Edition. Grady Booch,
James Rumbaugh and Ivar Jacobson.
Addison-Wesley (2005).
• Es un libro para ya iniciados en UML. Es un buen complemento para
“UML distilled”. Profundiza más en los distintos diagramas.
13
Herramientas
Integrated Development Environment (IDE)
• https://www.oracle.com/technetwork/es/java/java
se/downloads/jdk-netbeans-jsp-3413139-esa.html
14
Herramientas
UML
• GIMP
• Visio
• Enterprise Architect
• Otros
15
Introducción - Repaso
• Algoritmo, tipos de datos, variables, constantes.
16
Introducción - Repaso
17
Introducción - Repaso
• Semántica y sintaxis.
18
Introducción - Repaso
19
Introducción - Repaso
20
Introducción - Repaso
21
Introducción - Repaso
22
Introducción – Repaso
Bucles
• For
• While
• Do-While
23
Introducción – Repaso
Funciones
24
Introducción – Repaso
Taller programación
1. Hacer un programa que imprima el nombre y la edad de una persona tomando los datos de variables
2. Hacer un programa que imprima el nombre y la edad de una persona tomando los datos de teclado
3. Realizar un programa que solicite ingresar dos números distintos y muestre por pantalla el mayor de ellos.
4. Realizar un programa que lea por teclado dos números, si el primero es mayor al segundo informar su suma y diferencia, en
caso contrario informar el producto y la división del primero respecto al segundo.
5. Hacer un programa que pida por teclado tres notas de un alumno (1-10), calcule el promedio e imprima alguno de estos
mensajes
Si el promedio es >=7 mostrar "Aprobó".
Si el promedio es >=4 y <7 mostrar "Regular".
Si el promedio es <4 mostrar "Reprobó".
6. Hacer un programa que permita cargar un número entero positivo de hasta tres cifras y muestre un mensaje indicando si tiene
1, 2, o 3 cifras. Mostrar un mensaje de error si el número de cifras es mayor.
7. Realizar un programa que imprima en pantalla los números del 1 al 100
8. Desarrollar un programa que permita la carga de 10 valores por teclado y nos muestre posteriormente la suma de los valores
ingresados y su promedio(utilizar for).
9. Desarrollar un programa que solicite la carga de 10 números e imprima la suma de los últimos 5 valores ingresados
10. Hacer un programa que permita ingresar un valor n y nos muestre la tabla de multiplicar
25
JAVA
Lenguaje de programación multiplataforma de
propósito general orientado a objetos desarrollado
por Sun Microsystems. Un programa Java (.java) se
compila y se obtiene un código llamado bytecode
(.class), el cual es interpretado por la Java Virtual
Machine (JVM), posibilitando que un mismo código
fuente pueda ser ejecutado en múltiples plataformas.
26
El método main
• Es un estándar para iniciar la ejecución de cualquier
programa Java. Es el punto principal de ejecución, al
crear un Java Application este se genera por
defecto.
27
Clase Scanner
28
Clase BufferedReader y
InputStreamReader
29
IF
30
while
31
Do - while
32
for
33
Switch Case
34
AOO – DOO - POO
35
AOO – DOO - POO
36
AOO – DOO - POO
37
Objeto – Clase - Abstracción
38
Objeto - Clase
39
Objeto - Clase
40
Objeto - Clase
Una clase es un conjunto de objetos que comparten
una estructura común y un comportamiento común
[Booch 2007]
• Los objetos en el sistema se deben de tratar como
seres vivos que nacen(constructores), viven (están
activos), duermen (están pasivos), se reproducen
(copia de objetos), y mueren por eutanasia
(destructores) o por inanición (recolector de
basura)
• En las clases se definen las propiedades y
operaciones comunes de los objetos. Los nombres
de las clases son nombres comunes.
• Los nombres de los métodos son verbos, pues
especifican las acciones que realizan los objetos
41
Diagrama de Clases
42
Diagrama de Clases
43
Diagrama de Clases
44
Diagrama de Clases
45
Declaración de atributos
46
Declaración de constructores
47
Declaración de métodos selectores
48
Declaración de métodos selectores
49
Declaración de método toString
50
Prueba unitaria
51
Diagrama de Clases UML I
52
Clase Vehiculo
53
Convenciones
• Los nombres de los paquetes se escriben en minúsculas:
package tutoria.clases;
• Los nombres de las clases deben empezar por
mayúsculas: Perro, Pato
• Los métodos deben ser verbos escritos con la palabra
inicial en minúscula: balanceCuenta()
• Las variables deben escribirse con la inicial en minúscula
pero con iniciales de otras palabras en mayúsculas para
indicar separación: pasajeroFrecuente
54
Conclusiones diseño de clases
• Una clase es un tipo definido por el usuario, que permite crear objetos. Las clases tienen miembros formados por campos y
métodos.
• Los campos miembro suelen declararse protegidos (protected), salvo en casos especiales que se declaran privados (privated)
• Los métodos públicos (public) permiten acceder a los campos miembro desde el exterior de la clase
• Los métodos selectores no modifican el valor de los campos miembro. Se suelen denominar:
• – ver...campoMiembro( ) (en castellano). ¡ ver, pero no tocar !
• – get...campoMiembro( ) (en inglés).
• – Suele declararse un método por cada tipo de campo miembro accesible
• – Son una garantía para que no se modifiquen accidentalmente los campos miembro
• Los métodos modificadores permiten modificar los campos miembro de la clase. Se suelen denominar
• – pon...campoMiembro( ) (en castellano).
• – set...campoMiembro( ) (en inglés).
• – Suele declararse un método por cada tipo de campo miembro accesible
• – Establecen el camino de cómo se modifican los campos miembro y realizan las comprobaciones necesarias.
• Los constructores crean los objetos
• – Pueden estar sobrecargados (overload). Se pueden definir varios métodos con el mismo identificador pero que difieran en
número o tipo de parámetros.
• – Se aconseja poner siempre constructores, para saber donde y cuando se crean los objetos.
• – Se puede poner un mensaje que indique cuando y donde se están construyendo los objetos. Muy aconsejable para depurar
programas.
55
Tipos de datos (Primitivos)
Deitel, P. J., & Deitel, H. M. (2008). Java: como
programar. Pearson Educación,.
56
Clase Math
57
Sentencias de control
Es común en un programa que las instrucciones se ejecuten una después de otra, en el orden
en que están escritas. Este proceso se conoce como ejecución secuencial. Varias
instrucciones en Java, permiten al programador especificar que la siguiente instrucción a
ejecutarse tal vez no sea la siguiente en la secuencia. Esto se conoce como transferencia de
control.
El término programación estructurada se hizo casi un sinónimo de la “eliminación del
goto”. No fue sino hasta la década de 1970 cuando los programadores comenzaron a
tomar en serio la programación estructurada.
58
Diagrama de actividades
https://www.omg.org/spec/UML/2.5.1/PDF
59
Diagrama de actividades
Notación - Básicos
• Inicio:
• Final:
• Decisión:
• Acción:
60
Diagrama de actividades
Notación - Básicos
• Merge (Fusión):
• Notas:
61
Diagrama de actividades
Instrucción de selección IF
62
Diagrama de actividades
Instrucción de repetición While
63
Diagrama de actividades
Instrucción de repetición For
64
Diagrama de actividades
Instrucción de repetición Do..While
65
Diagrama de actividades
Instrucción de selección Switch..Case
66
Operadores Lógicos AND OR
Operador && (AND condicional) Operador || (OR condicional)
67
Diagrama de actividades
Formas de control
Secuencia:
68
Diagrama de actividades
Formas de Control - Selección
69
Diagrama de actividades
Formas de Control - Repetición
70
Diagrama de actividades
71
Arreglos - Java
72
Arreglos - Java
73
Arreglos - Java
74
Arreglos - Java
75
Arreglos - Java
76
Arreglos - Java
77
Taller
• Identificar una lista de objetos (10 Objetos)
• De la lista de objetos obtener una lista de clases utilizando la
abstracción y las características comunes de los objetos (8
Clases)
• De la lista de clases elegir una clase que sea representativa
• Diseñar la clase en UML (Diagrama de Clases)
• Implementar la clase en Java
• Realizar el Diagrama de Actividades UML
• Hacer pruebas unitarias de la clase con objetos.
78
Quiz
• Realice el diagrama de actividades de:
• Leer un entero, que corresponde a la edad de una
persona (en días) e imprimirlo en años, meses y días,
seguido del respectivo mensaje “ano(s)”, “mes(es)”,
“dia(s)”.
– Nota: Para facilitar el cálculo, considere al año con 365
días y al mes con 30. En los casos de prueba nunca habrá
una situación que permita 12 meses y algunos días, como
360, 363 ó 364.
79
Jerarquía
En programación orientada a objetos, estas
abstracciones pueden ordenarse y clasificarse, a
esto se le conoce como Jerarquia.
80
Jerarquía - Generalización o Herencia
Extensión (en Java)
La herencia o generalización es una relación entre
una clase general (llamada superclase o padre) y una
clase más específica (llamada hija o subclase). La
clase hija hereda todos los atributos y operaciones de
la clase padre.
81
Jerarquía - Generalización o Herencia
82
Jerarquía - Generalización o Herencia
83
Jerarquía - Generalización o Herencia
84
Jerarquía - Generalización o Herencia
85
Jerarquía - Generalización o Herencia
86
Polimorfismo
Es un mecanismo que permite a un método realizar
distintas acciones al ser aplicado sobre distintos tipos
de objetos que son instancias de una misma jerarquía
de clases
•Polimorfismo significa “muchas formas”
•No se debe confundir polimorfismo con sobrecarga.
87
Polimorfismo
Clase Vehiculo
Clase Carro
Clase Camion
88
Polimorfismo
89
Clase Abstracta
•Las clases abstractas son clases que contienen uno
más métodos abstractos
•Un método abstracto es un método declarado pero
no implementado. La implementación se hace en una
clase derivada
90
Clase Abstracta
91
Clase Abstracta
92
Clase Abstracta
93
Clase Abstracta
94
Interfaz
95
Agregación y composición
• La agregación y la composición plantean el problema de la propiedad, vida y
relaciones entre los componentes agregados y la clase contenedora que los contiene.
• Las relaciones de agregación y composición son jerarquías “parte de” o “tiene un”
• La agregación no liga las vidas de la clase contenedora y de las partes que la
componen.
• La composición es una forma de agregación con una fuerte relación de
pertenencia y vidas coincidentes de las partes con el todo.
96
Agregación y composición
97
Taller
98