Clase Libro con Composición
Parte de la sección Programación Orientada a Objetos del Journey de JavaScript de Coddy — lección 51 de 56.
Desafío
Crear la clase Book con composición
Tu tarea:
- En el archivo llamado
Book.jsimporta la claseAuthoren la parte superior - Crea y exporta una clase
Bookcon:- Campos privados:
#title,#author,#isCheckedOut - Un constructor que acepte
titleyauthor - Dos getters:
titleyauthorInfoque devuelva el nombre del autor
- Campos privados:
- En
main.js, añade la importación para la claseBook
Cómo se aplica la composición aquí:
La composición significa una relación de tipo "tiene-un". En nuestra clase Book:
- Book TIENE-UN Author (no "es-un" Author)
- El Book contiene una instancia de Author como uno de sus componentes
- El Author existe por separado y puede ser utilizado por múltiples Books
- Esto es composición: construir objetos complejos (Book) a partir de otros más simples (Author)
Pruébalo tú mismo
import { Author } from './Author.js';
// TODO: Importar la clase Book
// Pruebas
const author = new Author('J.K. Rowling');
const book = new Book('Harry Potter', author);
console.log('Book title:', book.title); // Debería mostrar: "Book title: Harry Potter"
console.log('Author:', book.authorInfo); // Debería mostrar: "Author: J.K. Rowling"Todas las lecciones de Programación Orientada a Objetos
1Objetos y la palabra clave this
Repaso rápido: ObjetosAgregar métodos a los objetosEntendiendo la palabra clave thisFunciones constructorasLa palabra clave newDesafío de repaso7Herencia y la palabra clave extends
HerenciaLa relación "es-un"La palabra clave extendsEl método super()Heredar propiedades y métodosDesafío de repaso13Composición vs. Herencia
La relación "tiene-un" vs. "es-un"Los límites de la herencia profundaConstrucción de objetos2Organización del código
¿Qué son los módulos?Exportar con exportImportar con importExportaciones por defecto vs. nombradas5Encapsulamiento y Acceso
EncapsulamientoCampos de clase públicos y privadosMétodos privadosDesafío de repaso8Organización del código OOP
Organizar clases en módulos11Proyecto: Un renderizador de figuras
Configuración: Clase Figura y exportaciónHerencia de la clase Círculo14Sistema de Gestión de Biblioteca
Diseño de la BibliotecaClase Libro con Composición9Métodos y propiedades estáticos
Nivel de clase vs. Nivel de instanciaPropiedades estáticasMétodos de utilidad estáticosDesafío de repaso