Está en la página 1de 31

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA - UNAD

FACULTAD DE CIENCIAS BÁSICAS E INGENIERÍA

CURSO: PROGRAMACIÓN ORIENTADA A OBJETOS

UNIDAD 1: FASE 1 - ANÁLISIS DE REQUISITOS

PRESENTADO POR
JHULIE ANDREA BORDA CRUZ
CAMILO HERNANDO MORA 
MARIA ALEJANDRA ROA
HEIDY JULIANA SANCHEZ
WILMER HUMBERTO AGUILERA

PRESENTADO A:
FRANKLIN LIZCANO CELIS

GRUPO: 301403_35

2018
DESARROLLO DE LA ACTIVIDAD

1. Elección del proyecto a desarrollar:


El grupo colaborativo en consenso entre todos los compañeros, deben elegir una (1) de
las propuestas planteadas en el Anexo 1 que se encuentra en la carpeta junto a este
documento, con el fin de desarrollarla durante el periodo académico.
Una vez elegida deberá informar en el foro de la Fase1 la propuesta elegida.

RTA: PROYECTO B
2. Consultar y reconocer las características generales de la programación orientada a
objetos y la estructura del Lenguaje Java, que será utilizado para el desarrollo del
proyecto. Para ello se recomienda que entre todos los integrantes del grupo colaborativo
se distribuyan las preguntas planteadas en el siguiente cuestionario que se relaciona a
continuación, para ser solucionadas.
Actividades a desarrollar  INTEGRANTE
1. Cuál es la diferencia entre programación estructurada
JHULIE BORDA
y programación orientada a objetos
2. Ventajas y desventajas de la programación orientada
JHULIE BORDA
a objetos
3. Sintaxis para definir variables en Java JHULIE BORDA
4. Sintaxis para imprimir en consola en Java JHULIE BORDA
CAMILO HERNANDO
5. Sintaxis para realizar comentarios en Java
MORA 
CAMILO HERNANDO
6. Sintaxis de los operadores lógicos y relacionales
MORA 
7. Defina Clase, instancia de clase, atributo,
CAMILO HERNANDO
comportamiento, identidad, constructor e
MORA 
identificadores.
8. Informe los tipos de clase MARIA ALEJANDRA ROA
9. Describa el concepto de Modularización y de un
MARIA ALEJANDRA ROA
ejemplo.
10. Describa el concepto de Herencia y de un ejemplo. MARIA ALEJANDRA ROA
11. Describa el concepto de Polimorfismo y de un HEIDY JULIANA
ejemplo. SANCHEZ
12. Describa el concepto de Encapsulamiento y de un HEIDY JULIANA
ejemplo. SANCHEZ
13. Informe cómo convertir un String a entero en Java y HEIDY JULIANA
viceversa SANCHEZ
14. Defina el concepto de método y realice un ejemplo WILMER HUMBERTO
constructor AGUILERA
15. Qué función tiene el paquete Swing en Java y WILMER HUMBERTO
describa sus principales características AGUILERA
16. Consultar la estructura y sintaxis de cómo WILMER HUMBERTO
funcionan las excepciones en Java. AGUILERA

1. Cuál es la diferencia entre programación estructurada y programación


orientada a objetos
RTA: La programación estructurada pretende resolver un problema de principio a fin en
una sola estructura de código. La programación orientada a objetos, resuelve el
problema identificando los actores que tienen participación en el problema e
identificando también sus acciones. Con esta información se crean los objetos (que son
una interpretación de algunos de estos actores), estos objetos están compuestos por
clases donde se detalla las acciones que realizan y las propiedades de estos. Al tener
creados los objetos solo es ponerlos a interactuar entre ellos.
2. Ventajas y desventajas de la programación orientada a objetos.
RTA: Las ventajas de un lenguaje orientado a objetos, son:
 Fomenta la reutilización y extensión del código.
 Permite crear sistemas más complejos.
 Relacionar el sistema al mundo real.
 Facilita la creación de programas visuales.
 Construcción de prototipos
 Agiliza el desarrollo de software
 Facilita el trabajo en equipo
 Facilita el mantenimiento del software

Las desventajas de la programación orientada a objetos son:


 Complejidad para adaptarse.
 Mayor cantidad de código (aunque a la larga no, por la reutilización).
 Método: Algoritmo asociado a un objeto
 Limitaciones del programador: Es posible el programador desconozca algunas
características del paradigma y de hecho siga utilizando el paradigma
estructurado.
 No hay una forma única de resolver los problemas. Esto puede llevar a que
diferentes interpretaciones de la solución planteada emerjan.
 Se requiere una documentación amplia para determinar la solución planteada.

Las ventajas de la Programación estructurada son:

 Por medio de la herencia, podemos eliminar código redundante y extender el uso


de clases existentes.
 Podemos construir programas a partir de módulos de trabajo estándar que se
comunican entre sí, en lugar de tener que empezar desde cero la escritura del
código. Esto conduce a un ahorro en el tiempo de desarrollo y a una
productividad mayor.
 El principio de ocultación de los datos ayuda al programador a construir
programas seguros que no pueden ser invadidos por código de otras partes del
programa.
 Es posible tener múltiples copias de un objeto que coexisten sin ninguna
interferencia.
 Es posible transformar objetos del dominio del problema a otros en los
programas.
 Es fácil dividir el trabajo de un proyecto basado en objetos.
 El enfoque del diseño centrado en los datos nos permite capturar más detalles
de un modelo de forma que se puedan implementar.
 Se pueden mejorar y actualizar fácilmente los sistemas orientados a objetos
desde los pequeños hasta los grandes sistemas.
 Las técnicas de pase de mensajes para la comunicación entre objetos
simplifican mucho las descripciones de las interfaces con sistemas externos.
 Se puede gestionar fácilmente la complejidad del software.

Las desventajas de la programación estructurada son:


 El principal inconveniente de este método de programación es que se obtiene un
único bloque de programa, que cuando se hace demasiado grande puede resultar
problemático su manejo
 En casos cuando el programa es demasiado grande se hace difícil su
mantenimiento.
 Las funciones tienen acceso ilimitado a los datos globales.
 Las funciones inconexas y datos, fundamentos del paradigma procedimental
proporcionan un modelo pobre del mundo real.
 Obliga a un programador a que organice su programa de acuerdo con la
arquitectura de la computadora, en otras palabras, que piense como la máquina.
Debería ser lo contrario.
 Al estar separados de las funciones, los datos se vuelven globalmente visibles
para poder ser llamados. Dada esta situación cualquier cambio de la estructura
de algunos de los datos pudiera llegar a requerir la modificación de todas las
funciones del programa en correspondencia con los cambios en los datos.
3. Sintaxis para definir variables en Java

RTA: Las variables Java son un espacio de memoria en el que guardamos un


determinado valor (o dato).

En Java, se puede declarar una variable indicando el tipo de dato que podrá almacenar
y su nombre (identificador). Por ejemplo, para almacenar un número entero, se puede
escribir:

int numero;

Nota: Es necesario añadir un carácter punto y coma (;) al final de la declaración.

Para definir una variable se debe seguir la siguiente estructura:

[privacidad] tipo_variable identificador;


El tipo de dato se asignará a la hora de definir la variable. Además, en el caso de que las
variables sean propiedades de objetos tendrán una privacidad.

Ejemplos de variables serían…

int numero = 2;
String cadena = "Hola";
long decimal = 2.4;
boolean flag = true;

Las variables son utilizadas como propiedades dentro de los objetos.

class Triangulo {
private long base;
private long altura;
}

Dentro de Java existe los siguientes tipos de variables:

 Variables de instancia (campos no estáticos), son las variables que están


definidas dentro de un objeto pero que no tienen un modificador de estáticas
(static). Suelen llevar un modificador de visibilidad (public, private, protected)
definiéndose.

class Triangulo {
private long base;
private long altura;
}

 Variables de clase (campos estáticos), son aquellas variables que están


precedidas del modificador static. Esto indica que solo hay una instancia de
dicha variable. Es decir, aunque tengamos N objetos de la clase, la variable
estática solo se instancia una vez.

class Triangulo {
static long lados = 3;
}

Si además queremos que el valor no pueda cambiar nunca la definiremos como final.

class Matematicas {
final static long PI = 3.14159;
}

 Variables locales, son variables temporales cuyo ámbito de visibilidad es el


método sobre el que están definidas. No pueden ser accedidas desde otra parte
del código. Se las distingue de las variables de instancia ya que estas no llevan
modificadores de visibilidad delante.
int variable = 2;

 Parámetros, son las variables recibidas como parámetros de los métodos. Su


visibilidad será el código que contenga dicho método.

public Triangulo(long base, long altura){...}

4. Sintaxis para imprimir en consola en Java


RTA: Para imprimir ya sea un texto o cualquier variable en java y asi ver el resultado
de un proceso o un método, se debe usar el siguiente codigo que se compone por dos
líneas donde una de ellas es para imprimir un texto seguidido y la otra es para imprimir
el texto con interlineado.
System.out.print("Text"); //Imprime por consola
System.out.println("Text"); //Imprime por consola con saltos de linea
(Dentro de las comillas, va la palabra a imprimir)

IMPRIMIR MENSAJES DE ERROR


Si necesitamos saber si hay un error de un proceso se puede definir el texto del error con
un color en rojo:
System.err.print("Text_Error"); 
System.err.println("Text_Error"); 
System.out.println("\033[31mEste texto es Azul"); 
System.out.println("\033[34mEste texto es Rojo"); 
System.out.println("\030[34mEste texto es Negro"); 

5. Sintaxis para realizar comentarios en Java


Cuando estamos programando una de las cosas que siempre nos olvidamos es la de
poner comentarios. Está claro que cuando nos midan nuestro rendimiento por líneas de
código escritas, los comentarios no entraran en la estadística.
En el lenguaje Java existen tres formas de poner comentarios.
La primera es cuando la línea de comentario solo ocupa una línea de código. En este
caso deberemos de anteponer dos barras inclinadas (//) antes del texto.
// Comentario de una línea
En el caso de que queramos poner un comentario de más de una línea (eso es que
estamos inspirados) deberemos de empezar por una barra inclinada y un asterisco (/*) y
finalizar a la inversa, asterisco y barra inclinada (*/). El código nos quedará de la
siguiente forma:
a) /* Comentario
b) de varias
c) líneas */

El último caso son los comentarios para la herramienta de documentación JavaDoc. En


este caso, antes del comentario pondremos una barra inclinada y dos asteriscos (/**) y
finaliza con un asterisco y una barra inclinada (*/)

1. /** Comentario para JavaDoc */

6. Sintaxis de los operadores lógicos y relacionales


Se llaman operadores relacionales o de comparación a aquellos que permiten comparar
dos valores evaluando si se relacionan cumpliendo el ser menor uno que otro, mayor
uno que otro, igual uno que otro, etc. Los operadores lógicos permiten además
introducir nexos entre condiciones como “y se cumple también que” ó . “o se cumple
que”
En Java disponemos de los operadores lógicos habituales en lenguajes de programación
como son “es igual”, “es distinto”, menor, menor o igual, mayor, mayor o igual, and (y),
or (o) y not (no). La sintaxis se basa en símbolos como veremos a continuación y cabe
destacar que hay que prestar atención a no confundir == con = porque implican distintas
cosas
Operadores lógicos principales en Java

OPERADOR DESCRIPCIÓN

== Es igual

!= Es distinto

<, <=, >, >= Menor, menor o igual, mayor, mayor o igual

&& Operador and (y)

|| Operador or (o)

! Operador not (no)

en java disponemos de los operadores relacionales para verificar si se cumple una


relación. Por ejemplo, el operador de equivalencia ( == ) nos devuelve un valor de
verdadero si los operandos son iguales. Estas operaciones comparan dos valores
numéricos y devuelven un valor booleano.
Operadores relacionales
Operador Utilización Resultado
> A>B verdadero si A es mayor que B
>= A >= B verdadero si A es mayor o igual que B
< A<B verdadero si A es menor que B
<= A <= B verdadero si A es menor o igual que B
== A == B verdadero si A es igual a B
!= A != B verdadero si A es distinto de B

Aquí tenemos un programa para ver el funcionamiento de estos operadores:

public class relaciones {


public static void main(String args[]){
int i = -3;
byte b = 5;
float f = 1e-10f;
double d = 3.14;
boolean b1 = i > i;
boolean b2 = i < b;
boolean b3 = b <= f;
boolean b4 = f >= d;
boolean b5 = d != 0;
boolean b6 = 1 == f;

System.out.println("b1: " + i + " > " + i + " = " + b1);


System.out.println("b2: " + i + " < " + b + " = " + b2);
System.out.println("b3: " + b + " <= " + f + " = " + b3);
System.out.println("b4: " + f + " >= " + d + " = " + b4);
System.out.println("b5: " + d + " != " + 0 + " = " + b5);
System.out.println("b6: " + 1 + " == " + f + " = " + b6);
}

No nos olvidemos de los char, que también participan. Podemos comparar caracteres,
pues internamente están almacenados como números.

char a = 'A';
char b = 'B';
boolean x = a > b;

Entre los booleanos solo se permiten los operadores de equivalencia, es igual (==) o es
distinto (!= )

boolean x = true;
boolean y = x == x;
boolean z = x != y;

7. Defina Clase, instancia de clase, atributo, comportamiento, identidad,


constructor e identificadores.
Clase: Una clase es una plantilla para la creación de objetos de datos según un modelo
predefinido. Las clases se utilizan para representar entidades o conceptos, como
los sustantivos en el lenguaje. Cada clase es un modelo que define un conjunto
de variables -el estado, y métodos apropiados para operar con dichos datos -el
comportamiento. Cada objeto creado a partir de la clase se denomina instancia de la
clase. Las clases en Java son básicamente una plantilla que sirve para crear un objeto.
Instancia de clase: En los lenguajes de programación orientada a objetos un objeto es
una instancia de una clase. Esto es, un miembro de una clase que tiene atributos en lugar
de variables. En un contexto del mundo real, podríamos pensar en "Casa" como
una clase y en un chalet como una instancia de esta e incluso otro chalet u otro tipo de
casa como puede ser un apartamento como otra instancia. 1 En este caso no importa el
tipo de casa, si fuese de nuestro interés modelarlo y especificarlo, diferenciaríamos entre
un chalet y un apartamento con dos clases, entidades o prototipos diferentes.
Ejemplo.
como ya sabemos en el lenguaje java se usa la siguiente estructurara:
public class [nombre de la clase]{//declaración de clase
public static void main(String args[]){//declaración de método main “es en este          
método donde inicia toda ejecución”
}
}
Atributo: Los atributos son las características individuales que diferencian un objeto
de otro determinan su apariencia, estado u otras cualidades. Los atributos se guardan en
variables denominadas de instancia, y cada objeto particular puede tener valores
distintos para estas variables.

Comportamiento: El comportamiento de los objetos de una clase se implementa


mediante funciones miembro o métodos. Un método es un conjunto de instrucciones
que realizan una determinada tarea y son similares a las funciones de los lenguajes
estructurados. Del mismo modo que hay variables de instancia y de clase, también hay
métodos de instancia y de clase. En el primer caso, un objeto llama a un método para
realizar una determinada tarea, en el segundo, el método se llama desde la propia clase

Constructores: Un objeto de una clase se crea llamando a una función especial


denominada constructor de la clase. El constructor se llama de forma automática cuando
se crea un objeto, para situarlo en memoria e inicializar los miembros dato declarados
en la clase. El constructor tiene el mismo nombre que la clase. Lo específico del
constructor es que no tiene tipo de retorno.

class Rectangulo{
int x;
int y;
int ancho;
int alto;
Rectangulo (int x1, int y1, int w, int h){
x=x1;
y=y1;
ancho=w;
alto=h;
}
}

Identificador: es un nombre que identifica a una variable, a un método o función


miembro, a una clase. Todos los lenguajes tienen ciertas reglas para componer los
identificadores:

 Todos los identificadores han de comenzar con una letra, el carácter subrayado
(_ o el carácter dollar ( $ ).
 Puede incluir, pero no comenzar por un número
 No puede incluir el carácter espacio en blanco
 Distingue entre letras mayúsculas y minúsculas
 No se pueden utilizar las palabras reservadas como identificadores

La identidad: es una propiedad de un objeto que lo diferencia del resto; dicho con otras
palabras, es su identificador (concepto análogo al de identificador de una variable o
una constante).

8. Informe los tipos de clase

RTA: Estos son algunos de los tipos de clase en Java(Castilla Rodríguez, n.d.)
Class TimeUnit: Diferentes unidades de tiempo que se pueden usar en una simulación:
MILISENGUNDO, SEGUNDO, MINUTO, HORA, DÍA, SEMANA, MES y AÑO.
Class TimeStamp: Un valor de tiempo expresado como un par
Class TimeFunction: Una clase contenedora que devuelve los valores correspondientes
a una función específica, que puede depender del tiempo y seguir una distribución
aleatoria de números.
Class PeriodicCycle: Una secuencia de eventos repetida periódicamente. Se puede
definir de dos maneras diferentes: por un lado, se puede definir un ciclo que se detiene
cuando se alcanza una marca de tiempo (endTs) particular; por otro lado, se puede
definir un ciclo que se detiene después de un número específico de iteraciones. Incluso
se puede definir un ciclo infinito (0 iteraciones). Los ciclos pueden contener subciclos,
que se inician dentro del período del ciclo principal.
Class TableCycle: Un conjunto de instantes cuando sucede algo. Se puede definir un
subciclo que se inicia entre cada dos activaciones consecutivas del ciclo principal.
Class Condition: Una condición lógica que se usa para modelar restricciones o
situaciones inciertas.
Class Variable: Variables de simulación.
Class Simulation: La principal clase de simulación, que ejecuta un modelo definido por
medio de diferentes estructuras: ResourceType, Resource, Work-Group, Activity
(TimeDrivenActivity y FlowDrivenActivity), ElementType, TimeDrivenGenerator y
Flow. Una simulación tiene un reloj virtual asociado que comienza en los inicios y
avanza según los eventos producidos por los elementos, recursos y generadores de
tiempo. Una técnica del próximo evento se usa para determinar la próxima marca de
tiempo para avanzar. Un TimeUnit mínimo determina la precisión del reloj de
simulación. La simulación finaliza cuando el reloj virtual llega a endTs o no hay más
eventos disponibles.
Class ResourceType: El tipo de recurso. Define roles o especializaciones de los
recursos.
Class Resource: Un recurso de simulación cuya disponibilidad se controla mediante
entradas de calendario. Una entrada de horario utiliza un trío <ResourceType, Cycle,
long> que define un tipo de recurso, un ciclo de disponibilidad y la duración de cada
período de disponibilidad. Las entradas de horarios pueden superponerse en el tiempo,
lo que permite que el recurso esté potencialmente disponible para diferentes tipos de
recursos simultáneamente.
Class TimeDrivenActivity: Una actividad cuya finalización es impulsada por una
marca de tiempo, es decir, la actividad comienza cuando hay recursos suficientes y
termina después de un período de tiempo. Este tipo de actividad se puede caracterizar
por un valor de prioridad, presentialidad, interruptibilidad y un conjunto de grupos de
trabajo. El grupo de trabajo seleccionado establece cuánto tiempo tomará finalizar esta
actividad. Por defecto, las actividades impulsadas por el tiempo son presenciales, es
decir, un elemento que lleva a cabo esta actividad no puede realizar simultáneamente
ninguna otra actividad presencial; e ininterrumpible, es decir, una vez que se inicia, la
actividad conserva sus recursos hasta que finaliza, incluso si los recursos no están
disponibles mientras se realiza la actividad.
Class FlowDrivenActivity: Una actividad que puede ser llevada a cabo por un
Elemento, y cuya duración depende de la finalización de un Flujo interno. Esta
actividad se puede considerar una Actividad híbrida - Flujo estructurado, su
comportamiento es similar al último.
Class ElementType: Describe un conjunto de elementos que tienen algo en común.
Además de establecer una prioridad, esto es simplemente un atributo descriptivo, y se
usa con fines estadísticos.
Class TimeDrivenGenerator: Un generador que crea elementos siguiendo un patrón
de tiempo.
Class Element: Una entidad capaz de crear eventos de simulación. Los elementos
tienen un tipo y un flujo asociado. Los elementos no se declaran explícitamente como
parte del modelo, sino que se crean automáticamente como se describe en el
ElementCreator correspondiente.
Class SingleFlow: El nodo de hoja de un flujo: un contenedor para actividades.
Class ParallelFlow: Un flujo sucesor múltiple que divide la ejecución en varias ramas
salientes. Cumple con el patrón de división en paralelo (WCP2)
Class ExclusiveChoiceFlow: Un flujo condicional que permite que solo se active una
de las ramas salientes, que se evalúan en orden. El flujo continúa a través de la primera
rama saliente evaluada como verdadera. Cumple con el patrón de elección exclusiva
(WCP4).
Class MultiChoiceFlow: Un flujo condicional que permite activar todas las ramas
salientes que cumplen con su condición. Cumple con el patrón de elección múltiple
(WCP6).
Class ProbabilitySelectionFlow: Un flujo de Opción Exclusiva adaptada que
selecciona una rama saliente entre un conjunto de ellas utilizando un valor de
probabilidad. Cada rama saliente tiene un valor (0.0 - 1.0) que expresa su probabilidad
de ser elegido
Class SimpleMergeFlow: Crea un flujo OR que permite que pasen todas las ramas
entrantes. Cuando varias ramas entrantes llegan a la misma hora de simulación, la rama
saliente se activa solo una vez. Cumple con el patrón Simple Merge (WCP5).
Class MultiMergeFlow: Crea un flujo OR que permite que pasen todas las ramas
entrantes. Cumple con el patrón Multi-Merge (WCP8).
Class SynchronizationFlow: Un flujo AND de union que pasa solo cuando todas las
ramas entrantes se han activado una vez. Cumple con el patrón de sincronización
(WCP3).
Class DiscriminatorFlow: Un flujo AND de unión que permite que solo pase la
primera rama entrante. Cumple con el patrón Discriminador de bloqueo (WCP28).
Class PartialJoin: Un flujo AND de unión que permite que solo la n-ésima rama
entrante pase. Cumple con el patrón Blocking Partial Join (WCP31).
Class InterleavedParallelRoutingFlow: Un flujo estructurado que contiene un
conjunto de actividades que se realizarán de acuerdo con un conjunto predefinido de
ordenamientos parciales. Los pedidos parciales se definen utilizando una colección de
conjuntos de actividades. Cada matriz [A1, A2, ... An] define relaciones de precedencia;
por lo tanto, A1 debe ejecutarse antes de A2, A2 antes que A3, y así sucesivamente. Si
todas las actividades son presenciales, cumple con el patrón de Enrutamiento paralelo
entrelazado (WCP17)
Class DoWhileFlow: Un ciclo do-while. El flujo interno se ejecuta la primera vez y
luego se verifica la condición posterior. Si la condición posterior es verdadera, el flujo
interno se ejecuta nuevamente; de lo contrario, este flujo termina. Cumple con el patrón
Structures Loop (WCP21).
Class WhileDoFlow: Un ciclo do-while. El flujo interno se ejecuta la primera vez y
luego se verifica la condición posterior. Si la condición posterior es verdadera, el flujo
interno se ejecuta nuevamente; de lo contrario, este flujo termina. Cumple con las
estructuras Patrón de bucle (WCP21).
Class ForLoopFlow: El flujo interno se ejecuta N veces. Cumple con las estructuras
Patrón de bucle (WCP21).
Class StaticPartialJoinMultipleInstancesFlow: Un flujo estructurado que cumple con
el patrón de Unión parcial estática para varias instancias (WCP34) si el valor de
aceptación es mayor que 1 y menor que el número de instancias de subprocesos creados
dentro de esta estructura. Si tanto el valor de aceptación como el número de instancias
son iguales, cumple las Instancias Múltiples con un patrón de Conocimiento de Tiempo
de Diseño Prioritario (WCP13) (la clase SynchronizedMultipleInstanceFlow puede
usarse con el mismo propósito).
Class StructuredPartialJoinFlow: Un flujo estructurado cuyo paso inicial es un flujo
paralelo y cuyo paso final es un flujo de unión parcial. Cumple con el patrón de Unión
parcial estructurada (WCP30).
Class StructuredSynchroMergeFlow: Un flujo estructurado cuyo paso inicial es un
flujo de elección múltiple y cuyo paso final es una sincronización. Cumple con el patrón
de sincronización estructurada (WCP7).
Class InterleavedRoutingFlow: Un flujo estructurado cuyo paso inicial es un flujo
paralelo y cuyo paso final es un flujo de sincronización. Cumple con el patrón de
enrutamiento entrelazado (WCP40) si todas las actividades son presenciales.
Class StructuredDiscriminatorFlow: Un flujo estructurado cuyo paso inicial es un
flujo paralelo y cuyo paso final es un flujo discriminador. Cumple con el patrón
Discriminador estructurado (WCP9).
Class ThreadSplitFlow: Un flujo que crea varias instancias de la rama saliente. Se
debe usar con su contraparte ThreadMergeFlow. Cumple con el patrón de división de
hilo (WCP 42).
Class ThreadMergeFlow: Un flujo que combina un número especificado de instancias.
Se debe usar con su contraparte, ThreadSplitFlow. Cumple con el patrón de fusión de
subprocesos (WCP41), pero también tiene características adicionales. Funciona como
un discriminador de subprocesos si acceptValue está establecido en 1; o como una
unión parcial de subproceso si se utiliza cualquier otro valor mayor que uno y menor
que nInstances
9. Describa el concepto de Modularización y de un ejemplo.
RTA:
Modularizar (Vélez Serrano, Peña Abril, & Gortazar Bellas, 2000): Es la capacidad
que permite dividir un programa en agrupaciones lógicas de sentencias. A estas
agrupaciones se les llama módulos.
Ventajas:
 Facilidad de mantenimiento, diseño y revisión.
 Aumento de la velocidad de compilación.
 Mejora en la organización y en la reusabilidad.
Se debe tener en cuenta al momento de modularizar:
 Maximizar la coherencia, es decir, se deben agrupar en un mismo módulo las
abstracciones relacionadas lógicamente.
 Minimizar las dependencias entre módulos, es decir, que para compilar un
módulo no se necesite compilar muchos otros.
 Controlar el tamaño de los módulos. Módulos pequeños aumentan la
desorganización, módulos grandes son menos manejables y aumentan los
tiempos de compilación.

10. Describa el concepto de Herencia y de un ejemplo.


RTA:
(Joyanes Aguilar Matilde Fernandez Azuela et al., n.d.) La clase existente se denomina
superclase. La clase derivada de la clase superclase se denomina subclase. También se
conoce a la superclase como clase padre y una subclase se conoce como clase hija,
clase extendida o clase derivada.
La definición de una subclase tiene la siguiente sintaxis:
public class nombreClase extends ClaseBase
Un ejemplo puede ser:
public class Estudiante extends Persona

11. Describa el concepto de Polimorfismo y de un ejemplo.


RTA: Polimorfismo es un mecanismo que nos permite la aceptación de objetos
de las clases hijas o derivadas. Es decir, permite la clasificación de herencia que tenga
en sistemas clases. Si se declara una función con parámetros de determinada clase, el
compilador permitirá esas casillas objetos de una clase hija de la que fue declarada.
Por ejemplo, en un array de vehículos se podrán contener no solo vehículos
genéricos sino también todos los objetos de clases hijas. Es decir, coche, moto, bus entre
otros.
Otro ejemplo puede ser la clase “largometraje” y ahora pensemos en la clase
"Cine". En un cine se reproducen largometrajes. Puede, no obstante, tener varios tipos
de largometrajes, como películas o documentales, etc. Quizás las películas y
documentales tienen diferentes características, distintos horarios de audiencia, distintos
precios para los espectadores y por ello has decidido que tu clase "Largometraje" tenga
clases hijas o derivadas como "Película" y "Documental".
Ahora en la clase "Cine" crea un método que se llama "reproducir ()". Este
método podrá recibir como parámetro aquello que quieres emitir en una sala de cine y
podrán llegarte a veces objetos de la clase "Película" y otras veces objetos de la clase
"Documental". Si ha entendido el sistema de tipos, y sin entrar todavía en polimorfismo,
debido a que los métodos declaran los tipos de los parámetros que recibes, tendrá que
hacer algo como esto:

Reproducir (Pelicula peliculaParaReproducir)


Pero si luego tiene que reproducir documentales, tendrá que declarar:

Reproducir (Documental documentaParaReproducir)


Aquí es donde el polimorfismo nos ayuda. Podrá crear perfectamente un método
"reproducir ()" que recibe un largometraje y donde podrá recibir todo tipo de elementos,
películas, documentales y cualquier otra cosa similar que sea creada en el futuro.
Podremos crear películas y reproducirlas, también crear documentales para
luego reproducir y lo bonito de la historia es que todos estos objetos son aceptados por
el método "reproducir ()", gracias a la relajación del sistema de tipos.
Entonces lo que te permiten hacer los lenguajes es declarar el método
"reproducir ()" indicando que el parámetro que vas a recibir es un objeto de la clase
padre "Largometraje", pero donde realmente el lenguaje y compilador te aceptan
cualquier objeto de la clase hija o derivada, "Película", "Documental", etc.
Reproducir (Largometraje elementoParaReproducir)

12. Describa el concepto de Encapsulamiento y de un ejemplo.


RTA: Consiste en organizar datos y métodos de una estructura, evitando el
acceso a datos por cualquier otro medio distinto al especificado. Es decir, se encarga de
garantizar la integridad de los datos que contiene un objeto.
Ocultación: El usuario de una clase en particular no necesita saber cómo están
estructurados los datos dentro de ese objeto, es decir, un usuario no necesita conocer la
implementación Al evitar que el usuario modifique los atributos directamente y
forzándolo a utilizar funciones definidas para modificarlos (llamadas interfaces), se
garantiza la integridad de los datos (por ejemplo, uno puede asegurarse de que el tipo de
datos suministrados cumple con nuestras expectativas, o incluso que los datos se
encuentran dentro del intervalo esperado). 
La encapsulación define los niveles de acceso para elementos de esa  clase. Estos
niveles de acceso definen los derechos de acceso para los datos, permitiéndonos el
acceso a datos a través de un método de esa clase en particular, desde una
clase heredada o incluso desde cualquier otra clase. Existen tres niveles de
acceso: público, las funciones de todas las clases pueden acceder a los datos o métodos
de una clase que se define con el nivel de acceso público. Este es el nivel de protección
de datos más bajo; protegido, el acceso a los datos está restringido a las funciones de
clases heredadas, es decir, las funciones miembros de esa clase y todas las
subclases; privado, el acceso a los datos está restringido a los métodos de esa clase en
particular. Este es nivel más alto de protección de datos.
13. Informe cómo convertir un String a entero en Java y viceversa
RTA: Para hacer la siguiente operación necesitaremos hacer uso de la clase
Integer y de su método "parseInt" de la siguiente manera:

String numCadena = "1";

int numEntero = Integer.parseInt(numCadena);

¿Qué problemas podemos tener? pues que la cadena no sólo contenga números, sino que
venga con espacios.

Si los espacios vienen al princio o al final, con un simple trim bastará para eliminarlos,
por ejemplo ("1")

numCadena.trim();

Si tenemos espacio entre los números deberíamos usar el método replaceAll (" 1 3 45
6")

numCadena.replaceAll(" ", "");

Una vez realizados estos sencillos pasos podremos trabajar con los números enteros.

PASAR UN INT A STRING (DE ENTERO A CADENA)

Para pasar de un tipo básico a un objeto String tenemos varias posibilidades, por un
lado, si eres un artesano, puedes simplemente concatenar a tu entero una cadena vacía:
int numEntero = 4;

String numCadena= numEntero+"";

La forma correcta de realizar esta operación sería invocando al método valueOf de la


clase String

int numEntero = 4;

String numCadena= String.valueOf(numEntero);

Otra forma correcta de hacerlo sería utilizando el método toString del objeto Integer de
la siguiente manera:
String numCadena= Integer.toString(numEntero);

14. Defina el concepto de método y realice un ejemplo constructor


RTA: Un método en Java es un conjunto de instrucciones definidas dentro de una clase,
que realizan una determinada tarea y a las que podemos invocar mediante un nombre.
[ CITATION Jor10 \l 9226 ]

Se podría decir que existen 2 grandes tipos de métodos, el primer tipo de método son
métodos que realizan procesos, puedes realizar cualquier operación con ellos. Sin
embargo, el propósito es manipular variables existentes. El segundo tipo de métodos
son los que realizan un proceso o calculo, y calculan una variable específica, un ejemplo
podría ser un método para obtener el valor de una multiplicación.
a. ESTRUCTURA GENERAL DE UN MÉTODO JAVA [ CITATION Pro \l
9226 ]

La estructura general de un método Java es la siguiente:


[especificadores] tipoDevuelto nombreMetodo([lista parámetros]) [throws
listaExcepciones]
{
    // instrucciones
   [return valor;]
}

Los elementos que aparecen entre corchetes son opcionales.


especificadores (opcional): determinan el tipo de acceso al método. Se verán en
detalle más adelante.
tipoDevuelto: indica el tipo del valor que devuelve el método. En Java es
imprescindible que en la declaración de un método, se indique el tipo de dato
que ha de devolver. El dato se devuelve mediante la instrucción return. Si el
método no devuelve ningún valor este tipo será void.
nombreMetodo: es el nombre que se le da al método. Para crearlo hay que
seguir las mismas normas que para crear nombres de variables.
Lista de parámetros (opcional): después del nombre del método y siempre
entre paréntesis puede aparecer una lista de parámetros (también llamados
argumentos) separados por comas. Estos parámetros son los datos de entrada que
recibe el método para operar con ellos. Un método puede recibir cero o más
argumentos. Se debe especificar para cada argumento su tipo. Los paréntesis son
obligatorios aunque estén vacíos.
throws listaExcepciones (opcional): indica las excepciones que puede generar
y manipular el método.
return: se utiliza para devolver un valor. La palabra clave return va seguida de
una expresión que será evaluada para saber el valor de retorno. Esta expresión
puede ser compleja o puede ser simplemente el nombre de un objeto, una
variable de tipo primitivo o una constante.
b. Ejemplo

import java.util.*;
public class Metodos1 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int numero1, numero2, resultado;
        System.out.print("Introduce primer número: ");
        numero1 = sc.nextInt();
        System.out.print("Introduce segundo número: ");
        numero2 = sc.nextInt();
        resultado = sumar(numero1, numero2);
        System.out.println("Suma: " + resultado);
    }
    public static int sumar(int a, int b){
           int c;
           c = a + b;
           return c;
    }
}

15. Qué función tiene el paquete Swing en Java y describa sus principales
características
RTA: El paquete Swing es parte de la JFC (Java Foundation Classes) en la plataforma
Java. La JFC provee facilidades para ayudar a la gente a construir GUIs. Swing abarca
componentes como botones, tablas, marcos, etc... [ CITATION Cal \l 9226 ]

Las componentes Swing se identifican porque pertenecen al paquete javax.swing.

Swing existe desde la JDK 1.1 (como un agregado). Antes de la existencia de Swing, las
interfaces gráficas con el usuario se realizaban a través de AWT (Abstract Window
Toolkit), de quien Swing hereda todo el manejo de eventos. Usualmente, para toda
componente AWT existe una componente Swing que la reemplaza, por ejemplo, la clase
Button de AWT es reemplazada por la clase JButton de Swing (el nombre de todas las
componentes Swing comienza con "J").

Las componentes de Swing utilizan la infraestructura de AWT, incluyendo el modelo de


eventos AWT, el cual rige cómo una componente reacciona a eventos tales como,
eventos de teclado, mouse, etc... Es por esto, que la mayoría de los programas Swing
necesitan importar dos paquetes AWT: java.awt.* y java.awt.event.*.

Ojo: Como regla, los programas no deben usar componenetes pesados de AWT junto a
componentes Swing, ya que los componentes de AWT son siempre pintados sobre los de
Swing. (Por componentes pesadas de AWT se entiende Menu, ScrollPane y todas las
componentes que heredan de las clases Canvas y Panel de AWT).

Principales aspectos de una aplicación Swing

Cada aplicación Swing debe tener al menos un top-level container que contendrá toda la
aplicación, estos pueden ser

 javax.swing.JFrame: Una ventana independiente.


 javax.swing.JApplet: Un applet.
 Diálogos: ventanas de interacción sencilla con el usuario como por ejemplo:
o java.swing.JOptionPane: Ventana de diálogo tipo SI_NO,
SI_NO_CANCELAR, ACEPTAR, etc...
o java.swing.JFileChooser: Ventana para elejir un archivo.
o java.swing.JColorChooser
o etc.

16. Consultar la estructura y sintaxis de cómo funcionan las excepciones en


Java.
RTA: Una excepción es un evento que ocurre durante la ejecución del programa que
interrumpe el flujo normal de las sentencias.
I. Jerarquía de excepciones de Java [ CITATION Cur \l 9226 ]
En rojo: Son las excepciones que es obligatorio controlar. Checked exceptions
En azul: Son las excepciones que no es obligatorio controlas. Unchecked exceptions.
En java se dispone de un mecanismo consistente en el uso de bloques try/catch/finally.
La técnica básica consiste en colocar las instrucciones que podrían provocar problemas
dentro de un bloque try, y colocar a continuación uno o más bloques catch, de tal forma
que si se provoca un error de un determinado tipo, lo que haremos será saltar al bloque
catch capaz de gestionar ese tipo de error específico. El bloque catch contendrá el
codigo necesario para gestionar ese tipo específico de error. Suponiendo que no se
hubiesen provocado errores en el bloque try, nunca se ejecutarían los bloques catch.

Veamos ahora la estructura del bloque try/catch/finally:


try
{
//Código que puede provocar errores
}
catch(Tipo1 var1)
{
//Gestión del error var1, de tipo Tipo1
}
[

catch(TipoN varN)
{
//Gestión del error varN, de tipo TipoN
}]
[
finally
{
//Código de finally
}
]
Como podemos ver es obligatorio que exista la zona try, o zona de pruebas, donde
pondremos las instrucciones problemáticas. Después vienen una o más zonas catch,
cada una especializada en un tipo de error o excepción. Por último está la zona finally,
encargada de tener un código que se ejecutará siempre, independientemente de si se
produjeron o no errores.
Ejemplo:
public class Hello {
public static void main(String argv[]){
int uno_diez[] = new int[10];
try {
uno_diez[12] = 10;
}
catch(java.lang.ArrayIndexOutOfBoundsException) {
System.out.println(“Error, hemos sobrepasado el
tamaño del array”);
// aquí podemos hacer lo que queramos
}
}
}

3. Análisis de requisitos del proyecto

 DEFINICIÓN DEL PROBLEMA


La empresa Clínica Calzaditos, actualmente no cuenta con un programa que permita
registrar los clientes y así mismo que permite registrar, consultar, realizar informes
sobre los clientes, ventas, reparaciones que llegan a diario.
 OBJETIVO GENERAL
Diseñar un software para el control y gestión de la información de la empresa
Clínica Calzaditos, que permita el registro, control, consultas, realizar informes
sobre los clientes, administración de ventas y consultas de reparaciones diarias que
atiende la clínica.
 OBJETIVOS ESPECIFICOS
o Planificar el desarrollo e implementación del software para la empresa.
o Desarrollar un sistema de software eficaz y económico para la empresa.
o Definir las funcionalidades y requerimientos mínimos para dar solución a
la aplicación que requiere la empresa.
REQUERIMIENTOS FUNCIONALES

Nombre: Login

Autor: Camilo Hernando Mora Ruiz

Fecha: 30/08/2018

Descripción:
Al ejecutar la aplicación, esta debe solicitar un password y Login para garantizar la
seguridad de la aplicación y el acceso solo a personal autorizado. Los estudiantes deben
tener en cuenta que no se permite en el password los siguientes caracteres: #,!,¡,?,^,¿,|,°
por lo que es obligatorio hacer uso de los bloques de excepciones en Java para evitar estos
caracteres.
Actores:
Usuario / Administrador

Precondiciones:
Ingreso de datos

Flujo Normal:
1.- El actor visualiza las cajas de texto donde se encuentra el ingreso del usuario y
3.- El actor introduce los valores requeridos para su validación
4.- El sistema comprueba la validez de los datos ingresados.
5.- El actor recibe una notificación de que se han ingresado los datos correctamente y esta
logeado
6-El sistema ingresa al menú princinipal del aplicativo
Flujo Alternativo:
1- El sistema comprueba la validez de los datos, si los datos no son correctos, se avisa al
actor de ello permitiéndole que los corrija.
2- Si se introduce un valor de texto en un recuadro numérico se alertara de esto solicitando
el cambio a valores numéricos
Poscondiciones:
Menú principal

Nombre: Informes de reparaciones

Autor: Camilo Hernando Mora Ruiz

Fecha: 30/08/2018

Descripción:
Informe de las reparaciones: En este módulo debe permitir obtener el informe de las
reparaciones, incluyendo los datos básicos del cliente.

Actores:
Usuario logeado/Administrador

Precondiciones:
Iniciar login Usuario y contraseña

Flujo Normal:
1.- El actor pulsa sobre el botón buscar informes
2.- El sistema muestra todos los datos de la base de datos
3.- El actor puede acceder al informe solicitado filtrando la información con un valor
4.- El sistema comprueba los datos filtrados y genera el informe solicitado
5.- El actor recibe una notificación de que se ha generado el informe
6- El sistema da opción de guardar o de imprimirlo directamente desde el aplicativo

Flujo Alternativo:
1-El sistema comprueba la validez de los datos, si los datos no son correctos, genera alerta
para que se corrija
2- si se introducen datos de una reparación que no existe este también genera alerta de que
no se encontraron datos
3- Si se introduce un valor de texto en un recuadro numérico se alertara de esto solicitando
el cambio a valores numéricos
Poscondiciones:
Envió de Informe para impresión o guardado

Nombre: Registro de reparaciones

Autor: Camilo Hernando Mora Ruiz

Fecha: 30/08/2018

Descripción:
El modulo debe permitir el ingreso de las reparaciones de calzado permitiendo registrar el
tipo de calzado, el arreglo y el valor. En caso de requerir modificación del registro, el
sistema debe permitir hacerlo.
Actores:
Usuario logeado en el aplicativo,

Precondiciones:
Iniciar login Usuario y contraseña

Flujo Normal:
1.- El actor pulsa sobre el botón Ingresar nueva reparación
2.- El sistema muestra una caja de texto para introducir los valores
3.- El actor introduce los valores requeridos para su validación
4.- El sistema comprueba la validez de los datos y los almacena.
5.- El actor recibe una notificación de que se han almacenado los datos con exito.

Flujo Alternativo:
1- El sistema comprueba la validez de los datos, si los datos no son correctos, se avisa al
actor de ello permitiéndole que los corrija.
2- Si se introduce un valor de texto en un recuadro numérico se alertara de esto solicitando
el cambio a valores numéricos
Poscondiciones:
Envió de datos registrados a la base de datos
Nombre: Registro de clientes

Autor: Camilo Hernando Mora Ruiz

Fecha: 30/08/2018

Descripción:
Registro de Clientes: En este módulo debe permitir registrar el nombre, fecha de
nacimiento, dirección y el teléfono celular de cada cliente

Actores:
Usuario logeado/Administrador

Precondiciones:
Iniciar login Usuario y contraseña

Flujo Normal:
1.- El actor pulsa sobre el botón Ingresar nuevo cliente
2.- El sistema muestra una caja de texto para introducir los valores
3.- El actor introduce los valores requeridos para su validación
4.- El sistema comprueba la validez de los datos y los almacena.
5.- El actor recibe una notificación de que se han almacenado los datos con exito.

Flujo Alternativo:
1-El sistema comprueba la validez de los datos, si los datos no son correctos, o si no se
están llenando los recuadros requeridos se avisa al actor de ello permitiéndole que corrija
los errores alertados.
2- Si se introduce un valor de texto en un recuadro numérico se alertara de esto solicitando
el cambio a valores numéricos
Poscondiciones:
Envió de datos registrados a la base de datos
Nombre: Consulta clientes
Autor: Camilo Hernando Mora Ruiz

Fecha: 30/08/2018
Descripción:
Consulta de Clientes: En este módulo debe permitir consultar información relacionada con
los clientes y los saldos pendientes por reparaciones

Actores:
Usuario logeado/Administrador

Precondiciones:
Iniciar login Usuario y contraseña

Flujo Normal:
1.- El actor pulsa sobre el botón Clientes
2.- El sistema muestra todos los datos de la base de datos
3.- El actor puede acceder al informe solicitado filtrando la información con un valor
4.- El sistema comprueba los datos filtrados y genera la información solicitada
5.- El actor recibe una notificación de que se han encontrado datos
6- El sistema genera una pestaña nueva con los datos de cliente solicitados
7- El sistema muestra varias opciones como , guardar , imprimir y editar

Flujo Alternativo:
1-El sistema comprueba la validez de los datos, si los datos no son correctos, genera alerta
para que se corrija
2- si se introducen datos de un cliente que no existe este también genera alerta de que no
se encontraron datos
3- Se visualizara la última vez que se editó la información con el fin de que el actor pueda
verificar si alguien ingreso al aplicativo
Poscondiciones:
Impresión de información, consulta o salir del aplicativo
REQUISITOS NO FUNCIONALES

AUTOR Jhulie Andrea Borda Cruz


FECHA 02/08/2018
IDENTIFICADOR DESCRIPCION
RQN1 IDONEO: La aplicación debe proporcionar opciones claras para
los usuarios. El manejo de la aplicación debe ser lo más intuitivo
posible, en pocas palabras la navegación sobre el aplicativo debe
ser de fácil operabilidad para el usuario final.

RQN2 SENCILLO: La aplicación debe proporcionar al usuario


opciones que permitan realizar el trabajo de manera simple para
evitar problemas y errores durante su uso.
RQN3 RAPIDEZ: Los datos modificados en la base de datos deben ser
actualizados para todos los usuarios que acceden en menos de 2
segundos.
RQN4 FUNCIONALIDAD: Toda funcionalidad del sistema y consulta
debe responder al usuario en menos de 5 segundos.

RQN5 FACILIDAD Y OPTIMIZACION DE USO: La aplicación


debe brindar una experiencia de uso cercana a las aplicaciones
de escritorio.
RQN6 DOCUMENTACIÓN: El sistema debe contar con manuales de
usuario estructurados adecuadamente.
Bibliografía

Castilla Rodríguez, I. (n.d.). Explotación de los Sistemas Multi-Núcleo para la


Simulación Paralela de Eventos Discretos con Java. Retrieved from
https://riull.ull.es/xmlui/bitstream/handle/915/3383/Iván Castilla Rodríguez.pdf?
sequence=1&isAllowed=y
Joyanes Aguilar Matilde Fernandez Azuela, L., York Panama San Juan Santafé Bogotá
Santiago Sa, N. DE, Francisco, S., Singapur Louis Tokio, S. S., Auckland
Hamburg, T., & MONTREAL NUEVA DELHI PARiS, M. (n.d.). Java 2,
incluyena JAVA 2 MANUAL DE PROGRAMACIÓN MADRID BUENOS AIRES
CARACAS GUATEMALA LISBOA MÉXICO. Retrieved from
https://s3.amazonaws.com/academia.edu.documents/32046395/Luis_Joyanes_Agui
lar_-_Java_2__Manual_de_Programacion_.pdf?
AWSAccessKeyId=AKIAIWOWYYGZ2Y53UL3A&Expires=1536027562&Sign
ature=aHE%2FG7iiTeMqzJbHR7GCDRhi5KU%3D&response-content-
disposition=inline%3B filename%3DJava_2_incluyena.pdf

Calderón, M. (s.f.). Swing, la solución actual de Java para crear GUIs. Obtenido de
https://users.dcc.uchile.cl/~lmateu/CC60H/Trabajos/edavis/swing.html

Curso de Introducción a Java. (s.f.). Obtenido de


http://www.mundojava.net/excepciones.html?Pg=java_inicial_4_6.html

http://www.tecn.upf.es. (s.f.). Obtenido de


http://www.tecn.upf.es/~bouayad/prog/material/teoria/streams/exceptions.pdf

Programación Java. (s.f.). Obtenido de


http://puntocomnoesunlenguaje.blogspot.com/2012/04/metodos.html

Villalobos, J. (14 de October de 2010). codigoprogramacion.com. Obtenido de


http://codigoprogramacion.com/cursos/java/87-curso-javautilizando-metodos-en-
java.html#.W4oO8bgkqgsVélez Serrano, J., Peña Abril, A., & Gortazar Bellas, P.
(2000). Diseñar y programar, todo es empezar : una introducción a la
Programación Orientada a Objetos usando UML y Java. Dykinson. Retrieved
from https://books.google.es/books?
hl=es&lr=lang_es&id=lk57JxHhpyAC&oi=fnd&pg=PA1&dq=Modularización+en
+java&ots=FNqUHsV7tx&sig=tg1jxs2EPMZ9rUWBmjNj5HeRBoQ#v=onepage
&q=modulariza&f=false
BIBLIOGRAFIA

 http://computacionii.foroes.org/t6-programacion-orientada-a-objetos-vs-
programacion-estructurada
 https://www.dspace.espol.edu.ec/bitstream/123456789/11378/1/Programacion
%20Java%20Proyecto_completa.pdf
 https://techlandia.com/ventajas-desventajas-programacion-orientada-objetos-
info_184901/
 https://objetosweb.wordpress.com/2016/05/18/ventajas-y-desventajas-de-la-
programacion-orientada-a-objetos/
 http://www.manualweb.net/java/variables-java/
 http://computacionii.foroes.org/t6-programacion-orientada-a-objetos-vs-
programacion-estructurada
 https://es.wikipedia.org/wiki/Programaci%C3%B3n_orientada_a_objetos

 http://www.sc.ehu.es/sbweb/fisica/cursoJava/fundamentos/introduccion/primero.ht
m#Identificadores

 http://www.sc.ehu.es/sbweb/fisica/cursoJava/fundamentos/clases1/clases.htm

 https://es.wikipedia.org/wiki/Clase_(inform%C3%A1tica)

 http://www.mundojava.net/definicion-de-atributos-de-una-clase.html?
Pg=java_inicial_4_4_3.html

 http://www.it.uc3m.es/java/gitt/resources/static/index_es.html

 https://thedarkoznet.wordpress.com/2012/01/20/como-crear-una-instancia-en-java/
 Miguel Angel Alvarez. (2014). Polimorfismo en Programación Orientada a Objetos.
2018/05/20, de DesarrolloWeb.com Sitio web:
https://desarrolloweb.com/articulos/polimorfismo-programacion-orientada-objetos-
concepto.html
 Carlos Vialfa. (2016). POO - Encapsulación de datos. 2017-11-07, de CCM
(https://es.ccm.net/) Sitio web: https://es.ccm.net/contents/410-poo-encapsulacion-
de-datos
 Anonimo. (2014). Pasar de INT a String y de String a INT en Java. lunes 2014-12-
15, de http://sinplanes.com
 Sitio web: http://sinplanes.com/tecnologia/pasar-de-int-a-string-y-de-string-a-int-en-
java.html
 http://www.pmoinformatica.com/2015/05/requerimientos-no-funcionales-
ejemplos.html
 http://www.pmoinformatica.com/2018/04/documento-de-requerimientos-de-
software_37.html
 http://www.pmoinformatica.com/2017/02/requerimientos-funcionales-
ejemplos.html
 https://sites.google.com/site/metodologiareq/capitulo-ii/tecnicas-para-identificar-
requisitos-funcionales-y-no-funcionales

También podría gustarte