proyecto final programacion

13
UNIVERSIDAD TÉCNICA DE AMBATO Facultad de Ingeniería en Sistemas, Electrónica e Industrial “Proyecto Académico de Fin de Semestre” TÍTULO: CONTROL DE LLAMADAS REALIZADAS EN UNA CENTRALITA CARRERA UNIVERSITARIA: INGENIERÍA INDUSTRIAL EN PROCESOS DE AUTOMATIZACIÓN ÁREA ACADÉMICA: NOMBRE DEL ÁREA ACADÉMICA SEMESTRE Y PARALELO: SEGUNDO INDUSTRIAL “A” ALUMNOS PARTICIPANTES: APELLIDOS Y NOMBRES (ORDEN ALFABÉTICO) APELLIDOS Y NOMBRES (ORDEN ALFABÉTICO)

Upload: 335accion

Post on 31-Dec-2015

189 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Proyecto Final Programacion

UNIVERSIDAD TÉCNICA DE AMBATO

Facultad de Ingeniería en Sistemas, Electrónica e Industrial

“Proyecto Académico de Fin de Semestre”

TÍTULO: CONTROL DE LLAMADAS REALIZADAS EN UNA CENTRALITA

CARRERA UNIVERSITARIA: INGENIERÍA INDUSTRIAL EN PROCESOS DE AUTOMATIZACIÓN

ÁREA ACADÉMICA: NOMBRE DEL ÁREA ACADÉMICA

SEMESTRE Y PARALELO: SEGUNDO INDUSTRIAL “A”

ALUMNOS PARTICIPANTES: APELLIDOS Y NOMBRES (ORDEN ALFABÉTICO)APELLIDOS Y NOMBRES (ORDEN ALFABÉTICO)

MÓDULO Y DOCENTE: PROGRAMACIÓN II ING. SANTIAGO MANZANO

Page 2: Proyecto Final Programacion

1. TÍTULO

Aplicación de control de llamadas realizadas en una centralita

2. OBJETIVO

Realizar una aplicación en java usando polimorfismo, sobre una central telefonica

3. RESUMEN

El proyecto consiste en Desarrollar una aplicación de control de llamadas realizadas en una centralita Telefónica.

En la centralita se van registrando llamadas. Registrar una llamada consiste en contabilizar el número de llamadas realizadas así como el coste total de todas las llamadas realizadas.

La centralita mostrará por pantalla todas las llamadas según las vaya registrando.

Existen dos tipos de llamadas:

a) Las llamadas locales que cuestan 15 céntimos el segundo. b) Y las llamadas provinciales que dependiendo de la franja horaria en la que se realicen

cuestan: 20 céntimos en franja 1, 25 céntimos en franja 2 y 30 céntimos en franja 3, cada segundo.

Todas las llamadas tienen como datos el número origen de la llamada, el número destino y su duración en segundos.

Desarrollar la clase Practica7a que en su método main cree una centralita, registre varias llamadas de distinto tipo y le pida a la centralita un informe con el número total de llamadas y la facturación total realizada. Realizar también el diseño del Diagrama de Clases UML.

Palabras clave: Aplicación, centralita, control, llamadas, polimorfismo.

4. CUERPO DEL ARTÍCULO

Introducción

El presente proyecto, con la finalidad de evidenciar los conocimientos adquiridos en la asignatura de Programación II, propone el desarrollo de una aplicación realizada en Java Netbeans, aplicando los conocimientos brindados por nuestro profesor este trabajo incluirá todo el contenido visto en el semestre.

Al haber estudiado definiciones conceptos y haberlos puesto en práctica, puede decirse que estamos en óptimas condiciones para efectuar un trabajo que incluya todo lo referente al tema, por tal razón este trabajo se justifica como una muestra del aprendizaje adquirido.

Page 3: Proyecto Final Programacion

5. MATERIALES Y METODOLOGÍA5.1.MARCO TEÓRICO

PROGRAMACIÓN ORIENTADA A OBJETOS

La programación orientada a objetos o POO (OOP según sus siglas en inglés) es un paradigma de programación que usa los objetos en sus interacciones, para diseñar aplicaciones y programas informáticos. Está basado en varias técnicas, incluyendo herencia, cohesión, abstracción, polimorfismo, acoplamiento y encapsulamiento. Su uso se popularizó a principios de la década de los años 1990. En la actualidad, existe variedad de lenguajes de programación que soportan la orientación a objetos.

La programación orientada a objetos es una forma de programar que trata de encontrar una solución a estos problemas. Introduce nuevos conceptos, que superan y amplían conceptos antiguos ya conocidos. Entre ellos destacan los siguientes:

Clase: definiciones de las propiedades y comportamiento de un tipo de objeto concreto. La instanciación es la lectura de estas definiciones y la creación de un objeto a partir de ellas.

Herencia: (por ejemplo, herencia de la clase C a la clase D) es la facilidad mediante la cual la clase D hereda en ella cada uno de los atributos y operaciones de C, como si esos atributos y operaciones hubiesen sido definidos por la misma D. Por lo tanto, puede usar los mismos métodos y variables publicas declaradas en C. Los componentes registrados como "privados" (private) también se heredan, pero como no pertenecen a la clase, se mantienen escondidos al programador y sólo pueden ser accedidos a través de otros métodos públicos. Esto es así para mantener hegemónico el ideal de OOP.

Objeto: entidad provista de un conjunto de propiedades o atributos (datos) y de comportamiento o funcionalidad (métodos), los mismos que consecuentemente reaccionan a eventos. Se corresponden con los objetos reales del mundo que nos rodea, o con objetos internos del sistema (del programa). Es una instancia a una clase.

Método: algoritmo asociado a un objeto (o a una clase de objetos), cuya ejecución se desencadena tras la recepción de un "mensaje". Desde el punto de vista del comportamiento, es lo que el objeto puede hacer. Un método puede producir un cambio en las propiedades del objeto, o la generación de un "evento" con un nuevo mensaje para otro objeto del sistema.

Evento: es un suceso en el sistema (tal como una interacción del usuario con la máquina, o un mensaje enviado por un objeto). El sistema maneja el evento enviando el mensaje adecuado al objeto pertinente. También se puede definir como evento la reacción que puede desencadenar un objeto; es decir, la acción que genera.

Mensaje: una comunicación dirigida a un objeto, que le ordena que ejecute uno de sus métodos con ciertos parámetros asociados al evento que lo generó.

Propiedad o atributo: contenedor de un tipo de datos asociados a un objeto (o a una clase de objetos), que hace los datos visibles desde fuera del objeto y esto se define como sus características predeterminadas, y cuyo valor puede ser alterado por la ejecución de algún método.

Page 4: Proyecto Final Programacion

Estado interno: es una variable que se declara privada, que puede ser únicamente accedida y alterada por un método del objeto, y que se utiliza para indicar distintas situaciones posibles para el objeto (o clase de objetos). No es visible al programador que maneja una instancia de la clase.

Componentes de un objeto: atributos, identidad, relaciones y métodos. Identificación de un objeto: un objeto se representa por medio de una tabla o entidad

que esté compuesta por sus atributos y funciones correspondientes.

En comparación con un lenguaje imperativo, una "variable" no es más que un contenedor interno del atributo del objeto o de un estado interno, así como la "función" es un procedimiento interno del método del objeto.

POLIMORFISMO

En programación orientada a objetos el polimorfismo se refiere a la posibilidad de enviar un mensaje a un grupo de objetos cuya naturaleza puede ser heterogénea. El único requisito que deben cumplir los objetos que se utilizan de manera polimórfica es saber responder al mensaje que se les envía.

5.2.DESARROLLO DEL PROYECTO (PROGRAMACIÓN EN JAVA NETBEANS)}

DESARROLLO DE LAS CLASES:

Creando un proyecto en Java Netbeans, y a su vez creando paquetes y clases hemos creado las clases solicitadas de acuerdo a lo solicitado para este trabajo.

Clase centralita

package Clases;public class Centralita { private int cont = 0; private double acu = 0;public int getTotal() { return cont;}public double getFacturado(){ return acu;}public void registrarLlamada(LLamada parametro){ System.out.println(parametro); cont++;

Page 5: Proyecto Final Programacion

acu += parametro.calcularPrecio();}}

Clase llamada

package Clases;public abstract class LLamada{ private String NumeroOrigen = null; private String NumeroDestino = null; private double DuracionLlamada = 0;public LLamada(String param1, String param2, double param3){ NumeroOrigen = param1; NumeroDestino = param2; DuracionLlamada = param3;}public String getNumeroOrigen(){ return NumeroOrigen;}public String getNumeroDestino(){ return NumeroDestino;} public double getDuracionLlamada() { return DuracionLlamada;}public abstract double calcularPrecio();}

Clase Llamada Local

package Clases;public class LLamadaLocal extends LLamada{private double precio = 15;public LLamadaLocal(String param1, String param2, int param3){ super(param1, param2, param3);}public double calcularPrecio(){ return getDuracionLlamada() * precio;}public String toString(){ return "LLamada Local #" + getNumeroOrigen() + " - #" + getNumeroDestino() + " - " + getDuracionLlamada()

Page 6: Proyecto Final Programacion

+ " sg";}}

Clase Llamada Provincial

package Clases;public class LLamadaProvincial extends LLamada{ private double precio1 = 20; private double precio2 = 25; private double precio3 = 30; private int franja = 0;public LLamadaProvincial(String param1, String param2, int param3, int param4){ super(param1, param2, param3); franja = param4;}public double calcularPrecio(){ if(franja == 1) return getDuracionLlamada() * precio1; else if(franja == 2) return getDuracionLlamada() * precio2; else return getDuracionLlamada() * precio3;}public String toString(){ return "LLamada Provincial #" + getNumeroOrigen() + " - #" + getNumeroDestino() + " - " + getDuracionLlamada() + " sg - #" + franja;}}

Clase Practica7a

package Clases;public class Practica7a {public static void main(String[] args) { Centralita c = new Centralita(); LLamada l1 = new LLamadaLocal("911234567","919876543",67); c.registrarLlamada(l1); LLamada l2 = new LLamadaLocal("919876543","911234567",43); c.registrarLlamada(l2); LLamada p1 = new LLamadaProvincial("911234567","939876543",12,3); c.registrarLlamada(p1);

Page 7: Proyecto Final Programacion

c.registrarLlamada(new LLamadaProvincial("939876543","911234567",1,1)); System.out.println(); System.out.println("Número total de llamadas: " + c.getTotal()); System.out.println("Total facturado: " + c.getFacturado());}}

MODO GRAFICO

Código del botón “MOSTRAR INFORME DE LLAMADAS

Centralita c = new Centralita();LLamada l1 = new LLamadaLocal("911234567","919876543",67);c.registrarLlamada(l1);LLamada l2 = new LLamadaLocal("919876543","911234567",43);c.registrarLlamada(l2);LLamada p1 = new LLamadaProvincial("911234567","939876543",12,3);c.registrarLlamada(p1);LLamada p2 = new LLamadaProvincial("939876543","911234567",1,1);c.registrarLlamada(p2);

pantalla.append("LLamada Local: #"+l1.getNumeroDestino().toString()+", -#"+l1.getNumeroOrigen().toString()+", - "+l1.getDuracionLlamada()+" seg");

Page 8: Proyecto Final Programacion

pantalla.append(System.getProperty("line.separator"));pantalla.append("LLamada Local: #"+l2.getNumeroDestino().toString()+", -#"+l2.getNumeroOrigen().toString()+", - "+l2.getDuracionLlamada()+" seg");pantalla.append(System.getProperty("line.separator"));pantalla.append("LLamada Provincial: #"+p1.getNumeroDestino().toString()+", -#"+p1.getNumeroOrigen().toString()+", - "+p1.getDuracionLlamada()+" seg");pantalla.append(System.getProperty("line.separator"));pantalla.append("LLamada Provincial: #"+p2.getNumeroDestino().toString()+", -#"+p2.getNumeroOrigen().toString()+", - "+p2.getDuracionLlamada()+" seg");pantalla.append(System.getProperty("line.separator"));pantalla.append(System.getProperty("line.separator"));pantalla.append("Número total de llamadas: " + c.getTotal());pantalla.append(System.getProperty("line.separator")); pantalla.append(System.getProperty("line.separator"));pantalla.append("Total facturado: " + c.getFacturado());

Codigo del botón “LIMPIAR”

pantalla.setText("");

DIAGRAMA DE CLASES UML

CLASE: LlamadaATRIBUTOS:-NumeroOrigen: String-NumeroDestino: String-DuracionLlamada: doubleCONSTRUCTOR:-LLamada(String param1, String param2, double param3): voidMETODOS:-getNumeroOrigen(): String- getNumeroDestino(): String- getDuracionLlamada(): double- calcularPrecio(): double

CLASE: LlamadaProvincialATRIBUTOS:- precio1: double- precio2: double- precio3: doublé-franja: intCONSTRUCTOR:-LLamadaProvincial(String param1, String param2, int param3, int param4): voidMETODOS:-calcularPrecio(): double-toString: String

CLASE: CentralitaATRIBUTOS:-cont: int-acum: doubleMÉTODOS:- getTotal(): int- getFacturado(): doublé- registrarLlamada(LLamada parametro): void

CLASE: Llamada localATRIBUTOS:-precio: doubleCONSTRUCTOR:- LLamadaLocal(String param1, String param2, int param3): voidMETODOS:- calcularPrecio(): double--toString: String

Page 9: Proyecto Final Programacion

6. RESULTADOS Y DISCUSIÓN

Una vez realizado el proyecto en su totalidad, tanto en la programación y en la elaboración de este informe, se puede confirmar que las clases impartidas, la práctica en los laboratorios, y la debida investigación y autoeducación rinde frutos, por ende consiste en una prueba fehaciente del desarrollo educativo en esta materia.

Los objetivos planteados se cumplieron a cabalidad y por tanto el software en que consiste el proyecto se ejecutó normalmente mostrando lo anteriormente planteado.

7. CONCLUSIONES

Estas prácticas o proyectos realizados en java Netbeans constituyen retos propuestos por nuestro profesor y la materia en sí, los cuales nosotros los estudiantes estamos para cumplirlos y de este modo cumplir las metas planteadas por los mismos.

El software aplicativo realizado, nos sirvió para reforzar nuestros conocimientos en programación en el lenguaje de programación java, en la programación orientado a objetos, y específicamente a lo que estaba dirigido, polimorfismo y herencia

8. RECOMENDACIONES

Para realizar este tipo de proyectos se debe recurrir a fuentes de información confiables y a la ayuda brindada por el profesor

Se debe proporcionar ejemplos de proyectos previos para tener una mayor idea y realizarlo de mejor modo

9. REFERENCIAS BIBLIOGRÁFICAS

“Java 2”, Steven Hotzner, ANAYA multimediahttp://es.wikipedia.org/wiki/Polimorfismo_%28inform%C3%A1tica%29http://es.wikipedia.org/wiki/Programaci%C3%B3n_orientada_a_objetoshttp://www.javamexico.org/blogs/daniel/codigo_para_limpiar_jtextfields

Page 10: Proyecto Final Programacion

10. FOTOGRAFÍAS Y GRÁFICOS:

11. AGRADECIMIENTOS:

A la Universidad Técnica de Ambato, Facultad de Ingeniería En Sistemas Electrónica e Industrial, por acogernos en su templo del saber.

Page 11: Proyecto Final Programacion

A nuestro profesor, Ing. Santiago Manzano, por guiarnos en nuestra formación profesional y compartir sus conocimientos con los estudiantes.