Menu
CoddyTech

La relación "es-un"

Parte de la sección Programación Orientada a Objetos del Journey de JavaScript de Coddy. Lección 25 de 56.

La relación «es-un» es una prueba sencilla para determinar cuándo tiene sentido la herencia. Si puedes decir «X es un Y» y suena correcto, entonces probablemente X debería heredar de Y.

Correcto (usa herencia):

  • «Un perro es un animal» → class Dog extends Animal
  • "Un automóvil es un vehículo" → class Car extends Vehicle
  • "Un libro de texto es un libro" → class Textbook extends Book

Incorrecto (No uses herencia):

  • «Un conductor es un automóvil» → No, un conductor usa un automóvil
  • «Una rueda es un coche» → No, una rueda forma parte de un coche
  • «Un estudiante es un aula» → No, un estudiante está en un aula

Por ejemplo, consideremos dos objetos:

// Clase base - lo que todos SON
class Book {
  constructor(title, author, pages) {
    this.title = title;
    this.author = author;
    this.pages = pages;
  }
  
  read() {
    console.log(`Reading ${this.title} by ${this.author}`);
  }
}
// Un Novel ES UN Book (herencia correcta)
class Novel extends Book {
  constructor(title, author, pages, genre) {
    super(title, author, pages);
    this.genre = genre;
  }
}
// Uso de las clases
const fiction = new Novel("1984", "George Orwell", 328, "Dystopian");
fiction.read();    // "Reading 1984 by George Orwell" - heredado de Book
challenge icon

Desafío

Se te proporcionan una clase ElectronicDevice y una clase Smartphone. Un Smartphone es un tipo de ElectronicDevice con funciones adicionales. Tu tarea es crear un objeto `myPhone` con la marca "Samsung" y el modelo “Galaxy S23”.

Pruébalo tú mismo

import { ElectronicDevice } from './electronicDevice.js';
import { Smartphone } from './smartphone.js';


// TODO: Crea un objeto `myPhone` de marca "Samsung" y modelo “Galaxy S23”.


// Código de prueba - no lo modifiques
console.log(myPhone.turnOn());  // Debería mostrar "Samsung Galaxy S23 is now ON"
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Programación Orientada a Objetos

Practica por tu cuenta: Compilador de JavaScript online