Vous êtes sur la page 1sur 35

Escuela: Ciencias Básicas, Tecnología e Ingeniería

Curso: Programación Orientada a Objetos

Fase 1
Análisis de Requisitos

María Daniela González. Código:


Merlyn Islen Gómez Ospina. Código: 38142774
Larry Wilson Yate Salazar. Código: 93235505
Arvey Buritica. Código: 93296127
Darwin Andrey Céspedes. Código:

Grupo: 301403_13

Tutor: Ing. Franklin Lizcano Celis

Universidad Nacional Abierta y a Distancia Unad.


Ibagué, Tolima.
Febrero 2018.
Escuela: Ciencias Básicas, Tecnología e Ingeniería
Curso: Programación Orientada a Objetos

Tabla de contenido

Introducción .................................................................................. 3
Objetivos ....................................................................................... 4
Desarrollo de la Actividad ................................................................ 5
PROYECTO B ................................................................................ 30
Conclusiones ................................................................................ 34
Referencias .................................................................................. 35
Escuela: Ciencias Básicas, Tecnología e Ingeniería
Curso: Programación Orientada a Objetos

Introducción
Escuela: Ciencias Básicas, Tecnología e Ingeniería
Curso: Programación Orientada a Objetos

Objetivos
Escuela: Ciencias Básicas, Tecnología e Ingeniería
Curso: Programación Orientada a Objetos

Desarrollo de la Actividad

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


programación orientada a objetos

PROGRAMACION PROGRAMACION ORIENTADA A


ESTRUCTURADA OBJETOS
Programas en módulos; va de lo Utiliza objetos y sus interacciones
general a lo particular
Las instrucciones se ejecutan en Incorpora procedimientos separados y
orden datos de una clase
Son más fáciles de comprender Es más actual; facilita el mantenimiento
del software
Son programas sencillos Son programas complejos
Maneja como unidad la función; los Maneja como unidad la clase; el código y
bloques conforman funciones y las los datos conforman el objeto
unidades estructuras
Se dirige hacia acciones Incluye datos en objetos vinculados entre

Los errores son fáciles de Su estructura no permite encontrar los
encontrar errores fácilmente

2. Ventajas y desventajas de la programación orientada a


objetos

VENTAJAS DESVENTAJAS
Permite la creación de Existen programas que no
programas pueden ser modelados por
objetos
Facilita la creación de nuevos Se pierde características de los
objetos a partir de los existentes lenguajes funcionales
Agiliza el mantenimiento de El análisis de un programador
software frente a un objeto puede no
coincidir con otro programador
Los programas son de fácil Al exigir al lenguaje se pueden
diseño presentar pérdidas de
características y objetos
Escuela: Ciencias Básicas, Tecnología e Ingeniería
Curso: Programación Orientada a Objetos

Agiliza la creación del software Se requiere de una gran


documentación para los objetos

3. Sintaxis para definir variables en Java

La sintaxis posee los siguientes elementos:

1. Bloques de código: grupo de sentencias

2. Comentarios:

 En una sola línea: //


 Varias líneas: /* */
 Documentación: /** */

3. Expresiones: todo lo que está al lado derecho del operador =

4. Identificadores: los nombres que se dan a las variables

 Diferencia entre letras mayúsculas y minúsculas


 No puede contener el carácter espacio en blanco
 No es posible hacer uso de las palabras reservadas como
identificadores
 Puede contener, pero no empezar por un número
 Los identificadores han de comenzar con una letra, el carácter
subrayado ( _ ) o el carácter dólar ( $ ).

Identificador Convención
Constante En letras mayúsculas
función Comienza con letra minúscula
Clase Comienza con letra mayúscula
variable Comienza con letra minúscula

5. Operadores
Escuela: Ciencias Básicas, Tecnología e Ingeniería
Curso: Programación Orientada a Objetos

6. Variables: existen tres clases:

 Instancia
 Clase
 Locales

“El hecho de declarar una variable implica que se reserva un espacio de


memoria para ella, pero no que ese espacio de memoria esté ocupado
aunque pueda tener un contenido por defecto. Ten en cuenta que en Java
no puedes aplicar algunas normas que rigen en otros lenguajes, como que
al declarar una variable entera ésta contendrá por defecto el valor cero.
En Java esta situación puede dar lugar a errores de compilación: una
variable entera no debemos suponer que contenga nada. Para que
contenga algo debemos asignarle un contenido. Veamos ejemplos de
asignación de contenido”. (Fuente:
https://www.aprenderaprogramar.com/index.php?option=com_content&
view=article&id=424:ejemplos-de-uso-de-tipos-de-variables-datos-en-
java-declaracion-inicializacion-de-variables-
cu00622b&catid=68&Itemid=188):

Fuente:
https://www.aprenderaprogramar.com/index.php?option=com_content&
Escuela: Ciencias Básicas, Tecnología e Ingeniería
Curso: Programación Orientada a Objetos

view=article&id=424:ejemplos-de-uso-de-tipos-de-variables-datos-en-
java-declaracion-inicializacion-de-variables-
cu00622b&catid=68&Itemid=188

7. Palabras reservadas: las palabras que utiliza el propio lenguaje


8. Sentencias: Órdenes que realizan una tarea específica.
9. Tipos de datos

4. Sintaxis para imprimir en consola en Java

System.out.println

5. Sintaxis para comentar 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.

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:
Escuela: Ciencias Básicas, Tecnología e Ingeniería
Curso: Programación Orientada a Objetos

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 (*/)

Lo que se puede hacer con los comentarios de JavaDoc lo dejaremos para


otro post.

6. Sintaxis de los operadores lógicos y relacionales

Los operadores relacionales son símbolos que se usan para comparar dos
valores. Si el resultado de la comparación es correcto la expresión
considerada es verdadera, en caso contrario es falsa. Por ejemplo, 8>4
(ocho mayor que cuatro) es verdadera, se representa por el valor true del
tipo básico boolean, en cambio, 8<4 (ocho menor que cuatro) es
falsa, false. En la primera columna de la tabla, se dan los símbolos de los
operadores relacionales, en la segunda, el nombre de dichos operadores,
y a continuación su significado mediante un ejemplo.

Operador Nombre ejemplo significado


< menor que a<b a es menor que b
Escuela: Ciencias Básicas, Tecnología e Ingeniería
Curso: Programación Orientada a Objetos

> mayor que a>b a es mayor que b


== igual a a==b a es igual a b
!= no igual a a!=b a no es igual a b
<= menor que o igual a<=5 a es menor que o igual
a ab
>= mayor que o igual a>=b a es menor que o igual
a ab

Se debe tener especial cuidado en no confundir el operador asignación


con el operador relacional igual a. Las asignaciones se realizan con el
símbolo =, las comparaciones con ==.

En el programa RelacionApp, se compara la variable i que guarda un 8,


con un conjunto de valores, el resultado de la comparación es verdadero
(true), o falso (false).

public class RelacionApp {


public static void main(String[] args) {
int x=8;
int y=5;
boolean compara=(x<y);
System.out.println("x<y es "+compara);
compara=(x>y);
System.out.println("x>y es "+compara);
compara=(x==y);
System.out.println("x==y es "+compara);
compara=(x!=y);
System.out.println("x!=y es "+compara);
compara=(x<=y);
System.out.println("x<=y es "+compara);
compara=(x>=y);
System.out.println("x>=y es "+compara);
}
Escuela: Ciencias Básicas, Tecnología e Ingeniería
Curso: Programación Orientada a Objetos

Los operadores lógicos

Los operadores lógicos son:

 && AND (el resultado es verdadero si ambas expresiones son


verdaderas)
 || OR (el resultado es verdadero si alguna expresión es verdadera)
 ! NOT (el resultado invierte la condición de la expresión)

AND y OR trabajan con dos operandos y retornan un valor lógico basadas


en las denominadas tablas de verdad. El operador NOT actúa sobre un
operando. Estas tablas de verdad son conocidas y usadas en el contexto
de la vida diaria, por ejemplo: "si hace sol Y tengo tiempo, iré a la playa",
"si NO hace sol, me quedaré en casa", "si llueve O hace viento, iré al
cine". Las tablas de verdad de los operadores AND, OR y NOT se muestran
en las tablas siguientes

El operador lógico AND

x y resultado
true true true
true false false
false true false
false false false

El operador lógico OR

x y resultado
true true true
Escuela: Ciencias Básicas, Tecnología e Ingeniería
Curso: Programación Orientada a Objetos

true false true


false true true
false false false

El operador lógico NOT

x resultado
true false
false true

Los operadores AND y OR combinan expresiones relacionales cuyo


resultado viene dado por la última columna de sus tablas de verdad. Por
ejemplo:

(a<b) && (b<c)

es verdadero (true), si ambas son verdaderas. Si alguna o ambas son


falsas el resultado es falso (false). En cambio, la expresión

(a<b) ||(b<c)

es verdadera si una de las dos comparaciones lo es. Si ambas, son falsas,


el resultado es falso.

La expresión " NO a es menor que b"

!(a<b)

Es falsa si (a<b) es verdadero, y es verdadera si la comparación es falsa.


Por tanto, el operador NOT actuando sobre (a<b) es equivalente a

(a>=b)

La expresión "NO a es igual a b"

!(a==b)

Es verdadera si a es distinto de b, y es falsa si a es igual a b. Esta


expresión es equivalente a

(a!=b)
Escuela: Ciencias Básicas, Tecnología e Ingeniería
Curso: Programación Orientada a Objetos

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


identidad, constructor e identificadores.

Clase: Una clase es por tanto una plantilla implementada en software que
describe un conjunto de objetos con atributos y comportamiento
similares.

Instancia de clase: Una instancia u objeto de una clase es una


representación concreta y específica de una clase y que reside en la
memoria del ordenador.

Atributos: Los atributos son las características individuales que


diferencian un objeto de otro y 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. Las variables de instancia también denominados miembros
dato, son declaradas en la clase pero sus valores son fijados y cambiados
en el objeto.

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.

Identidad: es un dato que hace diferente al objeto en cuestión de otros


objetos.

Constructor: 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 declarado en la clase. El constructor tiene el
mismo nombre que la clase. Lo específico del constructor es que no tiene
tipo de retorno.
Escuela: Ciencias Básicas, Tecnología e Ingeniería
Curso: Programación Orientada a Objetos

Identificadores: Cómo se escriben los nombres de las variables, de las


clases, de las funciones, etc., es un asunto muy importante de cara a la
comprensión y el mantenimiento de código. En la introducción a los
fundamentos del lenguaje Java hemos tratado ya de los identificadores.

El código debe de ser tanto más fácil de leer y de entender como sea
posible. Alguien que lea el código, incluso después de cierto tiempo, debe
ser capaz de entender lo que hace a primera vista, aunque los detalles
internos, es decir, cómo lo hace, precise un estudio detallado.

8. Informe los tipos de clase

El conocimiento de las clases en Java es fundamental, ya que todo gira


entorno a ellas. Un buen conocimiento de ellas nos permitirá realizar
programas que cumplan con lo que deseamos. Crear una clase es sencillo,
se hace lo siguiente:

[modificador] class [nombre]

//atributos y metodos

El modificador es el tipo de clase que se está creando. De acuerdo a este


modificador, nuestra clase puede tener diferentes características. Según
cómo necesitamos que funcione nuestra clase podemos elegir entre un
tipo u otro.En java existen 4 tipos de clases:

Public

Abstract

Final

Synchronizable
Escuela: Ciencias Básicas, Tecnología e Ingeniería
Curso: Programación Orientada a Objetos

CLASE PIBLIC

Tiene la característica de ser accesible desde cualquier otra clase.

Se puede acceder a ellas directamente o por herencia, estando en el


mismo paquete o desde otros paquetes, primero hay que importarlos con
la sentencia “import”.

Un detalle de las clases del tipo “public” es que el archivo con el que se
guardan debe tener el mismo nombre de la clase, de otra forma se
presentará un error de compilación. Uno puede llamar a una clase public
desde otra, si se encuentran en la misma carpeta, de otra forma tendrá
dificultades para interactuar con esta.

Un ejemplo de uso de una clase public sería:

public class banco {

// cuerpo de la clase

Y al momento de grabar el programa, tendríamos que ponerle al archivo


el nombre de “banco.java”.

CLASE ABSTRACT

Sin la necesidad de implementar métodos, es decir se dejan incompletos


para después ser refinados mediante el mecanismo de la herencia, se
puede fijar un conjunto de métodos y atributos. Las clases abstractas
trabajan junto con los métodos abstractos, los cuales están vacíos. Esto
es muy útil cuando la implementación es específica pero cada usuario,
cada uno puede implementarlos como le parezca, pero sus métodos
deben tener los mismos nombres que se dieron antes.

Por ejemplo al ver una declaración de métodos en una clase abstracta


solo podemos observar algunas líneas que solamente tienen los datos que
Escuela: Ciencias Básicas, Tecnología e Ingeniería
Curso: Programación Orientada a Objetos

van a recibir los métodos, pero el código que ejecutara el método no está,
eso quiere.

Decir que podría estar en otro sitio. Se puede decir que es una base para
la herencia.

Pueden ser a la vez clases “public”. Aquí un ejemplo de una clase:

public abstract class Triangulo {

public abstract void Area_Triangulo(int b,int h);

public abstract void Perímetro( int x,int y,int z);

CLASE FINAL

Una clase final es la que acaba con una cadena de herencia. De la clase
final no se puede heredar nada. Al decir que termina la cadena de herencia
significa que ya no se sub-divide en más clases, pues indica que es el final
delas divisiones.

Las organizaciones de clases en java suelen ser de la siguiente forma:

class A{}

class B

extends A { }

Con lo que se indica que de la clase A sale una sub-clase o clase hija que
es B. Pero se puede modificar este tipo de organizaciones al usar “final”.

Sería de la siguiente forma:

final class A { }

Con lo que se está indicando que de la clase A no van a salir otras clases.
Es posible mezclar final con public, es decir, se puede tener algo como
esto:
Escuela: Ciencias Básicas, Tecnología e Ingeniería
Curso: Programación Orientada a Objetos

public final class A{ }

Uno puede declarar su clase como “final” por algunos motivos.

Motivo de seguridad.

Motivo de eficiencia.

Por ejemplo, la clase java.lang.String

Está declarada como “final”, por lo tanto no permite crear una sub-clase
String y darle un método length() que yo haya creado y que haga algo
diferente a devolverme la longitud de una cadena. El otro motivo para
usar “final” es la eficiencia. Se trabaja solo con instancias de la clase sin
tener que ir a las sub-clases, así puedes optimizar esa clase.

Clases Synchronizable

“Synchronizable” se especifica que todos los métodos que esténdefinidos


dentro de esta clase serán sincronizados. Para esto debemos saberque la
computadora puede llevar a cabo varios threads a la vez; un thread esun
flujo de control para controlar la ejecución de un programa.

Nota:

Si no se utiliza alguno de los modificadores al momento de crear una


clase, pordefecto, Java asume que la clase es:

No final

No abstracta

Subclase de la clase Object

No implementa interfaz alguno


Escuela: Ciencias Básicas, Tecnología e Ingeniería
Curso: Programación Orientada a Objetos

9. Describa el concepto de Modularización

La modularización consiste en resolver un problema complejo dividiéndolo


en problemas de menor tamaño y concentrar la solución a estos llamados
“Subproblemas”.
Esto nos indica que podemos dar solución al problema original resolviendo
por medio de módulos los cuales son los encargados de resolver un
subproblema determinado, los módulos son conocidos como
“Subalgoritmos”, estos se escriben una sola vez y luego es posible hacer
referencia a ellos (Llamarlos) desde diferentes puntos de un pseudo
código. Esto nos permite reutilizarlos y evitar la repetición de códigos.
Al ser independientes los subalgoritmos entre sí, se pueden escribir y
verificar por separado sin alterar los demás módulos facilitando localizar
errores y permitiendo modificar un código sin alteraciones al mismo.
Los subalgoritmos son de tipo funciones y procedimientos.
En las funciones se toma uno o varios valores denominados argumentos
y esto produce un valor resultado.
Ejemplo: se llama a la función mes que devuelve el nombre del mes
dándole un valor numérico.

MES (2)
(esto devolverá "FEBRERO")

En los procedimientos los conjuntos de sentencias o instrucciones que


realizan una determinada tarea y son ejecutados desde un punto del
programa principal.

10. Describa el concepto de Herencia

La herencia es la facultad que tiene una clase para generar a partir de


conceptos particulares una nueva clase denominada subclase la cual
contiene atributos y métodos de la clase de la que fue creada denominada
clase primaria. La herencia tiene la capacidad para definir los atributos
que debe tener la nueva clase creada (subclase).
Escuela: Ciencias Básicas, Tecnología e Ingeniería
Curso: Programación Orientada a Objetos

La herencia trata de simplificar los resultados y obtener los atributos y


métodos obteniendo los factores comunes de las subclases denominadas
“Clases Hijas”, a la clase primaria denomina “Clase Padre o Superclase”

Por ejemplo, tenemos la Clase Padre “Animal” de la cual podemos tomar


algunos conceptos para formar Clases Hijas “Herbívoro”, “Carnívoro” y
“Omnívoro”.

En algunos lenguajes se permite tener una herencia múltiple donde una


clase puede heredar atributos de otras dos clases.

11. Describa el concepto de Polimorfismo

El polimorfismo tiene la propiedad para que un operador o función se


comporte diferente en función del objeto sobre el cual se aplican. El
concepto o definición es la capacidad de la interpretación de una
operación solo por el objeto que hace el llamado. En la ejecución del
programa, el polimorfismo se da en tiempo de ejecución el cual en la
compilación no define que tipo de objeto y a su vez que operación ha sido
invocada.
Tiene como propiedad que una operación contenga el nombre en
diferentes clases, pero ejecutadas en formas diferentes dentro de cada
clase, por ejemplo, la operación “ABRIR” puede estar en varias clases:
Escuela: Ciencias Básicas, Tecnología e Ingeniería
Curso: Programación Orientada a Objetos

abrir un archivo, abrir un libro, abrir una puerta, abrir un swiche, etc. En
cada uno de los ejercicios se realiza la misma operación “ABRIR”, pero
sobre distintos objetos.
De tal manera una operación tiene la propiedad de ser interpretada
únicamente por el objeto al cual pertenece.
Podemos implementar el polimorfismo y este varía dependiendo del

lenguaje de programación utilizado.

12. Describa el concepto de Encapsulamiento

13. Informe cómo convertir un String a entero en Java

Para convertir un String (cadena) a int (entero) hay que emplear el


método estático de la clase Integer, parseInt

Ejemplos:

String enteroString = "5";

int entero = Integer.parseInt(enteroString);

String numCadena = "1";

int numEntero = Integer.parseInt(numCadena);

String cadena = "1234";

int numero = 0;
Escuela: Ciencias Básicas, Tecnología e Ingeniería
Curso: Programación Orientada a Objetos

numero = Integer.parseInt(cadena)

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

constructor

Un constructor es un método especial de una clase que se llama


automáticamente siempre que se declara un objeto de esa clase.

Su función es inicializar el objeto y sirve para asegurarnos que los objetos


siempre contengan valores válidos.

Cuando se crea un objeto en Java se realizan las siguientes operaciones


de forma automática:

1. Se asigna memoria para el objeto.

2. Se inicializan los atributos de ese objeto con los valores


predeterminados por el sistema.

3. Se llama al constructor de la clase que puede ser uno entre varios.

El constructor de una clase tiene las siguientes características:

Tiene el mismo nombre que la clase a la que pertenece.

En una clase puede haber varios constructores con el mismo nombre y


distinto número de argumentos (se puede sobrecargar)

No se hereda.

No puede devolver ningún valor


Escuela: Ciencias Básicas, Tecnología e Ingeniería
Curso: Programación Orientada a Objetos

Debe declararse público (salvo casos excepcionales) para que pueda ser
invocado desde cualquier parte donde se desee crear un objeto de su
clase.

Ejemplo.

Cree una aplicación en Java, que imprima un número imaginario, Nota,


los números imaginarios, poseen una parte real y otra imaginaria,
acompañada por la constante i.

1 class Imaginario {

2 private int real, imag;

3 public Imaginario()

4 {

5 real=0;

6 imag=0;

7 }

8 public Imaginario(int x, int y)

9 {

10 real=x;

11 imag=y;

12 }

13 public void Mostrar()


Escuela: Ciencias Básicas, Tecnología e Ingeniería
Curso: Programación Orientada a Objetos

14 {

15 System.out.println("El Numero Imaginario es: "+real+" +


"+imag+"i");

16 }

17 }

1 class UsaImaginario{

2 public static void main (String args ) {

3 Imaginario oI=new Imaginario(5,6);

4 oI.Mostrar();

5}

6}

15. Qué función tiene el paquete Swing en Java y describa sus

principales características

Swing es una biblioteca gráfica para Java, incluye widgets para interfaz
gráfica de usuario tales como cajas de texto, botones, listas desplegables
y tablas.

Este paquete que hace parte de la Java Foundation Classes o mas


conocida como JFC, la cual provee herramientas o facilidades para la
Escuela: Ciencias Básicas, Tecnología e Ingeniería
Curso: Programación Orientada a Objetos

construcción de GUI's o interfaces Graficas de Usuario (graphical user


interface).

A partir de AWT nace Swing y con el mejoras no solo en aspectos visuales


sino también en portabilidad y comportamiento

La arquitectura Swing presenta una serie de ventajas respecto a su


antecedente AWT:

Amplia variedad de componentes: En general las clases que comiencen


por "J" son componentes que se pueden añadir a la aplicación, por
ejemplo: JButton.

Aspecto modificable (look and feel): Se puede personalizar el aspecto de


las interfaces o utilizar varios aspectos que existen por defecto (Metal
Max, Basic Motif, Window Win32).

Arquitectura Modelo-Vista-Controlador: Esta arquitectura da lugar a todo


un enfoque de desarrollo muy arraigado en los entornos gráficos de
usuario realizados con técnicas orientadas a objetos, cada componente
tiene asociado una clase de modelo de datos y una interfaz que utiliza, se
puede crear un modelo de datos personalizado para cada componente,
con sólo heredar de la clase Model.

Gestión mejorada de la entrada del usuario: Se pueden gestionar


combinaciones de teclas en un objeto KeyStroke y registrarlo como
componente, el evento se activará cuando se pulse dicha combinación si
está siendo utilizado el componente, la ventana en que se encuentra o
algún hijo del componente.

Objetos de acción (action objects): Estos objetos cuando están activados


(enabled) controlan las acciones de varios objetos componentes de la
interfaz, son hijos de ActionListener.
Escuela: Ciencias Básicas, Tecnología e Ingeniería
Curso: Programación Orientada a Objetos

Contenedores anidados: Cualquier componente puede estar anidado en


otro, por ejemplo, un gráfico se puede anidar en una lista.

Escritorios virtuales: Se pueden crear escritorios virtuales o "interfaz de


múltiples documentos" mediante las clases JDesktopPane y
JInternalFrame.

Bordes complejos: Los componentes pueden presentar nuevos tipos de


bordes. Además el usuario puede crear tipos de bordes personalizados.

Diálogos personalizados: Se pueden crear multitud de formas de


mensajes y opciones de diálogo con el usuario, mediante la clase
JOptionPane.

Clases para diálogos habituales: Se puede utilizar JFileChooser para elegir


un fichero, y JColorChooser para elegir un color.

Componentes para tablas y árboles de datos: Mediante las clases JTable


y JTree.

Potentes manipuladores de texto: Además de campos y áreas de texto,


se presentan campos de sintaxis oculta JPassword, y texto con múltiples
fuentes JTextPane. Además hay paquetes para utilizar ficheros en formato
HTML o RTF.

Capacidad para "deshacer": En gran variedad de situaciones se pueden


deshacer las modificaciones que se realizaron.

Soporte a la accesibilidad: Se facilita la generación de interfaces que


ayuden a la accesibilidad de discapacitados, por ejemplo en Braille.

Nuevos gestores de impresión

Swing incorpora nuevos gestores de impresión, ampliando los cinco que


AWT incorporaba, entre ellos conviene destacar los siguientes:
Escuela: Ciencias Básicas, Tecnología e Ingeniería
Curso: Programación Orientada a Objetos

BoxLayout: Es similar al FlowLayout de AWT, con la diferencia de que con


él se pueden especificar los ejes (x o y), viene incorporada en el
componente Box, pero está disponible como una opción en otros
componentes.

OverlayLayout: Todos los componentes se añaden encima de cada


componente previo.

SpringLayout: El espacio se asigna en función de una serie de


restricciones asociadas con cada componente.

ScrollPaneLayout: Incorporado en el componente ScrollPane.

ViewportLayout: Incorporado en el componente Viewport.

Principales clases

Las clases de Swing se parecen mucho a las de AWT, así la clase Panel de
AWT tiene una clase JPanel en Swing, esto se cumple para todas las clases
menos para Choice, Canvas, FileDialgog y ScrollPane.

De hecho todas las clases componentes de Swing (clases hijas de


JComponent), son hijas de la clase Component de AWT.

ButtonGroup: Muestra una lista de elementos (JRadioButton) con solo uno


seleccionable, cada elemento tiene un círculo, que en caso del elemento
seleccionado contendrá un "punto".

JToggleButton: Es como un botón normal, pero al ser pinchado por el


usuario queda activado.
Escuela: Ciencias Básicas, Tecnología e Ingeniería
Curso: Programación Orientada a Objetos

JProgressBar: Representa una barra de estado de progreso, mediante la


que habitualmente se muestra el desarrollo de un proceso en desarrollo
(ejemplo: la instalación de una aplicación).

JTabbedPane: Es una ventana con solapas (la que utiliza Windows), este
componente había sido muy solicitado.

JApplet: Aunque ya existía una clase Applet en AWT, esta nueva versión
es necesaria para crear applets Java que utilicen interfaces Swing.

Por supuesto Swing no se limita a estas clases, sino que posee muchas
más con diversas funcionalidades, para estudiarlas consulte la
documentación del JDK 1.2 de Java.

Patrón de diseño Modelo-Vista-Controlador

Muchos de los componentes Swing están basados en un patrón de diseño


denominado "Modelo-Vista-Controlador".

El concepto de este patrón de diseño se basa en tres elementos:

Modelo: Almacena el estado interno en un conjunto de clases.

Vista: Muestra la información del modelo

Controlador: Cambia la información del modelo (delegado).

Ventajas

El diseño en Java puro posee menos limitaciones de plataforma.

El desarrollo de componentes Swing es más activo.

Los componentes de Swing soportan más características.


Escuela: Ciencias Básicas, Tecnología e Ingeniería
Curso: Programación Orientada a Objetos

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

excepciones en Java.

Excepciones, o sencillamente problemas, en la programación siempre se


producen errores, más o menos graves, pero que hay que gestionar y
tratar correctamente, por ello en java disponemos 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 código 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)
Escuela: Ciencias Básicas, Tecnología e Ingeniería
Curso: Programación Orientada a Objetos

//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.
Escuela: Ciencias Básicas, Tecnología e Ingeniería
Curso: Programación Orientada a Objetos

Se puede apreciar que cada catch se parece a una función en la cuál sólo
recibimos un objeto de un determinado tipo, precisamente el tipo del
error, es decir sólo se llamará al catch cuyo argumento sea coincidente
en tipo con el tipo del error generado.

PROYECTO B

El Mini mercado Surtimax S.A es una empresa unifamiliar la cual es


atendida por José Andrés Cárdenas y Gloria Martínez, quienes son los
Propietarios del Mini Mercado. Actualmente el Mini mercado solo cuenta
con cinco clientes (Véase figura 1) y solo ofrece algunos productos a la
venta (Véase figura 2). De igual manera se debe tener en cuenta otros
roles de usuario (Véase figura 3).

Figura 1. Clientes Mini mercado La Granjita S.A

Identificación Nombre Completo Edad Teléfono Dirección

109845678 Elizabeth Rincón 23 6441934 Cra 21 15-02

3214567 Zulia Vega 25 7245678 AV 115 25-40

36789065 Alexander Otálora 45 6543213 Cra 24 Nro 38-18

1099765 Lucia Acuña 28 6789054 Cra 25 Nro 45-125

2567890 Taliana Vargas 27 6789032 Diag 25 Nro 12-45


Escuela: Ciencias Básicas, Tecnología e Ingeniería
Curso: Programación Orientada a Objetos

16789045 Carlos Medina 35 7896543 Cra 25 Nro 76-25

Figura 2. Productos disponibles en Mini mercado Surtimax S.A

Nombre del Tipo de Unidad de


Costo
producto producto medida
Aceite No Perecedero Litros $ 2500
Arroz No Perecedero Kilogramos $1300
Pastas No Perecedero Kilogramos $900
Tomate Perecedero Kilogramos $1500
Cebolla Perecedero Kilogramos $1200

Figura 3 Otros roles de usuarios

Nombre
Identificación Teléfono Dirección Rol
Completo
3214567 Zulia Vega 7245678 AV 115 25-40 Administrador
2874963 Andrés Cortes 5555555 Cra 34 17-80 Empleado

Para lograr un buen funcionamiento del negocio se requiere el desarrollo


de una aplicación que realice los siguientes procesos:

Registro de Productos: El módulo debe permitir el ingreso de nuevos


productos permitiendo registrar su nombre, tipo de producto y unidad de
medida.

Registro de Clientes: En este módulo debe permitir registrar el nombre,


la edad, la dirección y el teléfono celular de cada cliente.

Actualización Información de Productos: En este módulo se debe


permitir actualizar la información del producto ya registrado o la
modificación de los datos relacionados con ésta.

Venta de productos: En este módulo debe permitir realizar el proceso


de venta de productos, registrando el producto y los datos básicos del
cliente.
Escuela: Ciencias Básicas, Tecnología e Ingeniería
Curso: Programación Orientada a Objetos

Consulta de Productos: En este módulo debe permitir consultar


información relacionada con los productos, teniendo como criterios de
consulta como: El nombre del producto, el tipo de producto y Unidad de
Medida.

Finalmente, 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. Se debe 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.

Para el desarrollo de este proyecto se debe utilizar el paradigma orientado


a objetos (clases, herencia, polimorfismo, encapsulamiento, etc), así
mismo se debe utilizar la base de datos MYSQL como base de datos
predeterminada. El código de la aplicación debe ser comentado en su
totalidad.

Al finalizar el proyecto en la Fase 5 uno de los integrantes del grupo debe


comprimir en una carpeta el archivo ejecutable, y éste será el mismo
que ejecutará el docente al momento de la calificación.

Definición del Problema

El Mini mercado Surtimax S.A requiere un software que le permita tener


control en registro de clientes, productos, actualización, venta y
consulta; para el buen funcionamiento del establecimiento.

Objetivo General

Desarrollar una aplicación para Registro y Control

Objetivos Específicos

 Identificar las clases de requerimientos


Escuela: Ciencias Básicas, Tecnología e Ingeniería
Curso: Programación Orientada a Objetos

 Crear un proceso en la aplicación que permita el registro de


Productos.
 Crear un proceso en la aplicación que permita el registro de
Clientes.
 Crear un proceso en la aplicación que permita la actualización de la
información de Productos.
 Crear un proceso en la aplicación que permita realizar el proceso de
venta de Productos.
 Crear un proceso en la aplicación que permita consultar la
información de los Productos.
 Crear un proceso de código de seguridad para la Aplicación

Requisitos Funcionales

 correcto registro de clientes y productos

 precisión en los datos de inventario para consulta

 total cubrimiento de la demanda

 Permite controlar las ventas realizadas

Requisitos No Funcionales

 Alto rendimiento, Gran capacidad en el procesamiento de datos.

 el proceso debe ser asequible, Facil interfaz con el usuario.

 el sistema debe poseer estabilidad.


Escuela: Ciencias Básicas, Tecnología e Ingeniería
Curso: Programación Orientada a Objetos

Conclusiones

 La recolección de los requerimientos de un sistema es de gran


importancia en el desarrollo a la solución de un problema
determinado.

 Los requerimientos funcionales son de bastante interés, ya que con


ellos se determina el desempeño que tendrá el sistema.

 Mediante los criterios que nos brindan los requerimientos no


funcionales, se puede validar la operación de un sistema.
Escuela: Ciencias Básicas, Tecnología e Ingeniería
Curso: Programación Orientada a Objetos

Referencias

Los Elementos del Lenguaje Java. Recuperado de:


http://www.sc.ehu.es/sbweb/fisica/cursoJava/fundamentos/introd
uccion/primero.htm

Aprender a Programar.com. Declaración e Inicialización de Variables en


Java. Recuperado de:
https://www.aprenderaprogramar.com/index.php?option=com_co
ntent&view=article&id=424:ejemplos-de-uso-de-tipos-de-
variables-datos-en-java-declaracion-inicializacion-de-variables-
cu00622b&catid=68&Itemid=188

Vialfa, C. (2018, 02). POO - Herencia. ccm. Obtenido 02, 2018, de


http://es.ccm.net/contents/411-poo-herencia

JOYANES AGUILAR, L. (2008). FUNDAMENTOS DE


PROGRAMACION (CUARTA ed., Vol., pp. 58-63). S.A. MCGRAW-HILL /
INTERAMERICANA DE ESPAÑA.

Cristian. Henao, 11 de agosto 2013, Java Swing, Recuperado de,

http://codejavu.blogspot.com.co/2013/08/que-es-java-swing.html

Marcela. Calderón, 13 de febrero 2011, Java, Recuperado de,

https://users.dcc.uchile.cl/~lmateu/CC60H/Trabajos/edavis/swing.html

Carlos. Gonzales, 16 de agosto 2014, biblioteca grafica, Recuperado de,

https://www.ecured.cu/Swing_(biblioteca_gr%C3%A1fica)