Ilovepdf Merged
Ilovepdf Merged
Ilovepdf Merged
EMPRESARIAL DE GUAYAQUIL
FACULTAD DE ESTUDIOS ONLINE
2
Índice
1. Introducción ...............................................................................................
2. Objetivos....................................................................................................
3. Desarrollo de unidades ..............................................................................
INTRODUCCIÓN
2. Objetivos
Objetivo General:
Analizar y comprender desde la base teórica y práctica las metodologías de
Programación orientada a objetos y diseño de software mediante el modelado de
datos en el transcurso del tiempo.
.
Objetivos específicos:
3. Desarrollo de unidades
3.1. Unidad I: Lenguajes de Programación y Algoritmos
3.1.1. Evolución de los Lenguajes de Programación
• Programación procedural
• Programación declarativa
• Programación orientada a objetos
En resumen:
• Los datos y las acciones para realizar sobre ellos son diferentes.
• Los datos que operan sobre los métodos se definen por separado.
3.1.6. Definición
Así, por ejemplo, en una analogía con la vida diaria, una receta de un plato de cocina
se puede expresar en español, inglés o francés, pero cualquiera que sea el lenguaje,
los pasos para la elaboración del plato se realizarán sin importar el idioma del
cocinero.
3.1.8. Objetivos
3.1.9. Representaciones
Los diagramas de flujo utilizan símbolos geométricos para cada uno de los pasos
que integran el algoritmo. Permite de manera gráfica ilustrar la secuencia de
operaciones que se realizan para resolver un problema.
Los símbolos más utilizados son: inicio y fin del diagrama, actividad, decisión, las
flechas indican la dirección del flujo, el siguiente símbolo la entrada de datos,
también hay un conector para unir el flujo a otra parte del diagrama y por último, el
de impresión o desplegado de información.
Ejemplo.
3.2.1. Introducción.
Define los programas en términos de “clases de objetos”, objetos que son entidades
que combinan estado (propiedades o datos), comportamiento (procedimientos o
métodos) e identidad (propiedad del objeto que lo diferencia del resto).
Otros autores, definen a la Programación Orientada a objetos en términos de
técnicas que permiten llevar los problemas del mundo real a un sistema informático
con el objetivo de solucionarlos.
Entre las características relevantes de la POO se encuentran: abstracción,
modularidad, encapsulación, herencia y polimorfismo.
3.2.2. Clase
Es un molde del que luego se pueden crear múltiples objetos, con similares
características.
Define los atributos y métodos comunes a los objetos de ese tipo, pero luego, cada
objeto tendrá sus propios valores y compartirán las mismas funciones.
Contiene:
• Conjunto de atributos comunes: Son privados no accesibles desde afuera
(características).
• Estructura de datos
• Comportamiento por medio de métodos: Son privados o públicos
(comportamiento).
Es la parte del objeto que lleva a cabo las operaciones sobre los atributos definidos
para ese objeto.
El objetivo principal es que el objeto agrupar en una sola entidad los datos y las
operaciones y para acceder a los datos privados del objeto se debe utilizar los
métodos que hay definidos para ese objeto.
3.2.4. Objeto
Ejemplos:
3.2.5. Variables
Hay 2 categorías de tipos para variables, los tipos primitivos (como int, short, byte,
long, char, boolen y double) y las referencias a objetos (como String, Array y otros
objetos).
3.2.6. Constructores
Sintaxis
El nombre del constructor deber ser igual que el de la clase. Por lo cual, se diferencia
entre los diferentes constructores que se puede tener en la clase con los otros
métodos.
Los modificadores son los mismo que el de las funciones. Así, para los constructores
Por defecto, el constructor se habilita cuando se crean instancias de los objetos pero
si se especifica un constructor, el constructor por defecto ya no se aplica.
Si todos los constructores tienen parámetros y se hace una llamada a la clase sin
argumentos, no se espera que el constructor por defecto se ejecute, porque se ha
perdido. Así que causaría en error de compilación.
3.2.8. Encapsulamiento
• Modularidad: el código fuente de un objeto puede ser escrito, así como darle
Los lenguajes de programación permiten trabajar con librerías para las interfaces
gráficas de usuario (GUI): AWT y Swing, como ventanas, cuadros de diálogo, barras
de herramientas, botones, listas desplegables y otros elementos que ya hemos
usado.
Las aplicaciones son conducidas por eventos y se desarrollan haciendo uso de las
clases que para ello nos ofrece el API de Java.
Existen clases en AWT como en Swing que tienen la misma finalidad. Por ejemplo,
en ambas librerías se tiene una clase para crear ventana Frame en el caso de AWT
y JFrame en el caso de Swing, su nombre empieza por J.
Es una propiedad que permite que los objetos sean creados a partir de otros ya
existentes, obteniendo características (métodos y atributos) similares a los ya
existentes.
En Java sobrecargar un método es tener dos o más métodos con el mismo nombre,
pero con diferentes tipos de parámetros u operaciones, es tarea del compilador
saber usar un método u el otro dependiendo del tipo de dato que se le pase como
parámetro.
Por otro lado, se tiene la sobreescritura de métodos, que está relacionada con la
herencia de clases en Java. Por lo cual, una subclase hereda todos los métodos de
su clase padre, estos métodos son accesibles a dicha subclase a menos que la
subclase sobrescriba los métodos.
Las clases abstractas son aquellas que no se pueden identificar con algo
'específico', porque no existen en el mundo real, pero sí poseen determinadas
características que son comunes en otras clases que pueden ser creadas a partir
de ellas.
Para comprender mejor, un ejemplo de clase abstracta sería una clase llamada
Vehículo: todos ellos realizan acciones similares como arrancar, acelerar, frenar,
entre otros.
Sin embargo, existen muchos tipos de carros que son diferentes y que se comportan
de forma totalmente distinta, por ejemplo: el proceso de arrancar no se realiza
siguiendo los mismos pasos, unos tienen que despegar y volar como los aviones.
Es decir, en el mundo real no existe un objeto 'vehículo' como tal, sino que hay
diferentes tipos de vehículo, pero, aunque poseen características comunes o
similares y realizan las mismas acciones lo hacen de forma muy diferente y ciertas
acciones específicas según su tipo.
Conviene subrayar que una clase abstracta no representa algo concreto, por lo cual,
no puede ser instanciada, no se puede crear un objeto a partir de ella, pero sí es
posible crear otras clases en base a su definición.
Interfaz
Por mencionar:
La interfaz Volante ofrece los métodos:
•
Enlace dinámico
Upcasting y Downcasting
3.2.13. Polimorfismo
Ejemplo: saludo entre dos personas. Puedes pensar entonces en la clase llamada
Persona y cada persona tiene la habilidad de hablar. Pero como sucede en la vida
real, las personas pueden hablar diferentes idiomas. Entonces, se tendrá un método
llamado saludo.
Hi
Hola
Se tienen las clases envolventes que tienen dos principales funciones en java:
Existe para cada tipo primitivo una clase envolvente, nombrada igual que su dato
primitivo pero su nombre empieza con mayúscula.
Información de File:
• String getName()
• String getPath()
• String getAbsolutePath()
• String getParent()
• long lastModified()
• long length()
Modificación de File:
• boolean renameTo(File newName)
• Boolean delete()
Directorio:
• Boolean mkdir()
• String[] list()
import java.io.Serializable;
import java.util.Date;
public class Contacto implements Serializable
{
private String nombre;
private String telefono;
private String email;
private String direccion;
private Date nacimiento;
private int grupo;
private double deuda;
…
}
Para que un objeto sea serializable, todas sus variables de instancia deben ser
serializables. De hecho, todos los tipos primitivos en Java son serializables por
defecto.
Java representa las excepciones como clases y existe una jerarquía de clases que
representan errores en Java.
try{
FileReader fichero = new FileReader("nombre del fichero");
} catch (FileNotFoundException e) {
e.printStackTrace();
}
Es decir, dichas colecciones no forman parte del lenguaje en sí, sino que son clases
definidas en el paquete java.util. Para crear una colección usaremos la siguiente
estructura:
Donde Coleccion es una clase de este framework que queramos utilizar según la
estructura de almacenamiento que nos interese y Clase representa el tipo de datos
a almacenar.
3.3.8. Conjuntos
Conjunto: los elementos no siguen un orden y no se permiten duplicados. Se define
la interfaz Set<E>. Se peude utilizar las siguientes implementaciones:
• HashSet<E> (implementación con tabla hash).
• LinkedHashSet<E> (tabla hash +doble lista enlazada)
• TreeSet<E> (implementación con árbol)
3.3.9. Mapas
Diccionario o Matriz asociativa: cada elemento tiene asociado una clave que se
usa para recuperarlo. Se utiliza la interfaz Map<K,V> y se pueden utilizar las
siguientes implementaciones:
• HashMap<K,V>
• TreeMap<K,V>
• LinkedHashMap<K,V>
¿Qué es un modelo?
“Es una simplificación de la realidad”. Proporciona los planos de un sistema,
incluyendo aquellos elementos que tienen gran influencia y omite aquellos que no
son relevantes para el nivel de abstracción dado.
Tipos de modelo:
• Modelo Estructural: Destaca la organización del sistema software.
• Modelo de Comportamiento: Resalta la dinámica del software.
Objetivos:
• Visualizar qué y cómo será el software.
• Especificar la estructura o el comportamiento de un sistema.
• Proporcionar una guía para el desarrollo del software.
Abstracción
La abstracción es un principio muy importante en el modelado. Consiste en tener en
cuenta únicamente las propiedades pertinentes de un objeto para un problema
concreto. Los objetos utilizados en UML son abstracciones del mundo real.
Ejemplo:
Representación
Según su clasificación.
Caso de uso
Un caso de uso representa una función o una acción dentro del sistema. Está
dibujado como un óvalo y nombrado con la función.
Sistema
El sistema se utiliza para definir el alcance del caso de uso y se dibuja como un
rectángulo. Este es un elemento opcional.
Paquete
El paquete es otro elemento opcional que es extremadamente útil en diagramas
complejos. De manera similar a los diagramas de clase, los paquetes se utilizan
para agrupar los casos de uso.
Una clase puede representarse con los detalles como atributos y operaciones
suprimidos, con solo un rectángulo con el nombre de la clase.
nombre_del_objeto: nombre_de_la_clase
Cada objeto o actor tiene una línea vertical y los mensajes se representan mediante
flechas entre los distintos objetos. El tiempo está determinado de arriba hacia abajo.
Nodos
Como los componentes, los nodos también pertenecen al mundo real. Se define
como un elemento físico, que existe en tiempo de ejecución y representa un recurso
que generalmente tiene memoria y capacidad de procesamiento.
Los nodos sirven para modelar la topología del hardware sobre el que se ejecuta el
sistema.
Asimismo, un nodo puede representar un procesador o un dispositivo sobre el que
se pueden desplegar los componentes.
Un nodo debe tener un nombre asignado que lo distinga del resto de nodos.
La forma que tiene UML de agrupar elementos en subsistemas es a través del uso
de paquetes, agrupando los paquetes y formando jerarquías de paquetes. De
hecho, un sistema que no tenga necesidad de ser descompuesto en subsistemas
se puede considerar como con un único paquete.
Agrupación en paquetes
Hay una serie de reglas que pueden ser de utilidad a la hora de agrupar los
diferentes elementos en paquetes.
• Conviene agrupar elementos que proporcionen un mismo servicio.
• Los elementos que se agrupen en un mismo paquete deben presentar
un alto grado de cohesión, es decir, deben estar relacionados.
Son un conjunto de enlaces, los cuales son conexiones entre objetos. La asociación
se representa con una línea continua, posiblemente dirigida, que a veces incluye
una etiqueta. A menudo, se incluyen otros elementos para indicar la multiplicidad y
roles de los objetos involucrados.
Herencia o generalización
4.Estrategias Metodológicas
Primer Parcial
Componente Actividad Peso Calificación
Docencia Actividades en línea (forma no
10% 2
simultánea – Foro académico)
Actividades en línea (en tiempo real
10% 2
– Clase en vivo)
Trabajo Actividades o tareas: Talleres,
Autónomo ensayos, investigaciones, análisis 30% 6
de casos, ejercicios, etc.
Prácticas de Evaluación por unidad 20% 4
Segundo Parcial
Componente Actividad Peso Calificación
Docencia Actividades en línea (forma no
10% 2
simultánea – Foro académico)
Actividades en línea (en tiempo real
10% 2
– Clase en vivo)
Trabajo Actividades o tareas: Talleres,
Autónomo ensayos, investigaciones, análisis 30% 6
de casos, ejercicios, etc.
Prácticas de Evaluación por unidad 10% 2
aplicación y
Evaluación final 40% 8
experimentación
Totales 100% 20
5. Bibliografía
- Deitel, Paul J. & Deitel, Harvey M. (2018). Java how to program. Early
objects. Eleventh Edition. Ediciones Pearson. New York, EEUU.
- Jimenez, C. (2015). UML Aplicaciones en Java y C++. Editorial Ra-ma.
- Vélez, J., Peña, A., Gortazar, P., Sánchez, A. (2011). Diseñar y
programar, todo es empezar: Una introducción a la Programación
Orientada a Objetos usando UML y Java. Editorial DYKINSON. Ciudad
de Madrid, España.
1.1 Introducción
1.2 Evolución en relación a la tecnología
1.3 Evolución en relación a la conceptualización
1.4 Evolución en relación al enfoque
Objetivo
Lenguaje máquina
Este lenguaje se compone de un conjunto
de instrucciones que determinan acciones
que serán realizadas por la máquina. Y un
programa de computadora consiste en una
cadena de estas instrucciones de lenguaje
de máquina (más los datos).
Normalmente, estas instrucciones son
ejecutadas en memoria (alta velocidad), en
secuencia, con eventuales cambios de flujo
causados por el propio programa o
eventos externos.
1.2 Evolución en relación a la tecnología
Avances tecnológicos
Lenguaje máquina
El lenguaje máquina es específico de cada
máquina o arquitectura de la máquina,
aunque el conjunto de instrucciones
disponibles pueda ser similar entre ellas.
1.2 Evolución en relación a la tecnología
Avances tecnológicos
Programación Lineal
Esta primera etapa se caracteriza por
programas muy lineales, con una sola línea
principal de ejecución, y por una clara
orientación hacia ingenieros y científicos.
En estos lenguajes no existe una
separación clara entre datos y programas,
y como mecanismo de reutilización de
código se propone la biblioteca de
funciones.
1.3 Evolución en relación a la conceptualización
Conceptualización
Programación Estructurada
La programación estructurada se basa en
un teorema de Dijkstra que demuestra que
cualquier programa de computadora
puede escribirse con un lenguaje que
permita la ejecución secuencial de
instrucciones, la instrucción condicional y
la realización de bucles de instrucciones.
1.3 Evolución en relación a la conceptualización
Conceptualización
Programación Estructurada
Sin embargo, estos lenguajes aún no
formalizan mecanismos de protección
adecuados para evitar violaciones en los
protocolos de acceso a los datos. Tampoco
añaden ningún mecanismo de reutilización
de código distinto a las bibliotecas de
funciones.
1.3 Evolución en relación a la conceptualización
Conceptualización
Programación Estructurada
1.3 Evolución en relación a la conceptualización
Conceptualización
Programación Orientada a Objetos
FIN DE LA CLASE 1
UNIDAD 1
PROGRAMACIÓN Y MODELAMIENTO
DE DATOS
Input (entrada)
Información que damos al algoritmo con la que va a trabajar para
ofrecer la solución esperada, valores de entrada.
Proceso
Conjunto de pasos para que, a partir de los datos de entrada, llegue a la
solución de la situación.
Output (salida)
Resultados, a partir de la transformación de los valores de entrada
durante el proceso.
1.6 Definición
Características
1.Inicio.
2.Poner X igual a 2 (x = 2, x variable que representa a
los divisores del número que se busca N).
3.Dividir N por X (N/X).
4.Si el resultado de N/X es entero, entonces N es un
número primo y bifurcar al punto 7; en caso
contrario, continuar el proceso.
5. Suma 1 a X (X ← X + 1).
6. Si X es igual a N, entonces N es un número
primo; en caso contrario, bifurcar al punto 3.
7. Fin.
1.9 Representaciones
1.9 Representaciones
Diagramas de flujo
Se representa por medio de gráficos.
Los Diagramas de Flujo son una de las técnicas más
utilizadas para representar gráficamente la secuencia
de instrucciones de un Algoritmo.
Estas instrucciones están compuestas por operaciones,
decisiones lógicas y ciclos repetitivos, entre otros.
La solución de un problema puede contener varios
conjuntos de instrucciones (procedimientos o
métodos) que tienen como finalidad ejecutar cada uno
de los procesos necesarios para llegar a la solución de
un problema a partir de los datos disponibles (estado
inicial).
1.9 Representaciones
Diagramas de flujo
1.9 Representaciones
Referencias bibliográficas
• Boisgontier, H. (2020). Algoritmia. De las bases a la Programación
Orientada a Objetos en Java. Editorial Eni. Ciudad de Orsay, Francia.
• Jimenez, J., Jimenez, E. & Alvarado, L. (2014). Fundamentos de
Programación, Ed. Alfaomega, México.
La educación es el arma más
poderosa que puedas usar
para cambiar el mundo.
Nelson Mandela
FIN DE LA CLASE 2
UNIDAD 1