Autor Tema: JavaScript código ejemplo implementar cadena de herencia usando call CU01150E  (Leído 2063 veces)

paramonso

  • Intermedio
  • ***
  • Mensajes: 241
  • El ignorante afirma, el sabio duda y reflexiona.
    • Ver Perfil
Hola. Dejo el código de call JavaScript. Diferencia con apply. Constructores con herencia en cadena. Invocar this. Ejercicio CU01150E  del manual pdf de programación web con JavaScript.

Código: [Seleccionar]
<!DOCTYPE html>

<html>
<head>
<title>Ejemplo aprenderaprogramar.com</title>
<meta charset="utf-8">
<script type="text/javascript">
/* =====================================================================
/* =========================   EJERCICIO 1 =============================
/* ===================================================================== */
function Persona (nombre, nacionalidad)
{
this.nombre = nombre || 'Desconocido';
this.nacionalidad = nacionalidad || 'Desconocida';
}

Persona.prototype.mostrarNacionalidad = function()
{
alert('Hola mi nacionalidad es : '+this.nacionalidad);
}

function Medico (centroTrabajo,nombre, nacionalidad)
{
Persona.call(this,nombre,nacionalidad);
this.centroTrabajo=centroTrabajo || 'Desconocido';
}
Medico.prototype=new Persona();

function medicoEspecialista (especialidad,centroTrabajo,nombre,nacionalidad)
{
Medico.call(this,centroTrabajo,nombre,nacionalidad)
this.especialidad=especialidad || "Desconocida";
}
medicoEspecialista.prototype=new Medico

/* =====================================================================
/* =========================   EJERCICIO 2 =============================
/* ===================================================================== */
function Persona2 (nombre)
{
this.nombre = nombre || 'Nombre desconocido';
this.saludar = function ()
{
alert('Hola, soy ' + this.nombre+"\n");
}
}
Persona2.prototype.definicion = 'Ser humano';

function Profesor (institucionAcademica ,nombre)
{
Persona2.call(this,nombre)
this.institucionAcademica = institucionAcademica || 'Institución desconocida';
}
Profesor.prototype = new Persona2();

function ProfesorInterino(tiempoTrabajado,institucionAcademica,nombre)
{
Profesor.call(this,institucionAcademica,nombre)
this.tiempoTrabajado = tiempoTrabajado || 0;

}
ProfesorInterino.prototype = new Profesor();

function ProfesorTitular(tiempoTrabajado,institucionAcademica,nombre)
{
Profesor.call(this,institucionAcademica,nombre)
this.tiempoTrabajado = tiempoTrabajado || 0;
}
ProfesorTitular.prototype = new Profesor();

/* =====================================================================
/* ========================= FIN EJERCICIO 2  ==========================
/* ===================================================================== */
function ejemploObjetos()
{
var Especialista1=new medicoEspecialista("Dentista","Los Guinchos","Pascual","España")
Especialista1.mostrarNacionalidad();
var Especialista2=new medicoEspecialista("Traumatologo","","","Argentina");
var Especialista3=new medicoEspecialista("","Breña Baja","Ramiro Gutierrez","Chile");

msg="";
msg=msg+"EJERCICIO 1\n\n";

msg=msg+"Especialidad: "+Especialista1.especialidad+"\n"+"Centro medico: "+Especialista1.centroTrabajo+"\n";
msg=msg+"Me Llaman: "+Especialista1.nombre+"\n"+"Mi Nacionalidad es : "+Especialista1.nacionalidad+"\n\n";

msg=msg+"Especialidad: "+Especialista2.especialidad+"\n"+"Centro medico: "+Especialista2.centroTrabajo+"\n";
msg=msg+"Me Llaman: "+Especialista2.nombre+"\n"+"Mi Nacionalidad es : "+Especialista2.nacionalidad+"\n\n";

msg=msg+"Especialidad: "+Especialista3.especialidad+"\n"+"Centro medico: "+Especialista3.centroTrabajo+"\n";
msg=msg+"Me Llaman: "+Especialista3.nombre+"\n"+"Mi Nacionalidad es : "+Especialista3.nacionalidad+"\n\n";
presentarDatos(msg)

//************************
//Presentar datos del Ejercicio 2
//************************
msg="";
var ProfesorTitular1 =new ProfesorTitular(8,"Universidad de León","Juan");
ProfesorTitular1.saludar();
msg=msg+"Hola soy un Profesor Titular y mi Nombre es : "+ ProfesorTitular1.nombre+"\n";
msg=msg+"Estudie en: "+ ProfesorTitular1.institucionAcademica+"\n";
msg=msg+"Y los años trabajados son: "+ ProfesorTitular1.tiempoTrabajado+"\n";
msg=msg+"Soy un :"+ ProfesorTitular1.definicion+"\n\n";
var ProfesorInterino =new ProfesorTitular('22',"Universidad de Salamanca","Patrocinio");
msg=msg+"Hola soy un Profesor interino y mi Nombre es : "+ ProfesorInterino.nombre+"\n";
msg=msg+"Estudie en: "+ ProfesorInterino.institucionAcademica+"\n";
msg=msg+"Y tengo "+ ProfesorInterino.tiempoTrabajado +" meses trabajados \n";
msg=msg+"Soy un :"+ ProfesorInterino.definicion+"\n\n";
presentarDatos(msg)
}
function presentarDatos(msg)
{
alert(msg);
}
/* =====================================================================
/* ======================== FIN EJERCICIO =============================
/* ===================================================================== */
</script>

<style type="text/css">
body{background-color:green;}
  h1,h2,h3{
text-align:center;
margin:0;
padding:0;
color:white;
width:300;
height:200;
}

.boton {
border:outset white  2px; 
width:200px;
border-radius:25px 25px;
box-shadow:3px 3px 2px 2px #AFF6AF;
text-align:center;
    background-color:#90EE90;
color:black;
font-size:19px;
margin-top :2px;
margin-left:5px;
margin-bottom:5px;

}
 

 
</style>
</head>
<body>

<div id="cabecera">
<h2>Cursos aprenderaprogramar.com</h2>
<h3>Ejemplos JavaScript</h3></div>
 
<div class="boton" onclick="ejemploObjetos()" >Comprobar</div>
 
</body>
</html>


Gracias.
 ;)
« Última modificación: 10 de Junio 2018, 21:58 por Ogramar »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
Re:Ejercicio CU01150E JavaScript
« Respuesta #1 en: 10 de Junio 2018, 21:57 »
Buenas paramonso, una vez más remitirte a https://aprenderaprogramar.com/foros/index.php?topic=1460.0 donde se indica la forma de poner título a los temas

Ambos ejercicios (el 1 y el 2) los veo bien resueltos

Donde dice medicoEspecialista.prototype=new Medico debería decir medicoEspecialista.prototype=new Medico(); aunque creo que el código lo está aceptando igualmente.

Para quien esté interesado en comprobar el mecanismo de herencia, una simple prueba que se puede hacer es comentar //medicoEspecialista.prototype=new Medico y ejecutar viendo los mensajes de consola. Se obtendrá el error "TypeError: Especialista1.mostrarNacionalidad is not a function"

Salu2

paramonso

  • Intermedio
  • ***
  • Mensajes: 241
  • El ignorante afirma, el sabio duda y reflexiona.
    • Ver Perfil
Re:Ejercicio CU01150E JavaScript
« Respuesta #2 en: 21 de Junio 2018, 17:12 »
Hola Ogramar.
Gracias por corregirme lo de los paréntesis.
En JavaScript los traga sin miramientos en vb.net me llevan de pu.... cu...
Gracias.
 ;)
« Última modificación: 15 de Julio 2018, 10:57 por Ogramar »

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".