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: pedro,, en 26 de Octubre 2015, 18:44

Título: Herencia JavaScript Jerarquía de clases: cadena de prototipos Ejercicio CU01149E
Publicado por: pedro,, en 26 de Octubre 2015, 18:44
Hola nuevamente.

Citar
EJERCICIO
Crea un esquema de herencia en JavaScript que refleje estos requisitos:
a) Hay tres tipos de hortalizas: zanahoria, lechuga y tomate. La zanahoria tiene como propiedad su valor calórico que es de 45 cal, mientras que la lechuga tiene 31 cal y el tomate 39 cal.
b) Toda hortaliza tiene como propiedad específica tipoHortaliza y su valor inicial debe ser “indefinido”.
c) Todas las hortalizas tienen una propiedad común: su componente principal: <<Agua>>
c) Una hortaliza es un tipo de planta cultivada. Una planta cultivada tiene como propiedad específica nombreCientifico y su valor inicial debe ser “desconocido”.
d) Una planta cultivada es un tipo de vegetal. Una propiedad de los vegetales es la movilidad y su valor es común para todos los vegetales: <<Ser vivo sin movilidad>>

Escribir el código correspondiente. Haciendo uso de la herencia por prototipos, crear un objeto de tipo tomate al que se denomine tomate1 y hacer que se muestre por pantalla <<tomate1 tiene la propiedad movilidad: Ser vivo sin movilidad>>.

Código: [Seleccionar]
<!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 Vegetal() {this.nombre = ''}
Vegetal.prototype.movilidad = 'Ser vivo sin movilidad';
function PlantaCultivada() { this.nombreCientifico = 'desconocido'; }
PlantaCultivada.prototype = new Vegetal();
function Hortaliza() { this.tipoHortaliza = 'indefinido';}
Hortaliza.prototype = new PlantaCultivada();
Hortaliza.prototype.componentePrincipal = 'Agua';
function Zanahoria() { this.valorCalorico = '45 cal';}
Zanahoria.prototype = new Hortaliza();
function Lechuga(){ this.valorCalorico = '31 cal';}
Lechuga.prototype = new Hortaliza();
function Tomate(){ this.valorCalorico = '39 cal';}
Tomate.prototype = new Hortaliza();
function ejemploObjetos(){
var tomate1 = new Tomate();
tomate1.nombre = 'tomate1';
var zanahoria1 = new Zanahoria();
zanahoria1.nombre = 'zanahoria1';
var lechuga1 = new Lechuga();
lechuga1.nombre = 'lechuga1';
var msg = tomate1.nombre + ' tiene la propiedad movilidad: ' + tomate1.movilidad + '. Su componente principal es el ' + tomate1.componentePrincipal;
alert( msg + ' y tiene un valor Calorico de ' + tomate1.valorCalorico);
msg = zanahoria1.nombre + ' tiene la propiedad movilidad: ' + zanahoria1.movilidad + '. Su componente principal es el ' + zanahoria1.componentePrincipal;
alert( msg + ' y tiene un valor Calorico de ' + zanahoria1.valorCalorico);
msg = lechuga1.nombre + ' tiene la propiedad movilidad: ' + lechuga1.movilidad + '. Su componente principal es el ' + lechuga1.componentePrincipal;
alert( msg + ' y tiene un valor Calorico de ' + lechuga1.valorCalorico);
}
</script>
</head>
<body>
<div id="cabecera"><h2>Cursos aprenderaprogramar.com</h2></div>
<div id ="pulsador" onclick="ejemploObjetos()"> Probar </div>
</body>
</html>
Título: Re:Herencia JavaScript Jerarquía de clases: cadena de prototipos Ejercicio CU01149E
Publicado por: Mario R. Rancel en 28 de Octubre 2015, 08:47
Hola Pedro, todo correcto, bien creada la jerarquía de herencia. Yo hubiera puesto los valores calóricos como numéricos en lugar de como cadenas de texto this.valorCalorico = 45; ya que se trata de valores que podrían usarse en operaciones de cálculo, pero esto en este ejercicio no tiene importancia.

Saludos
Título: Re:Herencia JavaScript Jerarquía de clases: cadena de prototipos Ejercicio CU01149E
Publicado por: pedro,, en 28 de Octubre 2015, 09:09
Ok, lo tendré en cuenta.

Gracias por la corrección.

Saludos.