Mostrando entradas con la etiqueta POO. Mostrar todas las entradas
Mostrando entradas con la etiqueta POO. Mostrar todas las entradas

martes, 26 de noviembre de 2013

Ejercicio tipo examen sobre Clases e Interfaces en Java

Bueno, el siguiente ejercicio fue propuesto como un ejercicio tipo examen para el curso "Tecnología de la programación I" que estoy siguiendo (IV ciclo de Ingeniería de Sistemas).

Enunciado.

El departamento de Informática de un hospital está realizando un nuevo registro de datos de todas las personas que tienen relación con esa institución, que son: los empleados, los médicos y los pacientes.
Los empleados son categorizados en función de si son contratados por Planilla o de forma Eventual y son los encargados de los procesos administrativos.

Los médicos (que podrían considerarse un tipo especial de empleados contratados por Planilla) se encargan de las atenciones de las consultas médicas.
Para solicitar una cita, el paciente es atendido por un empleado. El paciente indica el servicio en el cual quiere pasar consulta y el empleado le indica el nombre del médico, la fecha y la hora de la cita.

Los atributos de cada uno de ellos se indican a continuación:

  • Persona: número de DNI, nombre, apellido, fecha de nacimiento, dirección, ciudad de procedencia.
  • Paciente: número de historia clínica, sexo, grupo sanguíneo, lista de medicamentos a los que es alérgico.
  • Empleado: código de Empleado, número de horas extras, fecha de ingreso, área, cargo.
  • Empleado por Planilla: salario mensual, porcentaje adicional por hora extra.
  • Empleado Eventual: honorarios por hora, número de horas totales (normales + extras) trabajadas, fecha de término del contrato.
  • Médico: especialidad (cirujano, oftalmólogo, etc.), servicio (cirugía, oftalmología, etc.), número de consultorio.

Las operaciones que involucren algún cálculo, deben desarrollarse a través de interfaces.
La aplicación a desarrollar debe permitir:
a) Registrar los datos de los empleados, los pacientes y los médicos.
b) Registrar los datos de una cita médica.
c) Listar los datos de los médicos ordenados en forma descendente por la especialidad.
d) Listar los datos (nombres y apellidos) de los pacientes atendidos por un médico determinado (ingresando su código).

Nota: En el diagrama y en la codificación deben mostrarse e implementarse los aspectos de ocultación, composición y/o agregación, herencia (simple y múltiple) y polimorfismo.

Solución.

El desarrollo se compone de clases e interfaces, a fin de cumplir todos los requisitos expuestos.
En este caso, se ha ordenado el programa en 2 paquetes: backend y frontend.
El primero incluye toda la lógica interna del programa y el segundo sólo lo referente a la lectura de datos y acerca de cómo se presentan las opciones y respuestas al usuario.
Dentro del primer paquete se encuentran las clases e interfaces: EEventual, EPlanilla, Empleado, Fecha, Medico (que contiene una clase interna llamada CitaMedica), Paciente, Persona, Saldo, SaldoEventual y SaldoPlanilla.
Dentro del segundo paquete se tiene: Aplicacion, Lector y Principal.

El siguiente video explica detalladamente el desarrollo del programa:

domingo, 29 de julio de 2012

1.1. El progreso de abstracción.

1.1. El progreso de abstracción

Es bueno saber que los lenguajes de programación nos simplifican mucho el trabajo. De no ser por ellos, deberíamos tratar con el ordenador usando comandos sumamente extraños y un tanto extensos incluso para pequeñas instrucciones.

En un primer momento, surgió el mencionado lenguaje ensamblador, el cual viene a ser una abstracción de la máquina subyacente.

Como sabemos, el “lenguaje máquina” se corresponde con el “lenguaje binario”. Lo que quiere decir que, las instrucciones directas al ordenador deberían expresarse en 1s y 0s.

Lo que el lenguaje ensamblador hizo es implementar una representación simbólica de dichos códigos de máquina binarios.

Muchos lenguajes llamados “imperativos” le siguieron (tales como Fortran, BASIC y C). Éstos representaban abstracciones del lenguaje ensamblador, lo que suponía grandes mejores. Sin embargo, aún se requería idear la solución en términos más del ordenador que en términos del problema. Esto es lo que se conoce como un lenguaje de “bajo nivel”.

1: Introducción a los Objetos.

1: Introducción a los Objetos

Es comprensible que a los ordenadores no se les haya atribuido mucha importancia en sus inicios. Éstos resultaban poco productivos y era complicado el acceso a ellos, incluso no recomendable para las empresas.

Sin embargo, los tiempos han cambiado, tanto que nadie habría imaginado las características de las que se goza ahora.
Los ordenadores han dejado esa simplicidad de máquinas, y corresponden ahora a las herramientas más útiles. Son además un entrenamiento para nuestra mente. Interactuar con ellos puede ayudarnos a desarrollar grandes capacidades (pues si así lo deseamos, le daremos un buen uso).

El autor del libro (Bruce Eckel) considera a los ordenadores como medios de expresión. Y era de esperarse, ¿cierto? Pues claro. Estamos hablando de “lenguajes” de programación. Nos comenta además que, aquel movimiento de usar el ordenador como medio de expresión, se ve mucho más encarecido en los lenguajes POO.