Autor Tema: JavaScript implementar esquema de herencia usando prototype propiedades CU01149E  (Leído 2370 veces)

paramonso

  • Intermedio
  • ***
  • Mensajes: 241
  • El ignorante afirma, el sabio duda y reflexiona.
    • Ver Perfil
Hola. Dejo el ejercicio CU01149E del tutorial gratuito de programación web con JavaScript de aprenderaprogramar. Espero que este biien.  :-\


Código: [Seleccionar]
<!DOCTYPE html>
<html>
<head>
<title>Ejemplo aprenderaprogramar.com</title>
<meta charset="utf-8">
<script type="text/javascript">
/* =====================================================================
/* =========================   EJERCICIO  ==============================
/* ===================================================================== */
function hortalizas ()
{
this.propiedadComun = 'Agua';
this.plantaMovilidad='Ser vivo sin movilidad';
}

hortalizas.prototype.tipoHortaliza = 'Indefinido';
function verduras () { this.nombreCientifico = 'Desconocido'; }
verduras.prototype=new hortalizas;
function tomate(){
this.numCalorias=39;
this.nombreCientifico="Solanum lycopersicum";
this.tipoHortaliza="Herbácea";
}
tomate.prototype=new verduras();

function zanahoria(){
this.numCalorias=45;
this.nombreCientifico="Daucus carota";
this.tipoHortaliza="Apiácea"
}
zanahoria.prototype=new verduras()



function lechuga(){
this.numCalorias=31;
this.nombreCientifico="Lactuca sativa";
this.tipoHortaliza="Herbácea";
}
lechuga.prototype=new verduras();

function pepino(){
this.numCalorias=39;

}
pepino.prototype=new verduras();

function ejemploObjetos()
{
msg='';
var tomate1=new tomate()
var zanahoria1=new zanahoria()
var lechuga1=new lechuga()
var pepino1=new pepino()
presentarDatos(tomate1,zanahoria1,lechuga1,pepino1);
}
function presentarDatos(tomate1,zanahoria1,lechuga1,pepino1){
msg=msg+"El tomate1 <br/><br/>";
msg=msg+"Tiene la Propiedad Comun: "+tomate1.propiedadComun+'<br/>';
msg=msg+"Tiene la propiedad Movilidad: "+tomate1.plantaMovilidad+'<br/>';
msg=msg+"Numero de calorias: "+tomate1.numCalorias+'<br/>' ;
msg=msg+"Nombre Cientifico: "+tomate1.nombreCientifico+'<br/>' ;
msg=msg+"Tipo de Verdura: "+tomate1.tipoHortaliza+'<br/><br/>' ;

msg=msg+"Zanahoria <br/><br/>";
msg=msg+"Tiene la propiedad Comun: "+zanahoria1.propiedadComun+'<br/>';
msg=msg+"Tiene la Movilidad: "+zanahoria1.plantaMovilidad+'<br/>';
msg=msg+"Numero de calorias: "+zanahoria1.numCalorias+'<br/>' ;
msg=msg+"Nombre Cientifico: "+zanahoria1.nombreCientifico+'<br/>' ;
msg=msg+"Tipo de Verdura: "+zanahoria1.tipoHortaliza+'<br/><br/>' ;

msg=msg+"Lechuga<br/><br/>";
msg=msg+"Tiene la propiedad Comun: "+lechuga1.propiedadComun+'<br/>';
msg=msg+"Tiene la Movilidad: "+lechuga1.plantaMovilidad+'<br/>';
msg=msg+"Numero de calorias: "+lechuga1.numCalorias+'<br/>' ;
msg=msg+"Nombre Cientifico: "+lechuga1.nombreCientifico+'<br/>' ;
msg=msg+"Tipo de Verdura: "+lechuga1.tipoHortaliza+'<br/><br/>' ;

msg=msg+"El Pepino <br/><br/>";
msg=msg+"Tiene la propiedad Comun: "+pepino1.propiedadComun+'<br/>';
msg=msg+"Tiene la propiedad Movilidad: "+pepino1.plantaMovilidad+'<br/>';
msg=msg+"Numero de calorias: "+pepino1.numCalorias+'<br/>' ;
msg=msg+"Nombre Cientifico: "+pepino1.nombreCientifico+'<br/>' ;
msg=msg+"Tipo de Verdura: "+pepino1.tipoHortaliza+'<br/>o no<br/> ' ;
document.all.pizarra.innerHTML=msg;
}
/* =====================================================================
/* ===================== FIN DEL 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;

}
.boton, #externa{margin-left:150px;}


.boton:hover {
border:inset 2px green;
box-shadow:3px 3px 2px 2px  #0BF50B ;
    }
#pizarra {

background-color:black;
border:groove red 8px;
border-radius:25px 25px;


color:white;
font-size:19px;
padding:15px;
overflow:hidden;
float:left;
margin-left:10px;
margin-top:10px;
}
#Pizarras{float:left;}
</style>
</head>
<body>

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

</body>
</html>

Hasta el poximo.  ;)
« Última modificación: 10 de Junio 2018, 21:41 por Ogramar »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
Re:ejercicio CU01149E
« Respuesta #1 en: 10 de Junio 2018, 21:40 »
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

El ejercicio no está bien resuelto, al menos no desde el punto de vista de los convenios habituales dentro de la programación. Cuando un texto nos dice "una hortaliza es un tipo de planta cultivada", esto normalmente debe interpretarse como que la hortaliza es una subclase o elemento por debajo en la cadena de herencia de la planta cultivada. A su vez nos dice que la planta cultivada es un tipo de vegetal: idem.

Entonces tendríamos que tener los elementos vegetal (en la cima del esquema), plantaCultivada y hortaliza, y relacionarlos de acuerdo a las indicaciones del enunciado.

Una solución correcta de este ejercicio sería la planteada en https://aprenderaprogramar.com/foros/index.php?topic=3941.0

Salu2

paramonso

  • Intermedio
  • ***
  • Mensajes: 241
  • El ignorante afirma, el sabio duda y reflexiona.
    • Ver Perfil
Re:ejercicio CU01149E
« Respuesta #2 en: 21 de Junio 2018, 16:59 »
Hola Ogramar .
Gracias por corregirme los ejercicios.

Últimamente no tengo tiempo de dedicarme a js y veo que me estas corrigiendo los ejercicios.
Gracias.

En este ultimo no entiendo la corrección que me haces ya que yo en ningún momento he creado un objeto que se llame planta cultivada.

Una planta cultivada es también un árbol y no tiene nada que ver con el ejercicio.

El primer objeto que creo es el Objeto hortaliza.
Con este creo el objeto verdura que es un derivado de la hortaliza.
y dentro de verduras creo pepino, tomate, lechuga, zanahoria.

Hortaliza(Verdura(Pepino)), etc.
Todos los elementos están contenidos dentro de hortalizas.

No se si tu corrección es para decirme que tenia que haber creado un objeto que se llamara vegetales o plantas cultivadas en el cual estuvieran todos los demás.

Gracias.
Un saludo.
 ;)
« Última modificación: 15 de Julio 2018, 10:48 por Ogramar »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
Buenas paramonso, más que correcciones lo que yo planteo son sugerencias o puntos de vista (cada cual puede tener el suyo). En este ejercicio en particular, lo que planteaba es que el enunciado dice lo siguiente: "una hortaliza es un tipo de planta cultivada" y no he visto que tú hayas reflejado esto en un esquema de herencia. Por convenio, cuando se hace un diseño de programación para reflejar un esquema de herencia, una frase como "una hortaliza es un tipo de planta cultivada" se refleja en una relación entre una superclase "planta cultivada" y una subclase "hortaliza". Esta relación no veo que se refleje en tu código. Sin embargo, sí se refleja en el código https://aprenderaprogramar.com/foros/index.php?topic=3941.0 que desde mi punto de vista es más correcto. Es este código un tomate es también una planta cultivada gracias a la relación de herencia.

Salu2

 

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".