Está en la página 1de 7

EJERCICIO 9

Se desea crear un programa que permita ingresar alumnos en una comisión. De cada alumno
se conocen su nombre,

número de legajo y la nota que obtuvo en un examen.

El programa deberá permitir la emisión de tres listados:

a) Alumnos que superan el promedio general.

b) Alumnos que no superan el promedio general pero si superan la mitad del promedio
general.

c) Todos los alumnos ordenados en forma decreciente por la nota.

Además permitirá hacer una consulta, ingresando un número de legajo mostrará nombre y
nota del alumno.

Todas estas acciones podrán ser seleccionadas desde un menú.

Por cada alumno se deberá mostrar su nombre, número de legajo y la nota obtenida.

Como proceder para resolver esta problemática:

1. Debemos hacer una lectura minuciosa para detectar cuales serian los objetos
intervinientes y por lo tanto cuales serian las clases involucradas.
2. Una vez detectadas las clases debemos confeccionar el correspondiente diagrama de
clases, donde debemos definir las características y los comportamientos de cada una de las
clases y luego como están relacionadas las clases entre ellas y en el esquema general de
clases del Dolphin.
3. Ahora entramos al entorno Dolphin y creamos las clases respetando el esquema diseñado.
Recuerden que este es el momento de definir las variables de clase y de instancia.
4. Una vez creadas las clases vamos a agregar los métodos necesarios que resuelvan la
problemática presentada.
5. Cuando tenemos lista la etapa de definición de características y comportamientos de cada
una de las clases, escribimos en una ventana de trabajo, el programa que hará que los
objetos actúen de la manera que hemos definido que lo hagan y así obtener los resultados
esperados.

Bien, vamos a ir avanzando en cada uno de estos puntos.

De la lectura surge que tenemos aquí 2 clases perfectamente identificables, Alumno y


Comisión. Hacemos entonces el diagrama de clases.
#Object

#Comision #Alumno

Vc Vi Vc Vi
coleccionAlumnos Legajo
Nombre
nota
Mc Mi Mc Mi
Inicio cargaDatos
cargaAlumnos muestraLegajo
calculaPromedio muestraNombre
listaA muestraNota
listaB [1…N]
listaC
consulta
menu

Ref:

Marca relación de herencia

Marca relación de ensamble

(en este caso se esta marcando que que entre 1 y N objetos de la clase Alumno son parte de la
clase Comision)

Vc variables de clase

Vi variables de instancia

Mc métodos de clase

Mi métodos de instancia

Ahora que tenemos hecho el diagrama de clases, vamos al entorno Dolphin.

Parados en la clase Object creamos la clase Alumno


Una vez creada la clase, en el panel inferior podemos ver el protocolo de la clase, allí definimos
las variables, en este caso de instancia.

El nombre de las variables deben escribirse en minúsculas y separadas por espacios.

Luego con el botón derecho del mouse desplegamos un menu en el cual seleccionamos la
opción Accept.
Hecho esto podemos comenzar a agregar métodos a la clase

Al crear un nuevo método queda habilitado nuevamente el panel inferior, donde vamos a
desarrollar el código del método.

Finalizado el desarrollo del código guardamos utilizando la opción Accept.


Si no hay errores sintácticos el método se agrega a la lista

De la misma manera agregamos los otros métodos de la clase.

Con la clase Comision trabajamos como lo hemos hecho con Alumno.

Algunas sugerencias para la resolución:

En la clase comisión:

 El método inicio, debe contener los mensajes que resuelvan aquellas cuestiones
necesarias para arrancar con la ejecución.

En este caso debemos inicializar la colección que contendrá a los objetos alumno.

inicio

coleccionAlumnos:= OrderedCollection new. (1)


(1)Elegimos este tipo de colección pues no tenemos definido cuantos alumnos son.

 Para seleccionar un subconjunto de alumnos que cumpla con una determinada


condición utilizamos el método select:.

aux:= coleccionAlumnos select:[:i | i muestraNota > self calculaPromedio].

La variable temporal aux será una subcoleccion del mismo tipo de coleccionAlumnos, que
contendrá todos los objetos Alumno que

cumplan con la condición establecida.

Si ningún objeto cumple con la condición, aux será una colección vacía, situación que debemos
validar.

El parámetro del bloque i contendrá un objeto de la colección, en este caso un objeto Alumno.

 Para realizar la búsqueda de un objeto determinado utilizamos el método detect:

leg:= Prompter prompt: ‘ Ingrese el numero de legajo del alumno’.


aux:= coleccionAlumnos detect:[:i | i muestraLegajo = leg]
ifNone:[ aux:= nil].

leg y aux serán variables temporales. aux contendrá el primer objeto que cumpla con la
condición o nil si no hay coincidencia.

 Para ordenar una colección con un criterio determinado transformamos la colección


origen en una colección del tipo SortedCollection

aux:= coleccionAlumnos asSortedCollection: [:a :b | a muestraNota> b muetraNota].

La variable temporal aux será una colección del tipo SortedCollection que contendrá todos los
objetos alumno ordenados en forma decreciente por su nota.

a y b son parámetro del bloque que contienen un objeto alumno cada uno de ellos.

 Un ejemplo de menú:
menú
|op rta|
rta:= true.
[rta]whileTrue:[ op:= Prompter prompt: ‘1- lista1 2- consulta 3- salir’.
op==’1’ ifTrue:[ self lista1].
op==’2’ ifTrue:[ self consulta].
op==’3’ ifTrue:[ rta:= false]].

También podría gustarte