UNIVERSIDAD TÉCNICA DE AMBATO

Facultad de Ingeniería en Sistemas, Electrónica e Industrial “Proyecto Académico de Fin de Semestre”

TÍTULO: CARRERA UNIVERSITARIA: ÁREA ACADÉMICA: SEMESTRE Y PARALELO:

CONTROL DE LLAMADAS REALIZADAS EN UNA CENTRALITA INGENIERÍA INDUSTRIAL EN PROCESOS DE AUTOMATIZACIÓN NOMBRE DEL ÁREA ACADÉMICA 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

Registrar una llamada consiste en contabilizar el número de llamadas realizadas así como el coste total de todas las llamadas realizadas. 4. OBJETIVO Realizar una aplicación en java usando polimorfismo. propone el desarrollo de una aplicación realizada en Java Netbeans. Al haber estudiado definiciones conceptos y haberlos puesto en práctica.1. . Realizar también el diseño del Diagrama de Clases UML. 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. con la finalidad de evidenciar los conocimientos adquiridos en la asignatura de Programación II. puede decirse que estamos en óptimas condiciones para efectuar un trabajo que incluya todo lo referente al tema. Desarrollar la clase Practica7a que en su método main cree una centralita. RESUMEN El proyecto consiste en Desarrollar una aplicación de control de llamadas realizadas en una centralita Telefónica. 25 céntimos en franja 2 y 30 céntimos en franja 3. llamadas. centralita. aplicando los conocimientos brindados por nuestro profesor este trabajo incluirá todo el contenido visto en el semestre. TÍTULO Aplicación de control de llamadas realizadas en una centralita 2. sobre una central telefonica 3. Existen dos tipos de llamadas: a) Las llamadas locales que cuestan 15 céntimos el segundo. por tal razón este trabajo se justifica como una muestra del aprendizaje adquirido. b) Y las llamadas provinciales que dependiendo de la franja horaria en la que se realicen cuestan: 20 céntimos en franja 1. cada segundo. Palabras clave: Aplicación. el número destino y su duración en segundos. polimorfismo. CUERPO DEL ARTÍCULO Introducción El presente proyecto. Todas las llamadas tienen como datos el número origen de la llamada. La centralita mostrará por pantalla todas las llamadas según las vaya registrando. En la centralita se van registrando llamadas. control.

Propiedad o atributo: contenedor de un tipo de datos asociados a un objeto (o a una clase de objetos). En la actualidad. que superan y amplían conceptos antiguos ya conocidos. polimorfismo.5. MATERIALES Y METODOLOGÍA 5. se mantienen escondidos al programador y sólo pueden ser accedidos a través de otros métodos públicos. pero como no pertenecen a la clase. Herencia: (por ejemplo. Su uso se popularizó a principios de la década de los años 1990. para diseñar aplicaciones y programas informáticos. acoplamiento y encapsulamiento. Esto es así para mantener hegemónico el ideal de OOP. existe variedad de lenguajes de programación que soportan la orientación a objetos. puede usar los mismos métodos y variables publicas declaradas en C. También se puede definir como evento la reacción que puede desencadenar un objeto. Es una instancia a una clase. o un mensaje enviado por un objeto). Los componentes registrados como "privados" (private) también se heredan. o la generación de un "evento" con un nuevo mensaje para otro objeto del sistema. cohesión. Se corresponden con los objetos reales del mundo que nos rodea. 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. abstracción. Mensaje: una comunicación dirigida a un objeto. . Desde el punto de vista del comportamiento. Objeto: entidad provista de un conjunto de propiedades o atributos (datos) y de comportamiento o funcionalidad (métodos). El sistema maneja el evento enviando el mensaje adecuado al objeto pertinente. Método: algoritmo asociado 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. es decir. y cuyo valor puede ser alterado por la ejecución de algún método. Un método puede producir un cambio en las propiedades del objeto. es lo que el objeto puede hacer. como si esos atributos y operaciones hubiesen sido definidos por la misma D. 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. la acción que genera. o con objetos internos del sistema (del programa). Por lo tanto. Entre ellos destacan los siguientes:        Clase: definiciones de las propiedades y comportamiento de un tipo de objeto concreto. los mismos que consecuentemente reaccionan a eventos. Introduce nuevos conceptos. Está basado en varias técnicas.1. La instanciación es la lectura de estas definiciones y la creación de un objeto a partir de ellas. incluyendo herencia. cuya ejecución se desencadena tras la recepción de un "mensaje". La programación orientada a objetos es una forma de programar que trata de encontrar una solución a estos problemas. que le ordena que ejecute uno de sus métodos con ciertos parámetros asociados al evento que lo generó. Evento: es un suceso en el sistema (tal como una interacción del usuario con la máquina.

y que se utiliza para indicar distintas situaciones posibles para el objeto (o clase de objetos). cont++. Componentes de un objeto: atributos. .   Estado interno: es una variable que se declara privada. } public double getFacturado() { return acu. No es visible al programador que maneja una instancia de la clase. identidad. relaciones y métodos. y a su vez creando paquetes y clases hemos creado las clases solicitadas de acuerdo a lo solicitado para este trabajo.out. DESARROLLO DEL PROYECTO (PROGRAMACIÓN EN JAVA NETBEANS)} DESARROLLO DE LAS CLASES: Creando un proyecto en Java Netbeans.println(parametro).2. 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. que puede ser únicamente accedida y alterada por un método del objeto. public int getTotal() { return cont. 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. public class Centralita { private int cont = 0. } public void registrarLlamada(LLamada parametro) { System. Clase centralita package Clases. 5. 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. 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. private double acu = 0. así como la "función" es un procedimiento interno del método del objeto.

} public double calcularPrecio(){ return getDuracionLlamada() * precio." + getDuracionLlamada() . public LLamadaLocal(String param1. } Clase Llamada Local package Clases. public LLamada(String param1. } public String getNumeroDestino(){ return NumeroDestino. public abstract class LLamada{ private String NumeroOrigen = null. double param3){ NumeroOrigen = param1.calcularPrecio().acu += parametro. String param2.#" + getNumeroDestino() + " . param2. private String NumeroDestino = null. param3). private double DuracionLlamada = 0. } } Clase llamada package Clases. DuracionLlamada = param3. } public String toString(){ return "LLamada Local #" + getNumeroOrigen() + " . } public String getNumeroOrigen(){ return NumeroOrigen. NumeroDestino = param2. } public double getDuracionLlamada() { return DuracionLlamada. int param3){ super(param1. } public abstract double calcularPrecio(). String param2. public class LLamadaLocal extends LLamada{ private double precio = 15.

LLamada l2 = new LLamadaLocal("919876543". else if(franja == 2) return getDuracionLlamada() * precio2.registrarLlamada(l2).registrarLlamada(p1). .3). String param2. LLamada p1 = new LLamadaProvincial("911234567".67). public class LLamadaProvincial extends LLamada{ private double precio1 = 20. } } Clase Practica7a package Clases.12. c. } public String toString(){ return "LLamada Provincial #" + getNumeroOrigen() + " . int param4){ super(param1. private int franja = 0." + getDuracionLlamada() + " sg . franja = param4. param3).#" + franja.registrarLlamada(l1). } public double calcularPrecio(){ if(franja == 1) return getDuracionLlamada() * precio1. private double precio3 = 30."919876543". public LLamadaProvincial(String param1. LLamada l1 = new LLamadaLocal("911234567".+ " sg". else return getDuracionLlamada() * precio3.43). int param3. c."939876543". public class Practica7a { public static void main(String[] args) { Centralita c = new Centralita().#" + getNumeroDestino() + " . param2. c. } } Clase Llamada Provincial package Clases. private double precio2 = 25."911234567".

out.getNumeroOrigen()."911234567". .1)).println("Total facturado: " + c.registrarLlamada(l1).67). pantalla.toString()+".registrarLlamada(l2).c. LLamada l2 = new LLamadaLocal("919876543". System.registrarLlamada(p2).getNumeroDestino()."+l1.println(). LLamada l1 = new LLamadaLocal("911234567". c.out. #"+l1."911234567". System.12.1. . c.1).getFacturado()).out. } } MODO GRAFICO Código del botón “MOSTRAR INFORME DE LLAMADAS Centralita c = new Centralita()."911234567".getTotal()).1."939876543".registrarLlamada(p1).println("Número total de llamadas: " + c. LLamada p2 = new LLamadaProvincial("939876543".toString()+".3). c. LLamada p1 = new LLamadaProvincial("911234567".getDuracionLlamada()+" seg").append("LLamada Local: #"+l1."919876543".43). c.registrarLlamada(new LLamadaProvincial("939876543". System.

int param4): void METODOS: -calcularPrecio(): double -toString: String CLASE: Llamada local ATRIBUTOS: -precio: double CONSTRUCTOR: .getNumeroOrigen().getDuracionLlamada(): double .toString()+".append("Total facturado: " + c.append(System.registrarLlamada(LLamada parametro): void CLASE: LlamadaProvincial ATRIBUTOS: . double param3): void METODOS: -getNumeroOrigen(): String .getProperty("line.append("LLamada Local: #"+l2.getDuracionLlamada()+" seg"). pantalla.append(System.append("LLamada Provincial: #"+p2. #"+p1.calcularPrecio(): double CLASE: Centralita ATRIBUTOS: -cont: int -acum: double MÉTODOS: .LLamadaLocal(String param1.separator")).getDuracionLlamada()+" seg").getProperty("line.toString()+".getTotal(): int .getNumeroOrigen(). pantalla.getNumeroDestino(). String param2. pantalla.separator")).getNumeroDestino().getFacturado(): doublé .getProperty("line.calcularPrecio(): double --toString: String .getNumeroDestino().append("Número total de llamadas: " + c. int param3.separator")). #"+l2.precio1: double .append(System. pantalla. . . .separator")). #"+p2.getProperty("line.separator")).toString()+".append(System. String param2.pantalla. pantalla. pantalla.append("LLamada Provincial: #"+p1.getProperty("line.append(System. pantalla.separator")). DIAGRAMA DE CLASES UML CLASE: Llamada ATRIBUTOS: -NumeroOrigen: String -NumeroDestino: String -DuracionLlamada: double CONSTRUCTOR: -LLamada(String param1.precio3: doublé -franja: int CONSTRUCTOR: -LLamadaProvincial(String param1."+p1.separator")).getTotal()).append(System.getProperty("line. Codigo del botón “LIMPIAR” pantalla.getDuracionLlamada()+" seg"). pantalla.getNumeroOrigen(). pantalla.append(System.toString()+". pantalla.getNumeroDestino(): String .toString()+".toString()+".precio2: double ."+p2.setText(""). String param2. pantalla.getProperty("line."+l2.getFacturado()). int param3): void METODOS: .

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”.org/blogs/daniel/codigo_para_limpiar_jtextfields .wikipedia. CONCLUSIONES Estas prácticas o proyectos realizados en java Netbeans constituyen retos propuestos por nuestro profesor y la materia en sí. Steven Hotzner. por ende consiste en una prueba fehaciente del desarrollo educativo en esta materia.org/wiki/Programaci%C3%B3n_orientada_a_objetos http://www. los cuales nosotros los estudiantes estamos para cumplirlos y de este modo cumplir las metas planteadas por los mismos. Los objetivos planteados se cumplieron a cabalidad y por tanto el software en que consiste el proyecto se ejecutó normalmente mostrando lo anteriormente planteado. y específicamente a lo que estaba dirigido. en la programación orientado a objetos. RESULTADOS Y DISCUSIÓN Una vez realizado el proyecto en su totalidad. 7. polimorfismo y herencia 8. la práctica en los laboratorios. y la debida investigación y autoeducación rinde frutos.javamexico.6. El software aplicativo realizado. se puede confirmar que las clases impartidas. tanto en la programación y en la elaboración de este informe.org/wiki/Polimorfismo_%28inform%C3%A1tica%29 http://es.wikipedia. ANAYA multimedia http://es. nos sirvió para reforzar nuestros conocimientos en programación en el lenguaje de programación java.

FOTOGRAFÍAS Y GRÁFICOS: 11.10. Ing. . AGRADECIMIENTOS: A la Universidad Técnica de Ambato. por guiarnos en nuestra formación profesional y compartir sus conocimientos con los estudiantes. por acogernos en su templo del saber. Santiago Manzano. A nuestro profesor. Facultad de Ingeniería En Sistemas Electrónica e Industrial.