Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: paramonso en 08 de Enero 2018, 18:39

Título: JavaScript implementar esquema de herencia usando prototype propiedades CU01149E
Publicado por: paramonso en 08 de Enero 2018, 18:39
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.  ;)
Título: Re:ejercicio CU01149E
Publicado por: Ogramar 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
Título: Re:ejercicio CU01149E
Publicado por: paramonso 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.
 ;)
Título: Re:JavaScript implementar esquema de herencia usando prototype propiedades CU01149E
Publicado por: Ogramar en 15 de Julio 2018, 10:55
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