Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Instituto de enseñanza
Un instituto de enseñanza, enfocado a cursos de capacitación de diferentes
especialidades, nos ha convocado para desarrollar un sistema que gestione los
mismos.
El instituto cuenta con un plantel de docentes de los cuales se conoce: dni, nombre,
apellido, telefono y una especialidad.
De los alumnos que asisten al instituto se conoce: dni, nombre, apellido, telefono y
fecha de inscripcion al instituto.
El instituto dicta cursos de capacitación que pueden ser presenciales o on-line. Los
cursos tienen los siguientes datos:
Los cursos presenciales tienen un costo extra por materiales, diferente para cada
curso. En cada clase el docente entrega los materiales a utilizar a los alumnos. Este
costo extra se cobra una única vez al inscribirse el alumno al curso. De esta manera el
total del costo de los cursos presenciales se compone de la suma del costo del curso
más el costo de los materiales.
Los cursos on-line tienen una cantidad de entregas que realizar. Cada entrega tiene un
costo adicional que es igual para todos los cursos on-line. El costo por entrega se
calcula multiplicando la cantidad de entregas que tiene el curso por el costo adicional.
De esta manera el total del costo de los cursos on-line se compone de la suma del
costo del curso más el monto por la cantidad de entregas que haya que realizar en el
curso.
Se pide:
Browser de Clases
Persona subclass: #Docente
instanceVariableNames: 'especialidad'
classVariableNames: ''
poolDictionaries: ''
category: ''
Browser de Clases
Persona subclass: #Alumno
instanceVariableNames: 'fechaInscripcion'
classVariableNames: ''
poolDictionaries: ''
category: ''
Browser de Clases
Object subclass: #Curso
instanceVariableNames: 'id titulo descripcion especialidad
diaCursado costo docente alumnos'
classVariableNames: 'UltimoId'
poolDictionaries: ''
category: ''
Browser de Clases
Curso subclass: #CursoPresencial
instanceVariableNames: 'costoMateriales'
classVariableNames: ''
poolDictionaries: ''
category: ''
Browser de Clases
Curso subclass: #CursoOnline
instanceVariableNames: 'cantidadEntregas'
classVariableNames: 'CostoEntrega'
poolDictionaries: ''
category: ''
Browser de Clases
Cliente subclass: #Instituto
instanceVariableNames: 'docentes alumnos cursos'
classVariableNames: ''
poolDictionaries: ''
category: ''
#Instituto
Métodos de instancia
#altaCurso
| tipo curso |
[ curso isNil ] whileTrue: [
tipo := Prompter prompt: ‘Ingrese el tipo de curso a crear (1) Presencial,
(2) Online’.
tipo = ‘1’ ifTrue: [ curso := CursoPresencial new].
tipo = ‘2’ ifTrue: [ curso := CursoOnline new].
].
curso cargaDatos.
#buscaDocente
|dni doc |
dni := Prompter prompt: ‘Ingrese dni del docente’.
doc := docentes detect: [:unDocente | unDocente dni = dni ] ifNone: [nil].
^ doc
#inscripcionCurso
| esp cursosEncontrados |
esp := Prompter prompt: ‘Ingrese la especialidad del curso a inscribirse’.
cursosEncontrados = cursos select: [:unCurso | unCurso especialidad = esp ].
#buscarCurso
| cur id
[ cur isNil ] whileTrue: [
id := (Prompter prompt: ‘Ingrese Identificador del curso) asNumber.
cur := cursos detect: [:unCurso | unCurso id = id ] ifNone: [ nil ]
].
^ cur
#buscarOCrearAlumno
|dni alu |
dni := (Prompter prompt: ‘Ingrese DNI del alumno’) asNumber.
alu := alumnos detect: [:unAlumno | unAlumno dni = dni ] ifNone: [nil].
alu isNil ifTrue: [ alu := self nuevoAlumno ].
^ alu
#nuevoAlumno
|alu|
alu := Alumno new.
alu cargaDatos.
alumnos add: alu.
^ alu
#Curso
Métodos de clase
#incrementaUltimoId
UltimoId := UltimoId + 1
Métodos de instancia
#inicializa
alumnos := OrderedCollection new.
#cargaDatos
id := UltimoId.
Curso incrementaUltimoId.
titulo := Prompter prompt: ‘Ingrese titulo’.
descipcion := Prompter prompt: ‘Ingrese descripcion’.
especialidad := Prompter prompt: ‘Ingrese la especialidad’.
diaCursado := Prompter prompt: ‘Ingrese el dia de cursado’.
costo := (Prompter prompt: ‘Ingrese el costo’) asNumber.
#docente: unDocente
docente := unDocente
#inscribirAlumno: unAlumno
alumnos add: unAlumno
#especialidad
^ especialidad
#titulo
^ titulo
#diaCursado
^ diaCursado
#id
^ id
#docente
^ docente
#CursoPresencial
Métodos de instancia
#cargaDatos
super cargaDatos.
costoMateriales := (Prompter prompt: ‘Ingrese el costo por materiales’)
asNumber.
#tipo
^ ‘Curso presencial’
#costoTotal
^ costo + costoMateriales
#CursoOnline
Métodos de instancia
#cargaDatos
super cargaDatos.
cantidadEntregas := (Prompter prompt: ‘Ingrese la cantidad de entregas a
realizar’) asNumber.
#tipo
^ ‘Curso on-line’
#costoTotal
^ costo + (cantidadEntregas * CostoEntregas)
#Persona
Métodos de instancia
#cargaDatos
dni := Prompter prompt: ‘Ingrese el DNI.
nombre := Prompter prompt: ‘Ingrese nombre’.
apellido := Prompter prompt: ‘Ingrese apellildo’.
telefono := Prompter prompt: ‘Ingrese telefono’.
#dni
^ dni
#nombreYApellido
^ nombre, ‘ ‘, apellido
#Docente
Métodos de instancia
#cargaDatos
super cargaDatos.
especialidad := Prompter prompt: ‘Ingrese especialidad’.
#especialidad
^ especialidad
#Alumno
Métodos de instancia
#cargaDatos
super cargaDatos.
fechaInscripcion := Date today.
#fechaInscripcion
^ fechaInscripcion