Hola, en esta ocasión vamos enfrentarnos al caso de estudio de las líneas telefónicas. Vamos a empezar revisando los documentos que hacen parte de la descripción. Empecemos con el enunciado. Se quiere crear una aplicación para controlar los gastos telefónicos de una empresa, la empresa cuenta con tres líneas telefónicas a través de las cuales se pueden realizar llamadas locales, de larga distancia y de celulares. Los valores de este tipo de llamadas son, una llamada local cuesta $35 pesos, una de larga distancia $380 pesos y una llamada a celular $999 pesos, no vamos a hacer ningún comentario con respecto a los precios inflados que está tratando de poner esta empresa, la aplicación debería permitir registrar una llamada en alguna de las líneas, mostrar información detallada de cada línea, número de llamadas realizadas, la duración total de las llamadas en minutos, el costo total de las llamadas en pesos, y mostrar un consolidado de la información de todas las líneas, en particular el costo total en pesos de las tres líneas, el número total de llamadas realizadas, la duración total de llamadas en minutos y el cálculo del costo promedio por minuto según el costo total y el número de minutos, adicionalmente deberíamos poder reiniciar el uso de las líneas telefónicas dejando sus valores en ceros. Si vemos acá la interfaz, nos damos cuenta que esto es un [inglés] screenshot de un momento intermedio de la aplicación donde se muestran todos los valores que acabamos de mencionar calculados, la idea es justamente lograr eso. Miremos ahora el modelo conceptual, el diagrama de clases de esta aplicación, tenemos dos clases principales, empresa línea telefónica, empresa representa la empresa y la línea telefónica representa una línea telefónica. Los atributos de la clase línea telefónica son el número de llamadas, el número de minutos y el costo de llamadas, los dos primeros son enteros y el tercero es un [inglés] double, además tenemos varios métodos que nos permiten calcular o nos permiten dar el valor de las llamadas o agregar llamadas para que la línea telefónica lleve los cálculos necesarios. La empresa no tiene atributos de tipos básicos del sistema pero sí va a tener tres atributos que van a representar esas tres asociaciones con la clase línea telefónica, la asociación línea uno, línea dos y línea tres que van a representar justamente las tres líneas telefónicas, las tres instancias que va a tener cada instancia o la instancia principal de empresa en este caso y varios métodos que nos van a permitir administrar justamente las llamadas y agregarle valores. Entre otras opciones y operaciones que vamos a ver cuándo revisemos el código, así que entonces pasemos al código. Tenemos nuestro proyecto, tenemos tres paquetes en la parte de los fuentes, la interfaz y el mundo, la interfaz no nos interesa así que nos vamos a concentrar en el mundo, empecemos desde abajo, la clase línea telefónica y de ahí vemos los tres atributos declarados, el número de llamadas, el número de minutos y el costo de llamadas. Entonces vamos a inicializar. Entonces al inicializar nos dice que es cuando inicializa los valores en cero, entonces, número de llamadas va a ser igual a cero, el número de minutos va a ser igual a cero y finalmente el costo de llamadas va a ser igual a cero, todos los valores inicialmente van a comenzar en cero, en reiniciar vamos a dejar todos los valores en cero, así que tenemos dos opciones, una, es decir exactamente lo mismo que veníamos diciendo, con inicializar número de llamadas va a ser igual a cero, número de minutos vamos a asignarle un cero y costo de llamadas vamos a inicializarlo en cero o podríamos llamar al método "inicializar" que va a hacer lo mismo por nosotros y nos va a ahorrar la replicación de código. Ahora vamos al método "dar costo de llamada", estos métodos son los que llamamos los [inglés] Getters, que nos van a retomar los valores de los atributos en este caso dar costo de llamada va a retornar el valor del atributo, costo de llamadas que es un [inglés] double, para el método dar número de llamadas es exactamente lo mismo solo que vamos a poner que nos retorne el número de llamadas, [inglés] return número de llamadas y finalmente para el método dar número de minutos exactamente lo mismo. Entonces vamos a retornar número minutos, el atributo que representa el número de minutos de esta línea telefónica. Luego tenemos el método "agregar llamada local" y recibir por parámetro un entero que representa los minutos según la documentación del método, nos dice que, "Se va a incrementar en uno el número de llamadas", se incrementa el número de minutos, el atributo, número de minutos en minuto, número minutos realmente. Y el costo de llamadas se va a aumentar en minuto por 35 que es lo que cuesta una llamada local, entonces nuevamente, una llamada más, número de llamadas va a ser igual al número de llamadas más uno. Si nos damos cuenta es una operación matemática básica, en programación podríamos utilizar esta versión bastante más simple, más iguales, que significa que al atributo que tenemos acá vamos a coger su valor y le vamos a sumar uno. Y este atributo va a quedar asignado como el valor inicial más uno. Si lo hacemos entonces para número de minutos, nuevamente lo podríamos hacer, entonces le vamos a sumar al valor que hay actualmente en el atributo número de minutos, le vamos a sumar, perdón, el número de minutos que llega por parámetro, el parámetro se llama minutos, así que más igual minutos. Y finalmente el costo de las llamadas va a ser la suma del costo que teníamos hasta el momento más igual el número de minutos por el valor de cada minuto, en este caso 35 para una llamada local, con esto terminamos de agregar una llamada local y para una llamada a larga distancia va a ser exactamente lo mismo salvo que el costo de las llamadas va a aumentar en minutos por 380 que es el valor que cobra la empresa por llamada de larga distancia. Así que hacemos lo mismo más igual uno, el número de minutos va a ser más igual a los minutos que recibimos por parámetro y el costo de llamadas va a ser más igual a los minutos por 380 que es lo que cuesta una llamada de larga distancia y acabamos. Y para el método "agregar llamadas celular", nos damos cuenta que la diferencia es que el costo nuevamente es de 999 así que en lugar de volver a teclear, ¿por qué no copiamos y pegamos?, pero tenemos muchísimo cuidado con cambiar los valores que nos interesen, en este caso costo de llamadas debe ser más igual a minutos por 999, es decir, al valor que haya en costo de llamadas, debemos sumarle el número de minutos por 999. Vamos a guardar. Ya tenemos la clase línea telefónica completa y vamos a la clase empresa.