Proyecto 3

  • November 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Proyecto 3 as PDF for free.

More details

  • Words: 5,001
  • Pages: 45
UNIVERSIDAD DE PANAMÁ CENTRO REGIONAL UNIVERSITARIO DE VERAGUAS FACULTAD DE INFORMÁTICA ELECTRÓNICA Y COMUNICACIÓN LICENCIATURA EN INFORMÁTICA PARA LA GESTIÓN EDUCATIVA Y EMPRESARIAL

PROGRAMACIÓN IV TEMA JERARQUÍA Y HERENCIA

FACILITADOR DIEGO SANTIMATEO

ELABORADO POR CALLES YORISBETH

9-720 -2373

Tema: Jerarquía y Herencia GONZÁLEZ ROMAN

9- 705-1420

II AÑO

II SEMESTRE

FECHA DE ENTREGA 12 DE NOVIEMBRE DE 2007

2

Tema: Jerarquía y Herencia ÍNDICE

Introducción......................................................................................................................................i 1. FUENTES DE INFORMACIÓN REFERENTES AL LENGUAJE JAVA.................................1 2. GLOSARIO DE TÉRMINOS .....................................................................................................6 3. EJEMPLIFICACIÓN DE CONCEPTOS..................................................................................10 3.1 Clase abstracta.....................................................................................................................10 3.2 Interfaz ................................................................................................................................11 3.3 Sobrecarga............................................................................................................................12 3.4 Herencia y Superclase..........................................................................................................14 3.5 Polimorfismo.......................................................................................................................15 4. PRESENTACIÓN DE UNA APLICACIÓN EJECUTABLE...................................................17 4.1 Descripción del Dominio:...................................................................................................17 4.2 Descripción de las clases....................................................................................................18 4.3 Clases involucradas en el programa....................................................................................21 4.4 Código fuente:.....................................................................................................................22 4.5 Ejecución del Programa .....................................................................................................32 5. Diagrama UML.........................................................................................................................35 6. Reflexión sobre el trabajo en equipo.........................................................................................30 6.1. Cómo fue la labor de los integrantes..................................................................................30 6.2. Metodología propuesta para el desarrollo de este proyecto...............................................30 7. Evaluación individual de la experiencia...................................................................................32

1

INTRODUCCIÓN

En este proyecto que presentaremos a continuación trata de la Herencia y la Jerarquía, en los cuales utilizamos fuentes de información relacionados con los tema, para ello ejemplificamos por medio de programas los conceptos de herencia, jerarquía, polimorfismo, clase abstracta, sobre carga, etc. Adicional presentamos un glosario de términos referentes a los temas tratados en el proyecto, y finalizamos el proyecto con un programa ejecutable en java donde implementamos los temas utilizados en el proyecto.

i

1. FUENTES DE INFORMACIÓN REFERENTES AL LENGUAJE JAVA 1.Autor desconocido, “Interfaces” [en línea], [act. Enero de 2000], Disponible en Internet http://www.sc.ehu.es/sbweb/fisica/cursoJava/fundamentos/herencia/interfa ces.htm

En esta página encontramos el concepto y ejemplos de interfaz donde podemos decir que

Un interface es una colección de declaraciones de

métodos (sin definirlos) y también puede incluir constantes. También podemos encontrar: •La

diferencia entre interface y una clase abstracta donde se dice que un

interface es simplemente una lista de métodos no implementados, además puede incluir la declaración de constantes. Una clase abstracta puede incluir métodos implementados y no implementados o abstractos, miembros dato constantes y otros no constantes. •Los

interfaces y el polimorfismo

2.Autor desconocido, Tutorial de JAVA, “Interfaces” [en línea], {Act. lunes, 17 de Mayo de 1999], Disponible en Internet [Consulta: 6 de noviembre de 2007] En este tutorial podemos encontrar el concepto de Interfaz, como: La definición de un interfaz es semejante a la de una clase. La definición de

Elaborado por: Calles Yorisbeth y González Roman

1

interfaz tiene dos componentes, declaración y cuerpo. La declaración de interfaz puede tener dos componentes adicionales, el especificador de acceso public y la lista de superinterfaces. Una clase puede implementar más de un interfaz, incluyendo varios nombres de interfaces separados por comas. Además en esta web podemos encontrar la Herencia múltiple. 3.Autor desconocido, Interfaz, arreglo y polimorfismo [en línea], [Act. ] Disponible en Internet http://javabasico.osmosislatina.com/curso/polimorfismo.htm#int [Consulta: 6 de noviembre de 2007] En esta web podemos encontrar temas de mucha utilidad en este proyecto, donde además encontramos ejemplos de mucha utilidad los cuales nos sirvieron para tomarlo como ejemplos para poder resolver dudas.

4.Autor desconocido,”Métodos y clases abstractas” [en línea ] [Act] Disponible en Internet http://pjsml.50megs.com/java/herencia4.html [Consulta: 6 de noviembres de 2007] Un método abstracto es un método que declara una funcionalidad que debe ser implementada en todas las clases derivadas, en que se vaya a utilizar. En esta página además de su definición podemos encontrar ejemplos de cómo utilizar la clase abstracta. Elaborado por: Calles Yorisbeth y González Roman

2

5.Autor desconocido, “Herencia Programación Orientada a Objeto” [en línea], disponible en Internet, [Act. 02:05, 6 nov 2007] http://es.wikipedia.org/wiki/Herencia_(programaci%C3%B3n_orientada_a_ objetos)#Ejemplo_de_herencia [Consulta: 6/11/2007]

En esta página podemos encontrar información sobre la Herencia donde podemos decir que

la Herencia es uno de los mecanismos de la

programación orientada a objetos, por medio del cual una clase se deriva de otra, llamada entonces superclase, de manera que extiende su funcionalidad. También podemos encontrar ejemplos de herencia, podemos decir que hay dos tipos de herencia que es la herencia simple y la herencia múltiple. 6.Autor desconocido,” Subclases y Herencia” [en línea], [Act.] Disponible en Internet http://www.dcc.uchile.cl/~lmateu/Java/Apuntes/subclase.htm [Consulta: 6/11/2007]

En esta página podemos encontrar temas relacionados con subclases, jerarquías, clases abstractas. Los cuales se nos explica la relación que puede existir entre ellos, y aclarar lo que se puedes y no se debe hacer.

Elaborado por: Calles Yorisbeth y González Roman

3

7.Autor Daniel Rodríguez Herrera, “Tutorial Introducción a Java”,”Herencia” [en

línea],

[Act],

Disponible

en

Internet

http://www.programacion.com/java/tutorial/intjava/8/ [Consulta:6/11/2007]

En esta página podemos encontrar tema relacionado con la Herencia la cual tiene ejemplos relacionados con la herencia.

8.Autor

Daniel

Rodríguez

Java”,”Polimorfismo”

[en

Herrera,

línea],

[Act.],

“Tutorial

Introducción

Disponible

en

a

Internet

http://www.programacion.com/java/tutorial/intjava/9/ [Consulta:7/11/2007]

En esta página podemos encontrar una definición de

concepto de

polimorfismo, en cuanto a cambio de forma, se puede extender a los métodos. Java permite que varios métodos dentro de una clase se llamen igual, siempre y cuando su lista de parámetros sea distinta. Además podemos encontrar ejemplos de polimorfismo.

9.Autor desconocido, “mozilla developer center beta1” ,”Guia JavaScript 1.5:El ejemplo Employee: Creando la Jerarquía” [en línea] [Act. 12:26, 28 may

2007]

Disponible

en

Elaborado por: Calles Yorisbeth y González Roman

Internet

4

http://developer.mozilla.org/es/docs/Gu%C3%ADa_JavaScript_1.5:El_ejemp lo_Employee:Creando_la_jerarqu%C3%ADa [Consulta:7/11/2007] En esta página podemos encontrar ejemplos de Jerarquía. Y se nos explica como podemos implementar la jerarquía.

Además muestra como utilizar

definiciones muy simples (y comparativamente inflexibles) para demostrar como obtener la herencia para trabajar.

10.Autor Antonio Bel Puchol , “Apuntes Lenguaje Java” [en línea] ,[Act, 17, junio, 2001], disponible en Internet, http://www.arrakis.es/~abelp/ApuntesJava/indice.htm [consulta 2/11/2007] Esta pagina es de gran utilidad ya que en ella podemos encontrar apuntes del lenguaje Java son el guión estructurado de un curso de Introducción al Lenguaje Java, pretenden proporcionar una aproximación progresiva, partiendo de lo más elemental e introduciendo los conceptos ordenadamente. En esta web podemos encontrar términos como los son: clases, Interfaces, herencia, control de flujo, tipos de datos, etc.

Elaborado por: Calles Yorisbeth y González Roman

5

2. GLOSARIO DE TÉ RMINOS

Jerarquía: Es el orden de los elementos de una serie según su valor. Es la disposición de personas, animales o cosas, en orden ascendente o descendente, según criterios de clase, poder, oficio, categoría, autoridad o cualquier otro asunto que conduzca a un sistema de clasificación. En el mundo de los animales es la estructura social más frecuente, ya que establece un orden de dominación: la superioridad de un animal sobre los demás suele ser resultado de relaciones agresivas.

Interfaz: Es una lista de acciones que puede llevar a cabo un determinado objeto. Se declaran en una clase abstracta los métodos que se van a utilizar, pero sin su implementación o código.

Herencia: Se entiende por herencia cuando una clase hereda arribitos y métodos de otra clase llamada superclase. Es decir que además de poder utilizar sus propios métodos y atributos, ella puede utilizar los de la clase padre.

Elaborado por: Calles Yorisbeth y González Roman

6

La herencia permite que se puedan definir nuevas clases basadas en clases existentes, lo cual facilita re-utilizar código previamente desarrollado. Se puede construir una clase a partir de otra mediante el mecanismo de la herencia.

Clase Abstracta: Una clase abstracta es una clase que tiene al menos un método abstracto. Los métodos y clases abstractas no proporcionan implementación (código).

Super Clase: La superclase es aquella clase llamada padre, de la cual otras clases o subclases heredan o pueden usar sus atributos y métodos.

Polimorfismo: Varios métodos pero de diferentes clases, tienen el mismo nombre, pero realizan una tarea diferente.

Sobrecarga: Consiste en que varios métodos dentro de una clase se llamen igual, siempre y cuando su lista de parámetros sea distinta.

Elaborado por: Calles Yorisbeth y González Roman

7

Encapsulamiento: La base para el encapsulado de Java es el concepto de clase. Una clase representa una abstracción de un conjunto de objetos que tienen el mismo comportamiento y la misma estructura. Un objeto es entonces una instancia de una clase dada. Las estructuras de datos de una clase se definen en base a un conjunto de variables las cuales se denominan "variables de la instancia". Finalmente, un método es la representación de las acciones del objeto.

Así pues, las

estructuras y los métodos de una clase pueden ser privados o públicos. De esta manera los métodos de otros objetos no pueden cambiar las variables de objetos cuyas estructuras son privadas.

Subclase Clase que hereda atributos y métodos de otra clase, llamada superclase, además de heredar métodos, ella posee sus propios métodos y atributos.

Clase Clase es una agrupación de datos (variables o campos) y de funciones (métodos) que operan sobre esos datos.

Elaborado por: Calles Yorisbeth y González Roman

8

Elaborado por: Calles Yorisbeth y González Roman

9

3. EJEMPLIFICACIÓN DE CONCEPTOS 3.1 Clase abstracta abstract class ArchivosDirectorios { //Métodos abstractos abstract String crear(String no); abstract String verifica(String no); abstract String lista(String no); abstract void Leearchivo(String no); }//fin de la clase abstracta

Dominio: operaciones archivos y directorios. El ejemplo muestra una clase abstracta, que a diferencia de las clases que estamos

acostumbrados

a

declarar,

la

clase

abstracta

se

declara

simplemente con el modificador abstract. Los métodos abstractos se declaran también con el mismo modificador, declarando el método pero sin implementarlo (sin código). Luego para que una clase pueda

implementar los métodos de la clase

abstracta se le debe colocar el modificador extends, y a los métodos de esta clase se le debe implementar el código. Ejemplo: import import import import class

javax.swing.*; java.text.*; java.lang.String.*; java.io.*; OperacionesArchivos extends ArchivosDirectorios {

Elaborado por: Calles Yorisbeth y González Roman

10

public String crear(String nombre) { } public String verifica(String nombre){ } public String lista(String nombre) { } public void Leearchivo(String nombre){ } Para poder crear un objeto de una clase abstracta se debe hacer lo siguiente: ArchivosDirectorios archivos = new OperacionesArchivos(); ya que una clase abstracta no puede ser instancia da porque no tiene implementados sus métodos.

3.2 Interfaz import java.util.*; interface ArchivosDirectorios { String crear(String no); String verifica(String no); String lista(String no); void Leearchivo(String no); } Dominio: operaciones archivos y directorios. En este ejemplo se muestra una clase con sus respectivos métodos, pero sin la implementación de su código. Las clases que quieran utilizar el interfaz ArchivosDirectorios utilizarán la palabra implements y proporcionarán el

Elaborado por: Calles Yorisbeth y González Roman

11

código necesario para implementar los métodos que se han definido para el interfaz. Ejemplo: import javax.swing.*; import java.text.*; import java.lang.String.*; import java.io.*; class OperacionesArchivos implements ArchivosDirectorios { public String crear(String nombre) { } public String verifica(String nombre){ } public String lista(String nombre) { } public void Leearchivo(String nombre){ } } 3.3 Sobrecarga /*varias formas de multiplicar*/ public class OperacionesMatematicas { public String operaciones (float a, float b) { String resultado=” ”; float mult=a*b; flota div=a/b; float sum=a+b; float rest=a-b; resultado=+ “Suma de dos reales: “ + sum + “resta de dos reales: “ + rest + “Multiplicación de reales: “ + mult + “División de reales: “ + div; return (resultado); } public String operaciones ( int a, int b) { String resultado=” ”; int mult=a*b; int div=a/b; int sum=a+b; int rest=a-b;

Elaborado por: Calles Yorisbeth y González Roman

12

resultado=+ “Suma de dos enteros: “ + sum + “resta de dos enteros: “ + rest + “Multiplicación de enteros: “+ mult + “División de enteros: “ + div; return (resultado} } public class Principal{ public static void main(String[] args) { float x = 1; float y = 2; int v = 3; int w = 5; OperacionesMatematicas om=new OperacionesMatematicas(); System.out.println (om.multiplicacion(x,y)); System.out.println (om.multiplicacion(v,w)); } } Dominio: Operaciones matemáticas. En este ejemplo explicamos la sobrecarga, que consiste en: que varios métodos dentro de una clase se llamen igual, siempre y cuando su lista de parámetros sea distinta. La clase OperacionesMatematicas contiene dos métodos con el mismo nombre (multiplicación), pero un método con parámetros reales y el otro método con parámetros enteros. En el momento que se llama a uno de estos metidos desde la clase principal, dependerá de que tipo de parámetros estemos pasando, si detecta que los parámetros son reales, se ubica en el método de la clase

OperacionesMatematicas que contenga este tipo de

parámetros.

Elaborado por: Calles Yorisbeth y González Roman

13

3.4 Herencia y Superclase public class Padre { public void metodo1(double a, double b) { System.out.println("Clase padre, Operaciones con números reales" + " " + "Suma: " + a+b + " " + "Resta: " + a-b + “ ” + "Multiplicación: " + a*b + " " + "División: " + a/b); } } public class Hijo extends Padre { public void metodo2 (int a, int b) { System.out.println("Clase hijo, Operaciones con números enteros " + " " + "Suma: " + a+b + " " + "Resta: " + a-b + “ ” + "Multiplicación: " + a*b + " " + "División: " + a/b); } } public class Principal{ public static void main(String[] args) { Hijo h = new Hijo(); h.metodo2(10,5); h.metodo1(10.5,5.5); } } Dominio: Operaciones matemáticas. En este ejemplo se observa que la clase hijo contiene el modificador extends de padre, esto quiere decir que la clase hijo a heredado el método de la clase padre, es decir, la clase padre tiene un método que es metodo1, la clase hijo tiene además del método metodo2 que es de ella, al método metodo1 , que es el que heredo de la clase padre.

Elaborado por: Calles Yorisbeth y González Roman

14

Al crear el objeto en la clase principal, observamos que se puede acceder al método de la clase Hijo, y al método heredado de la clase padre, utilizando el mismo objeto. Al igual que la herencia, en este pequeño ejemplo, también se implementa Superclase: Cuando una clase hereda atributos y métodos de otra clase, a esta se le llama subclase, en cambio a la clase de la cual se ha heredado se le llama superclase. La subclase, que en este caso es class Hijo, además de haber heredado el método de la clase padre class Padre, también tiene su propio método.

3.5 Polimorfismo public class Perro { public void descripcion (String { System.out.println(animal + mamifero, 4 patas, domestico"); } } public class Buitre { public void descripcion (String { System.out.println(animal + ave, tiene plumas, no domestico, carroñero"); } }

animal) "

" + "caracteristicas:

animal) "

" + "caracteristicas:

public class Piton { public void descripcion (String animal) Elaborado por: Calles Yorisbeth y González Roman

15

{ System.out.println(animal + " " + "caracteristicas: reptil,depredador, no domestico"); } } public class Tiburon { public void descripcion (String animal) { System.out.println(animal + " " + "caracteristicas: Anfibio, depredador, no domestico"); } } public class Principal{ public static void main(String[] args) { Perro p=new Perro(); p.descripcion("perro"); Buitre b=new Buitre(); b.descripcion("buitre"); Tiburon t=new Tiburon(); t.descripcion("tiburon"); Piton pt=new Piton(); pt.descripcion("piton"); } } Dominio: Animales. El concepto de polimorfismo se refiere a tener varias clases, las cuales tienen métodos con el mismo nombre pero cada método tiene un proceso diferente. En este caso se tienen 4 clases las cuales contienen un método y cada método tiene el mismo nombre pero diferentes procesos, el cual devuelve las características de algunos animales, pero mediante la creación de un objeto

para

cada

clase,

se

pueden

acceder

a

sus

métodos,

independientemente que tengan el mismo nombre.

Elaborado por: Calles Yorisbeth y González Roman

16

4. PRESENTACIÓN DE UNA APLICACIÓN EJECUTABLE

4.1

Descripción del Dominio:

Nuestro dominio se trata de un almacén en el cual se tiene n cantidad de empleado los cuales tenemos almacenados en un archivo con sus respectivos nombre, código y salarios, cuando el empleado atiende a un cliente, el empleado obtiene una comisión dependiendo de la cantidad que compre el cliente, dicha comisión se le incrementa en el salario.

Elaborado por: Calles Yorisbeth y González Roman

17

4.2 Descripción de las clases CLASES

ATRIBUTOS

Principal

COMPORTAMIENTO El método de esta clase es el Main en el cual se llama a las otras clases dependiendo su orden jerárquico.

class Capturaimp

* String msnj:

Los métodos de esta clase serian los

Captura los datos

siguientes:

introducido por el

* String datos( String me)

usuario.

Datos que se piden • El código del de empleado. • El precio del producto a comprar. * void imprimir( String mensj) Despliega por pantalla y consola los datos solicitados. Dichos datos son pasados como parámetros mediante la clase principal. En esta encontramos las interfaz de

abstract class

los métodos abstractos aplicados a

Proyect

las solución del problema *abstract String cliente( double compra); * abstract String vendedor( double venta, String cod);

* abstract String vendedor();

class Almacen

Esta conformada por tres método: se

extends Proyect

calcula el descuento, se calcula la

En este clase se

comisión, se despliega la lista de los

Elaborado por: Calles Yorisbeth y González Roman

1

realiza una sobrecarga de métodos ya que se utilizan dos métodos con el mismo nombre pero funciones diferentes

empleados:

* String cliente( double compra) Este método tiene como principal función calcular el descuento que se le realiza al cliente dependiendo del monto que ha comprado, en total se realizan tres descuentos. * String

vendedor( double

venta, String cod)

En este método se le calcula la comisión del empleado, dependiendo de la compra realizada por el usuario. Dicha comisión se le aumenta al salario.

* String vendedor() Este método se utiliza para listar a todos los empleados que se encuentran en el archivo (pero sin la comisión).

CLASES

ATRIBUTOS

COMPORTAMIENTO

class Compra

Esta clase esta conformada por un

extends Almacen

método.

* public double comprar() Este

método tiene

como función

principal calcular la suma de todos los

artículos

Elaborado por: Calles Yorisbeth y González Roman

comprados

por

el

1

cliente. Este método tienes un objeto de la clase

Capturaimp

método

datos

para

que llama al introducir

el

precio del articulo, además se nos presenta una escogemos

si

opción en la cual deseamos

seguir

procesando datos. Para calcularle su valor. class Gerente

* public String vendedor()

extends Almacen

este método se aplica la super clase mediante el super el cual es un objeto que se utiliza para invocar métodos de la clase padre

Elaborado por: Calles Yorisbeth y González Roman

2

4.3 Clases involucradas en el programa

Clase Principal

abstract class

Clase

class Almacen extends

class Compra extends

class Gerente extends

Elaborado por: Calles Yorisbeth y González Roman

2

4.4 Código fuente:

/* Clase principal: encargada de realizar el llamado a otras clases, dependiendo del orden jerárquico */ import javax.swing.*; import java.text.*; import java.lang.String.*; class Principal{ public static void main(String[] args) { Capturaimp cpt2=new Capturaimp(); String m="Introduzca el codigo del vendedor: "; String cod=cpt2.datos(m); Compra cpr=new Compra(); double c=cpr.comprar();

/* Con el objeto cpr, que es de la clase compra, se puede acceder a los métodos de la clase almacén, esto se puede hacer porque la clase Compra es hija de la clase almacén*/ String mens1=cpr.cliente(c); String aument=cpr.vendedor(c,cod); String mens2="La comisión del empleado en esta venta fue de:"+" " + cpt2.imprimir(mens1); cpt2.imprimir(mens2);

aument;

Gerente grt=new Gerente(); String gernt="Estos son los datos de los empleados: " + "\n"; String mens3=gernt + grt.vendedor(); cpt2.imprimir(mens3);

Elaborado por: Calles Yorisbeth y González Roman

2

} }

Elaborado por: Calles Yorisbeth y González Roman

2

// Clase Capturaimp /* Esta clase permite la captura y la salida de datos devuelve a la clase principal la información ingresada y recibe resultados para imprimirlos */ import javax.swing.*; import java.text.*; import java.lang.String.*; class Capturaimp { private String msnj; public }

Capturaimp(){

public String datos(String me){ msnj= JOptionPane.showInputDialog(null,me ); return(msnj); } public void imprimir(String mensj)//Método para imprimir { JOptionPane.showMessageDialog(null,mensj); System.out.println(mensj); } }

///Clase abstract class Proyect { //Métodos abstractos abstract String cliente(double compra); abstract String vendedor(double venta,String cod); abstract String vendedor(); } Elaborado por: Calles Yorisbeth y González Roman

2

/*Clase almacén: clase padre, que se extiende de la clase abstracta. Esta clase se encarga de efectuar un descuento a un cliente, dependiendo de la compra que se halla realizado, también dependiendo de esa compra se le realizara al vendedor un aumento en su sueldo (comisión por venta); además se puede consultar al archivo de los empleados o vendedores el cual muestra: nombre del empleado, el código del empleado, y su salario, pero el salario base (sin el incremento). En esta clase se aplica la sobrecarga, ya que cuenta con dos métodos con el import import import import import import

java.io.*; javax.swing.*; javax.swing.*; java.text.*; java.lang.String.*; java.lang.Double;

/*Método cliente: recibe la suma de la compra efectuada. Se encarga de realizar el descuento al cliente dependiendo del total en compra*/ class Almacen extends Proyect { public String cliente(double compra){ double desc=0; double desc1=0; String resp=""; //condiciones para verificar compra if (compra>=25.00 && compra< 50.00) { desc=compra*.05; desc1=compra-(compra*.05);

Elaborado por: Calles Yorisbeth y González Roman

2

} else { if(compra>=50 && compra < 150) { desc=compra*0.2; desc1=compra-(compra*0.2); } else { if (compra>=150) { desc=compra*0.25; desc1=compra-(compra*.25); } else desc1=0.0; } } resp="La suma total de la compra fue de : " + compra + "\n" + "El descuento fue de: " + desc + "\n" + "El precio a pagar es de : " + desc1; return(resp); }

/*Método vendedor: recibe venta realizada, código del vendedor. Se encarga de brindarle una comisión al vendedor, dependiendo del total de la venta public String vendedor(double venta,String cod){ String archivoName="vendedor.txt"; //nombre del archivo que contiene a los

vendedores double aumento1=0;

Elaborado por: Calles Yorisbeth y González Roman

2

double aumento=0; double sala=0; String result=" "; try { FileReader arch1 = new FileReader(archivoName); BufferedReader in = new BufferedReader(arch1); String s = new String(); boolean op=false; while(((s=in.readLine())!= null) && (op==false)){ String cd=s.substring(17,19); if(cd.startsWith(cod)) // se compara si el código del empleado

existe en el archivo { op=true; String sal=s.substring(20,23); sala=Double.parseDouble(sal); // convertir datos del archivo a

double (salario) //condiciones para verificar comisión if (venta>=25.00 && venta< 50) { aumento1=20; aumento=sala+20; } else { if(venta>=25 && venta< 150) { aumento1=30; Elaborado por: Calles Yorisbeth y González Roman

2

aumento=sala+30; } else { if (venta>=150) { aumento1=50; aumento=sala+50; } else aumento=0; } } } } try { in.close(); } catch ( IOException e ) { result+="El archivo no se pudo cerrar correctamente"; } } catch (Exception e) { result +="El archivo no se pudo cerrar correctamente"; } result= aumento1 + "\n" + "El salario del empleado es: " + sala + "\n" + "El nuevo salario :" + aumento; return(result); Elaborado por: Calles Yorisbeth y González Roman

2

}

/*Método vendedor: encargado de desplegar los datos de los empleados que public String vendedor(){ String archivoName="vendedor.txt"; double aumento=0; String result=" "; try { FileReader arch1 = new FileReader(archivoName); BufferedReader in = new BufferedReader(arch1); String s = new String(); while((s=in.readLine())!= null) result +=s + "\n"; try { in.close(); } catch ( IOException e ) { result+="El archivo no se pudo cerrar correctamente"; } } catch (Exception e) { result +="El archivo no se pudo cerrar correctamente"; } return(result); } }

Elaborado por: Calles Yorisbeth y González Roman

2

/* clase Compra: clase hija de la clase almacén. En clase se encarga de realizar la suma total de una compra efectuada */ import import import import import

java.io.*; javax.swing.*; javax.swing.*; java.text.*; java.lang.String.*;

class Compra extends Almacen{ public Compra(){ }

/*Método comprar: encargado de calcular la compra total que se efectuó */ public double comprar(){ Capturaimp cpt=new Capturaimp(); int op=1; double suma=0; double precio=0; String opc=""; while(op==1) {

//llamar a acapturaimp String preci="Introduzca el precio del articulo: "; String prec=cpt.datos(preci); precio=Double.parseDouble(prec); suma=suma+precio; opc= JOptionPane.showInputDialog(null, "1: si hay otro articulo a comprar,"+ "\n" + "0: si no hay mas ariculos a comprar"); op=Integer.parseInt(opc); } return(suma); } } Elaborado por: Calles Yorisbeth y González Roman

3

/*Clase Gerente: se deriva de la clase padre Almacén. Esta clase se dedica a llamar al método vendedor de Almacén para desplegar los datos del archivo. En esta clase se aplica el se cuenta con un método que tiene el mismo import import import import import import

java.io.*; javax.swing.*; javax.swing.*; java.text.*; java.lang.String.*; java.lang.Double;

class Gerente extends Almacen {

// Método vendedor: mediante este método se llama al método vendedor de la clase padre para desalegrar los datos de los empleados public String vendedor(){ String cnst=super.vendedor(); return (cnst); } }

Elaborado por: Calles Yorisbeth y González Roman

3

4.5 Ejecución del Programa En esta pantalla se nos pide que introduzcamos el número de código del empleado, dicho código los encontramos en un archivo donde

encontramos

los

código

de

los

empleados

con

sus

respectivos salarios.

Después de haber introducido el código de ese empleado a el se le

van

a

calcular

la

comisión

que

ganara

por

cada

o

precios

venta

realizada. Esta

pantalla

es

para

introducir

el

los

de

los

artículos comprados por los clientes

En esta parte se nos presenta la opción de escoger si deseamos seguir procesando más artículos o no. En este caso decidimos procesar otro artículo.

Elaborado por: Calles Yorisbeth y González Roman

3

Volvemos a introducir el valor del artículo.

Se nos

vuelve

a

preguntar

si

deseamos

seguir

procesando

más

articulo en este caso decidimos escoger la opción cero (0), la cual no procesa mas artículos

En esta pantalla se nos presenta la suma de la cantidad de artículos procesados, el descuento que se le hace a la compra, y el monto total a pagar.

Aquí podemos observar que se nos presenta la comisión que gano el empleado por haber atendido a dicho cliente. Además

se

presenta

el

salario

del

empleado,

al

cual

se

le

incrementa la comisión obtenida.

Elaborado por: Calles Yorisbeth y González Roman

3

Bueno en esta parte se lista todos los empleados que tenemos en el archivo cada uno con su salario; “este salario es el original sin el incremento de la comisión”

Elaborado por: Calles Yorisbeth y González Roman

3

5. Diagrama

UML abstract class Proyect

abstract String cliente(double compra); abstract String vendedor(double venta,String cod)

class Almacen extends Proyect

String cliente(double compra) String vendedor(double venta,String cod) String vendedor()

class Compra extends Almacen public double comprar()

class Gerente extends Almacen

public String vendedor() class Capturaimp class Principal main(String[] args)

Elaborado por: Calles Yorisbeth y González Roman

String msnj String datos(String me) void imprimir(String 3 35

6. Reflexión sobre el trabajo en equipo

6.1. Cómo fue la labor de los integrantes Para

la

confección

de

este

proyecto

la

labor

de

cada

integrante

principalmente fue la de realizar la búsqueda en Internet de los temas relacionado con el proyecto, temas de los cuales teníamos que buscar ejemplos y ayudarnos mutuamente ambos para poder identificar los errores y dudas que teníamos y ya identificado los errores procedimos a la confección del problema ejecutable. Como en otros laboratorios y proyectos, siempre hay buena comunicación, se analiza, investiga, se estudia de manera individual, para luego reunirnos, presentar lo que cada uno investigo, salir de dudas entre ambos, reunir información y ayudarnos, en caso de que alguno no haya entendido algo; cada uno presenta sus ideas, la forma de cómo resolver el problema, para luego ponernos de acuerdo y empezar a trabajar.

6.2. Metodología propuesta para el desarrollo de este proyecto •Búsqueda en Internet. •Recolección de lo investigado.

Elaborado por: Calles Yorisbeth y González Roman

3 30

•Preparar cada ejemplificación de los temas. •Elaboración del problema.

Elaborado por: Calles Yorisbeth y González Roman

3 31

7. Evaluación individual de la experiencia Roman González: Conocimientos previos: en cuanto a los conocimientos previos, fue necesario leer sobre los conceptos aplicados en este tema, para analizarlos , entenderlos y luego aplicarlos en este laboratorio.Tambien fueron necesarios aplicar los conocimientos que hemos estado adquiriendo en el desarrollo de este curso. Nuevos conocimientos: Entre los nuevos conocimientos adquiridos, se encuentran conceptos como: herencia, polimorfismo, clase abstracta, etc. al igual que su implementación mediante los ejemplos presentados. También entre estos conocimientos, se encuentra el de cómo puedo hacer uso de los métodos y atributos de una clase utilizándolos en otra clase, todo mediante la herencia y superclase. Dificultades: La dificultad mas grande fue la de implementar en un problema todos los conceptos que se estudiaron. Pienso que estamos acostumbrados es a resolver un problema ya dado, y por eso se nos hizo difícil crear uno e implementar todo lo aprendido. En un principio no sabíamos por donde empezar, a que área se iba a implementar este problema. Luego cuando más o menos teníamos el tema, queríamos que el problema resolviera muchas cosas, y entre mas ideas surgían, salían más clases y mas métodos, complicándonos así un poco, de repente eso nos hizo la tarea un poco difícil, queríamos hacer muchas cosas. Sentíamos que estábamos forzando al problema a implementar los conceptos tratados en este laboratorio. Al final mi compañera y yo resolvimos uno, que de repente se puede ampliar un poco mas, pero decidimos dejarlo fácil, pero tratando de que implemente los conceptos estudiados. A pesar de que fue difícil, la experiencia fue agradable, pienso que de esta forma se aprende; leyendo, analizando, entendiendo, ejemplificando lo aprendido y creando problemas y sus soluciones.

Elaborado por: Calles Yorisbeth y González Roman

3 32

Yorisbeth Calles

Conocimientos previos: Los conocimientos previos que necesite para este laboratorio fueron conceptos y temas que estamos tratando en este curso, conceptos como: clases, métodos, encapsulamiento, entre otros. Al igual que los conceptos que se aplicaron en este laboratorio, ya que se tuvo que investigar y estudiar previo a la realización de este trabajo. Nuevos conocimientos: Entre los nuevos conocimientos que adquirí, están, lo de como hacer referencias a recursos Web; aprendí que para hacer una referencia a un sitio Web, existen varios formatos, que llevan una serie de pasos; Además adquirí conocimientos en temas como la herencia y jerarquía en java, y todo lo relacionado a estos conceptos como superclase, sobrecarga, polimorfismo, etc. Dificultades: La dificultad que tuvimos en este laboratorio fue la de crear un problema, que aplicara todos los conceptos investigados. Encontramos que es difícil crear un problema, y no es tan fácil implementar una herencia, un polimorfismo, una sobrecarga o una superclase en un problema que no lo requiera, no es aplicarlos por aplicar, el problema lo debe requerir y hay que saber cuando utilizar o implementar uno de estos conceptos tratados en este tema.

Elaborado por: Calles Yorisbeth y González Roman

3 33

Related Documents

Proyecto 3
November 2019 12
Proyecto 3
November 2019 13
Proyecto Final 3
May 2020 4
Proyecto 3.docx
June 2020 5
Proyecto#3 Clase Url
December 2019 16
3 Proyecto Do Pokito
November 2019 11