Ejemplo Programación Orientado a Objetos por JCT
Enunciado del problema Implementar la privacidad con la criptografía
Se desea construir una aplicación para manejar una alcancía. La alcancía debe permitir guardar monedas
de las siguientes denominaciones: $50, $100, $200, $500 y $1000. No se guardan ni billetes ni monedas
de otras denominaciones.
La alcancía debe mostrar cuántas monedas tiene de cada denominación en todo momento.
Adicionalmente, permite romper la alcancía, mostrando el valor total que había en ella y vaciando su
contenido.
Interfaz por consola
,
Ejemplo Programación Orientado a Objetos por JCT
Solución con POO
1. Análisis Conceptual
Conocimiento previo de la alcancía
La alcancía (árabe: الكنزية, al-kanzíyya, el tesoro oculto),
también conocida como hucha, es una pieza
tradicional alfarera en forma de vasija de perfil ovoide,
culminada en su parte más alta por un remate cónico, y
totalmente cerrada pero que presenta, por lo general en
su parte superior, una estrecha hendidura para guardar
monedas. Las alcancías tradicionales son de barro, y
para recuperar las monedas es necesario romperlas.
También se fabrican modelos en materiales resistentes
o flexibles (plástico o metal, por ejemplo). La alcancía
común y más popular no se vidriaba.1
Tanto los diccionarios generales como los manuales especializados completan este
significado con otros dos estrechamente ligados a la morfología de la pieza y a la violencia de
su final: la alcancía como "bola hueca de barro seco" (al sol), del tamaño de una naranja, que
contiene flores o cenizas y se usaba como arma arrojadiza en los juegos de
alcancías (llamados también correr alcancías). El otro significado, más declaradamente bélico,
se le daba a las ollas que, cargadas de alquitrán u otro tipo de material inflamable, se
utilizaban como arma de guerra
2. Análisis desde Programación Orientada Objetos
2.2 Identificar los aspectos que forman parte de un problema.
Cliente Profesor
Usuario basico
1. Agregar moneda de una denominación dada a la alcancía en
Requerimiento forma aleatoria
funcional 2. Mostrar la cantidad de monedas que hay de cada denominación.
3. Mostrar el total de dinero que hay en la alcancía.
4. Romper la alcancía vaciando su contenido.
5. Crear una nueva alcancía.
Mundo del El ahorro es la acción de separar una parte de
problema los ingresos que obtiene una persona o empresa con el fin de
guardarlo para su uso en el futuro, ya sea para algún gasto
previsto o imprevisto, emergencia económica o una posible
inversión
Ejemplo Programación Orientado a Objetos por JCT
Requerimiento No hay
no funcional
2.3 Requerimientos Funcionales
Requerimientos Funcionales
Nombre:
Resumen: 2. Agregar moneda de una denominación dada a la alcancía en forma
aleatoria
2. Mostrar la cantidad de monedas que hay de cada denominación.
3. Mostrar el total de dinero que hay en la alcancía.
4. Romper la alcancía vaciando su contenido.
5. Crear una nueva alcancía.
Entradas:
Y
Resultado
Ejemplo Programación Orientado a Objetos por JCT
2.4. El Modelo del Mundo del Problema
Entidad Descripción
El ahorro es la acción de separar una parte de los ingresos que obtiene
una persona o empresa con el fin de guardarlo para su uso en el futuro,
Economí ya sea para algún gasto previsto o imprevisto, emergencia económica o
una posible inversión. En términos de teoría económica el ahorro se
ay refiere a la parte de la renta o ingreso no dedicada a consumo, sino a
ahorro otros fines y es un concepto económico importante. Existen diversas
modalidades de ahorro así como diversos
instrumentos financieros destinados para incrementar el ahorro que se
pretende realizar.
2.4 Los Requerimientos no Funcionales
ninguno
2.5. Identificar las clases .
Se desea construir una aplicación para manejar una alcancía. La alcancía debe permitir guardar monedas
de las siguientes denominaciones: $50, $100, $200, $500 y $1000. No se guardan ni billetes ni monedas
de otras denominaciones.
La alcancía debe mostrar cuántas monedas tiene de cada denominación en todo momento.
Adicionalmente, permite romper la alcancía, mostrando el valor total que había en ella y vaciando su
contenido.
Sustantivos y frases nominales en el documento de requerimientos del
Programa
Una aplicacion alcancia
denominaciones
Fig. 1.5 Diagrama Sustantivos y frases nominales
Se crean clases sólo para los sustantivos y frases nominales que tengan
importancia en el sistema.
programa por Cifrado Representa el modelo o mundo
consola
Aplicación programa
Alcancía main
denominacion variables
Ejemplo Programación Orientado a Objetos por JCT
La clase Main la clase principal y en este caso la controladora. Los demás
sustantivos o frases nominales no son relevantes.
a) Definir campos de entradas
Atributo Tipo de Atributo Posibles valores
X Int, double Numeros reales
Uno int, double Numeros reales
dos int Numeros reales
Tres int, Numeros reales
cuatro int Numeros reales
Fig. 1.8 Diagrama campos de entrada
b) Definir variables de salidas
Atributo Tipo de Posibles valores
Atributo
x int Numeros reales
Fig. 1.9 Diagrama campos de salida
2.7 Identificación de las operaciones o comportamientos de las clases
Se desea construir una aplicación para manejar una alcancía. La alcancía debe permitir guardar monedas
de las siguientes denominaciones: $50, $100, $200, $500 y $1000. No se guardan ni billetes ni monedas
de otras denominaciones.
La alcancía debe mostrar cuántas monedas tiene de cada denominación en todo momento.
Adicionalmente, permite romper la alcancía, mostrando el valor total que había en ella y vaciando su
contenido.
Verbos y frases verbales en el documento de requerimientos del FISICA
Enviar Transmitir
escribir Leer un numero entero
cifrar Introducido por usuario
reemplazar Sumar
Obtener residuo Intercambiar
Ejemplo Programación Orientado a Objetos por JCT
Figura 1.16 modelado de posibles métodos
3.6 métodos de las clases
Enviar No tiene sentido
reemplazar No tiene sentido
Obtener total Main()
Leer un numero entero Main()
Introducido por usuario Main()
Sumar Main()
Intercambiar Main()
Interfaz Vista()
2.8 Definir signatura de los métodos
Nombre: Alcancia()
Descripción: No retorna nada, es el main.
Parámetros: X, uno, dos, tres, cuatro
Retorno: ninguno
Cuerpo del /*
método
* To change this license header, choose License Headers in
Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package monedaaa;
import [Link];
/**
Ejemplo Programación Orientado a Objetos por JCT
*
* @author Julian
*/
public class Alcancia {
public static void main(String[] args) {
int opcion=1, cont=0;
int moneda=0, valor=0, valort=0,
moneda50=0,moneda100=0,moneda200=0,moneda500=0,moned
a1000=0, totalm=0, totald=0;
Scanner input = new Scanner([Link]);
Vista b= new Vista();
Monedas x = new Monedas();
[Link]();
while(opcion==1){
cont++;
[Link](moneda50, moneda100, moneda200, moneda1000,
moneda500, totald, totalm);
[Link]("Ingrese un numero del menu de alcancia");
int y = [Link]();
if (cont==1 && (y==0 || y==6)){
[Link]("la alcacia esta vacia, no es necesario crear
otra");
opcion=1;
}else{
switch(y){
case 1:
{
moneda50=+[Link](moneda50);
valor=50;
valort=[Link](moneda, valor);
Ejemplo Programación Orientado a Objetos por JCT
break;
}
case 2:
{
moneda100=+[Link](moneda100);
valor=100;
valort= [Link](moneda, valor);
break;
}
case 3:
{
moneda200=+[Link](moneda200);
valor=200;
valort= [Link](moneda, valor);
break;
}
case 4:
{
moneda500=+[Link](moneda500);
valor=500;
valort= [Link](moneda, valor);
break;
}
case 5:
moneda1000=+[Link](moneda1000);
valor=1000;
valort=[Link](moneda, valor);
{
break;
Ejemplo Programación Orientado a Objetos por JCT
case 0:
{
moneda50=0;
moneda100=0;
moneda200=0;
moneda500=0;
moneda1000=0;
break;
}
default: [Link]("Opcion errada");
}
totalm=[Link](moneda50, moneda100,
moneda200, moneda500, moneda1000);
totald=[Link](moneda50, moneda100,
moneda200, moneda500, moneda1000);
}
[Link]("si desea ingresar de nuevo al menu digite 1,
si desea romper la alcancia digite otra tecla");
opcion=[Link]();
}
if(opcion!=1)
{
[Link]("Total de monedas en la alcancia [%d]\n",
totalm);
[Link]("Total de dinero de la alcancia [$%d]\n",
totald);
}
Ejemplo Programación Orientado a Objetos por JCT
}
}
Figura 1.17 Signatura calcularAltura ()
Nombre: Moneda()
Descripció Hace las operaciones de las monedas
n:
Parámetro Int moneda=0, valor=0, valort=0,
s: moneda50=0,moneda100=0,moneda200=0,moneda500=0,moned
a1000=0, totalm=0, totald=0;
Retorno: Calculo, monedas
Cuerpo del public class Monedas {
método
public int recibirMoneda(int Monedas )
{
Monedas++;
return Monedas;
public int calcularMoneda(int Monedas, int Valor )
{
int calculo;
calculo = Monedas * Valor;
return calculo;
}
public int calcularTotalDinero(int Monedas50, int Monedas100,
int Monedas200, int Monedas500, int Monedas1000)
Ejemplo Programación Orientado a Objetos por JCT
{
return ((Monedas50 * 50) + (Monedas100 * 100) +
(Monedas200 * 200) + (Monedas500 * 500) + (Monedas1000 *
1000));
}
public int calcularTotalMonedas(int Monedas50, int
Monedas100, int Monedas200, int Monedas500, int
Monedas1000)
{
return Monedas50 + Monedas100 + Monedas200 +
Monedas500 + Monedas1000;
}
}
Figura 1.18 Signatura calcularAltura ()
Nombre: Vista()
Descripci Muestra la institución, programa y nombre del programa
ón:
Parámetr ninguno
os:
Retorno: void
Ejemplo Programación Orientado a Objetos por JCT
Cuerpo
del
método
3. Diseño del programa UML
3.1 Diagramas de caso-uso Ahora se presenta el primero de varios
diagramas de UML en el caso de estudio. Se crea un diagrama de caso-uso
para modelar las interacciones entre los clientes de un sistema
Fig. 1.4 Diagrama de caso-uso para el sistema Física, desde la perspectiva del
usuario
Ejemplo Programación Orientado a Objetos por JCT
La figura 1.4 muestra el diagrama de caso-uso para nuestro sistema Física La
figura humana representa a un actor, el cual define los roles que desempeña una
entidad externa (como una persona u otro sistema) cuando interactúa con el
sistema. Para nuestro sistema Física, el actor es un Usuario que puede ver la
altura, y la velocidad del Programa de Fisica.
3.2 Diagramas de clases
Fig. 1.6 Representación de una clase Main o alcancia en UML mediante un
diagrama de clases.
Fig. 1.7 Representación de una clase Vista en UML mediante un diagrama
de clases.
Fig. 1.7 Representación de una clase Descifrado en UML mediante un
diagrama de clases.
3.3 Diagrama de Relaciones entre clases.
Ejemplo Programación Orientado a Objetos por JCT
Fig. 1.9 Representación la relación entre las clases Menu, Vista y Calculo
UML mediante un diagrama de clases.
4. Implementación
6.1Implementación en lenguaje Java
Implementación
//Clase monedas
public class Monedas {
public int recibirMoneda(int Monedas )
{
Monedas++;
return Monedas;
}
Ejemplo Programación Orientado a Objetos por JCT
public int calcularMoneda(int Monedas, int Valor )
{
int calculo;
calculo = Monedas * Valor;
return calculo;
}
public int calcularTotalDinero(int Monedas50, int Monedas100, int Monedas200, int
Monedas500, int Monedas1000)
{
return ((Monedas50 * 50) + (Monedas100 * 100) + (Monedas200 * 200) + (Monedas500 *
500) + (Monedas1000 * 1000));
}
public int calcularTotalMonedas(int Monedas50, int Monedas100, int Monedas200, int
Monedas500, int Monedas1000)
{
return Monedas50 + Monedas100 + Monedas200 + Monedas500 + Monedas1000;
}
}
}//fin de la clase Monedas
public class Vista {
public class Vista {
public void Vista(){
[Link]("*************************************************************************");
[Link]("* *");
[Link]("* UNIVERSIDAD FRANCISCO JOSE DE CALDAS
*");
[Link]("* PROGRAMA CURRICULAR: INGENIERIA ELECTRONICA
*");
[Link]("* ALCANCIA *");
[Link]("* *");
[Link]("*************************************************************************");
}
public void Menu(int c50, int c100,int c200, int c1000,int c500,int totald, int totalm ){
[Link]("Menu de alcancia \n");
[Link]("[Link] moneda de $50 [%d]\n",c50);
[Link]("[Link] moneda de $100 [%d]\n",c100);
[Link]("[Link] moneda de $200 [%d]\n",c200);
[Link]("[Link] moneda de $500 [%d]\n",c500);
[Link]("[Link] monedade $1000 [%d]\n",c1000);
[Link]("[Link] nueva alcancia \n\n");
[Link]("*************************************************************************");
[Link]("Total de monedas en la alcancia [%d]\n", totalm);
[Link]("Total actual de la alcancia [$%d]\n", totald);
[Link]("*************************************************************************");
}
}
Ejemplo Programación Orientado a Objetos por JCT
//Clase Alcancia
package monedaaa;
import [Link];
/**
*
* @author Julian
*/
public class Alcancia {
public static void main(String[] args) {
int opcion=1, cont=0;
int moneda=0, valor=0, valort=0,
moneda50=0,moneda100=0,moneda200=0,moneda500=0,moneda1000=0, totalm=0, totald=0;
Scanner input = new Scanner([Link]);
Vista b= new Vista();
Monedas x = new Monedas();
[Link]();
while(opcion==1){
cont++;
[Link](moneda50, moneda100, moneda200, moneda1000, moneda500, totald, totalm);
[Link]("Ingrese un numero del menu de alcancia");
int y = [Link]();
if (cont==1 && (y==0 || y==6)){
[Link]("la alcacia esta vacia, no es necesario crear otra");
opcion=1;
}else{
switch(y){
case 1:
{
moneda50=+[Link](moneda50);
valor=50;
valort=[Link](moneda, valor);
break;
}
case 2:
{
moneda100=+[Link](moneda100);
valor=100;
valort= [Link](moneda, valor);
break;
}
case 3:
{
moneda200=+[Link](moneda200);
valor=200;
valort= [Link](moneda, valor);
Ejemplo Programación Orientado a Objetos por JCT
break;
}
case 4:
{
moneda500=+[Link](moneda500);
valor=500;
valort= [Link](moneda, valor);
break;
}
case 5:
moneda1000=+[Link](moneda1000);
valor=1000;
valort=[Link](moneda, valor);
{
break;
}
case 0:
{
moneda50=0;
moneda100=0;
moneda200=0;
moneda500=0;
moneda1000=0;
break;
}
default: [Link]("Opcion errada");
}
totalm=[Link](moneda50, moneda100, moneda200, moneda500,
moneda1000);
totald=[Link](moneda50, moneda100, moneda200, moneda500, moneda1000);
}
[Link]("si desea ingresar de nuevo al menu digite 1, si desea romper la alcancia
digite otra tecla");
opcion=[Link]();
}
if(opcion!=1)
{
[Link]("Total de monedas en la alcancia [%d]\n", totalm);
[Link]("Total de dinero de la alcancia [$%d]\n", totald);
}
}
}
}//fin de la clase
4. Testeo
Ejemplo Programación Orientado a Objetos por JCT