Hola, dejo por aquí mi resolución a los dos ejercicios de este tema.
EJERCICIO 1
Crea un esquema de herencia que cumpla con estos requisitos:
a) Un Médico especialista tiene una especialidad y es un tipo de Médico.
b) Un Médico trabaja en un centro de trabajo y es un tipo de Persona.
c) Una Persona tiene un nombre y una nacionalidad. Como método común a todas las personas tenemos mostrarNacionalidad, que muestra un mensaje informando de la nacionalidad.
Se desea crear un objeto de tipo MedicoEspecialista pasándole como parámetros para su creación además de sus propiedades intrínsecas las propiedades que hereda de sus supertipos y sobre este objeto invocar el método mostrarNacionalidad(), que deberá ser reconocido por herencia.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Ejemplo aprenderaprogramar.com</title><meta charset="utf-8">
<style>
#pulsador {padding:15px; width: auto; display: inline-block; margin: 25px;
cursor: pointer; color: yellow; border-radius: 40px; background: purple;}
</style>
<script type="text/javascript">
function Persona(nombre, nacionalidad){
this.nombre = nombre || 'desconocido';
this.nacionalidad = nacionalidad || 'desconocida';
}
Persona.prototype.mostrarNacionalidad = function(){
alert('Hola me llamo ' + this.nombre + ' y mi nacionalidad es ' + this.nacionalidad);
}
function Medico(nombre, nacionalidad, centroDeTrabajo){
Persona.call(this, nombre, nacionalidad);
this.centroDeTrabajo = centroDeTrabajo || 'desconocido';
}
function MedicoEspecialista(especialidad, centroDeTrabajo, nacionalidad, nombre){
Medico.call(this, nombre, nacionalidad, centroDeTrabajo);
this.especialidad = especialidad || 'desconocida';
}
Medico.prototype = new Persona();
MedicoEspecialista.prototype = new Medico();
function ejemploObjetos(){
var unMedicoEspecialista = new MedicoEspecialista('Traumatólogo', 'Hospital La Paz', 'Española', 'Pedro');
var msg = 'El objeto unMedicoEspecialista se llama ' + unMedicoEspecialista.nombre + ', trabaja en ' + unMedicoEspecialista.centroDeTrabajo;
msg = msg + ' es ' + unMedicoEspecialista.especialidad + ' y su nacionalidad es ' + unMedicoEspecialista.nacionalidad;
alert(msg);
unMedicoEspecialista.mostrarNacionalidad();
}
</script>
</head>
<body>
<div id="cabecera"><h2>Cursos aprenderaprogramar.com</h2></div>
<div id ="pulsador" onclick="ejemploObjetos()"> Probar </div>
</body>
</html>
EJERCICIO 2
Crea un código que represente el siguiente esquema de herencia permitiendo instanciar los subtipos pasándole los parámetros necesarios para inicializar las propiedades de los supertipos. Crea un objeto ProfesorTitular profesorTitular1 al que le pases como parámetros 8 (años trabajados), Universidad de León (institución académica), Juan (nombre), e invoca el método saludar sobre este objeto.
(https://aprenderaprogramar.com/images/stories/Cursos/CU011/CU01149E_1.png)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Ejemplo aprenderaprogramar.com</title><meta charset="utf-8">
<script type="text/javascript">
Persona.prototype.definicion = 'Individuo de la especie humana.';
function Persona(nombre){
this.nombre = nombre || 'desconocido';
}
Persona.prototype.saludar = function(tipoProfesor){
alert('Hola, me llamo ' + this.nombre + ' y trabajo en ' + this.institucionAcademica + tipoProfesor);
}
Profesor.prototype = new Persona();
function Profesor(nombre, institucionAcademica){
this.institucionAcademica = institucionAcademica || 'desconocida';
Persona.call(this, nombre);
}
ProfesorInterino.prototype = new Profesor();
ProfesorTitular.prototype = new Profesor();
function ProfesorInterino(mesesContrato, nombre, institucionAcademica){
this.mesesContrato = mesesContrato || 0;
Profesor.call(this, nombre, institucionAcademica);
}
function ProfesorTitular(annosTrabajados, nombre, institucionAcademica){
this.annosTrabajados = annosTrabajados || 0;
Profesor.call(this, nombre, institucionAcademica);
}
function ejemploObjetos(){
var profesorTitular1 = new ProfesorTitular(8, 'Juan', 'Universidad de León');
profesorTitular1.saludar(' desde hace ' + profesorTitular1.annosTrabajados + ' años.');
var profesorInterino1 = new ProfesorInterino(12, 'Luis', 'Universidad Autónoma de Madrid');
profesorInterino1.saludar(' durante ' + profesorInterino1.mesesContrato + ' meses.');
}
</script>
</head>
<body>
<div id="cabecera"><h2>Cursos aprenderaprogramar.com</h2><h3>Ejemplos JavaScript</h3></div>
<div style="color:blue;" id ="pulsador" onclick="ejemploObjetos()"> Probar </div>
</body>
</html>
,,