Menu
Coddy logo textTech

A relação "é um"

Parte da seção Programação Orientada a Objetos do Journey de JavaScript da Coddy — lição 25 de 56.

A relação "é-um" é um teste simples para determinar quando a herança faz sentido. Se você pode dizer "X é um Y" e isso soa correto, então X provavelmente deve herdar de Y.

Correto (Use Herança):

  • "Um Cachorro é um Animal" → class Dog extends Animal
  • "Um Carro é um Veículo" → class Car extends Vehicle
  • "Um Livro Didático é um Livro" → class Textbook extends Book

Incorreto (Não use herança):

  • "Um Driver é um Car" → Não, um driver usa um car
  • "Uma Roda é um Carro" → Não, uma roda é parte de um carro
  • "Um Aluno é uma Sala de Aula" → Não, um aluno está em uma sala de aula

Por exemplo, vamos considerar dois objetos:

// Classe base - o que todos eles SÃO
class Book {
  constructor(title, author, pages) {
    this.title = title;
    this.author = author;
    this.pages = pages;
  }
  
  read() {
    console.log(`Reading ${this.title} by ${this.author}`);
  }
}
// Um Novel É-UM Book (herança correta)
class Novel extends Book {
  constructor(title, author, pages, genre) {
    super(title, author, pages);
    this.genre = genre;
  }
}
// Usando as classes
const fiction = new Novel("1984", "George Orwell", 328, "Dystopian");
fiction.read();    // "Reading 1984 by George Orwell" - herdado de Book
challenge icon

Desafio

Você recebeu uma classe ElectronicDevice e uma classe Smartphone. Um Smartphone é um tipo de ElectronicDevice com recursos adicionais. Sua tarefa é criar um objeto `myPhone` com a marca "Samsung" e o modelo “Galaxy S23”.

Folha de consulta

O relacionamento "é-um" é um teste para determinar quando a herança faz sentido. Se você puder dizer "X é um Y" e soar correto, então X deve herdar de Y.

Exemplos corretos (use herança):

  • "Um Cachorro é um Animal" → class Dog extends Animal
  • "Um Carro é um Veículo" → class Car extends Vehicle
  • "Um Livro Didático é um Livro" → class Textbook extends Book

Exemplos incorretos (não use herança):

  • "Um Motorista é um Carro" → Não, um motorista usa um carro
  • "Uma Roda é um Carro" → Não, uma roda faz parte de um carro
  • "Um Aluno é uma Sala de Aula" → Não, um aluno está em uma sala de aula

Exemplo:

// Classe base
class Book {
  constructor(title, author, pages) {
    this.title = title;
    this.author = author;
    this.pages = pages;
  }
  
  read() {
    console.log(`Reading ${this.title} by ${this.author}`);
  }
}

// Um Romance É-UM Livro (herança correta)
class Novel extends Book {
  constructor(title, author, pages, genre) {
    super(title, author, pages);
    this.genre = genre;
  }
}

const fiction = new Novel("1984", "George Orwell", 328, "Dystopian");
fiction.read();    // "Reading 1984 by George Orwell" - herdado de Book

Experimente você mesmo

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


// TODO: Crie um objeto `myPhone` com a marca "Samsung" e o modelo “Galaxy S23”.


// Código de teste - não modifique
console.log(myPhone.turnOn());  // Deve exibir "Samsung Galaxy S23 is now ON"
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Programação Orientada a Objetos