Article image
Gabriel Esgalha
Gabriel Esgalha19/02/2024 21:50
Compartilhe

Utilizando Blade Runner para explicar Programação Orientada a Objetos

  • #Orientação a objetos, classes e métodos

A programação orientada a objetos (POO) é um paradigma de organização de código que se baseia no conceito de objetos e classes.

Essa abordagem busca espelhar o mundo real, permitindo a modelagem de entidades complexas por meio da criação de classes que funcionam como moldes para objetos específicos.

Uma excelente forma de compreender esse conceito é explorar o universo do filme Blade Runner, onde podemos utilizar distinção entre humanos e replicantes e diferenciá-los em sua natureza, onde a mera aparência física precisa ser superada e onde é necessário revelar uma questão intricada de comportamento e empatia.

Em Blade Runner, humanos e replicantes coexistem, porém, a diferenciação entre eles muitas vezes escapa ao olhar superficial.

A complexidade dessa distinção é evidenciada pelo Teste Voight-Kampff, uma ferramenta utilizada para detectar a ausência de empatia nos replicantes, uma característica que, até então, era considerada exclusiva dos seres humanos .

Esta dinâmica intricada entre humanos e replicantesno contexto do filme fornece uma analogia rica para ilustrar os conceitos fundamentais da programação orientada a objetos.

No contexto do universo de Blade Runner, podemos criar uma classe comum, chamada EntidadeBiologica, que será a classe base para tanto replicantes quanto humanos .

Classe Base: EntidadeBiologica

class EntidadeBiologica {

constructor(nome, nivelInteligencia, nivelForca, nivelAgilidade) {

  this.nome = nome;

  this.nivelInteligencia = nivelInteligencia;

  this.nivelForca = nivelForca;

  this.nivelAgilidade = nivelAgilidade;

}


realizarTarefa() {

  console.log(`${this.nome} está realizando uma tarefa.`);

}


socializar() {

  console.log(`${this.nome} gosta de socializar.`);

}


// Método que será sobrescrito nas subclasses

passouTesteVoightKampff() {

  // Lógica genérica para ambos (pode ser sobrescrito)

  return true;

}

}

Este código em JavaScript define uma classe chamada EntidadeBiologica que serve como uma estrutura comum para representar entidades biológicas, que podem incluir tanto humanos quanto replicantes .

Agora, vamos diferenciá-los.

Classe para replicantes

class Androide extends EntidadeBiologica {
  constructor(nome, nivelInteligencia, nivelForca, nivelAgilidade, serieModelo) {
      super(nome, nivelInteligencia, nivelForca, nivelAgilidade);
      this.serieModelo = "Nexus";
  }


  hackearSistemas() {
      console.log(`${this.nome} possui a habilidade de hackear sistemas.`);
  }


  // Sobrescreve o método da classe base
  passouTesteVoightKampff() {
      return false; // Androides não passam no teste
  }
}


Classe para humanos

class Humano extends EntidadeBiologica {
  constructor(nome, nivelInteligencia, nivelForca, nivelAgilidade, profissao) {
      super(nome, nivelInteligencia, nivelForca, nivelAgilidade);
      this.profissao = profissao;
  }


  trabalhar() {
      console.log(`${this.nome} está trabalhando como ${this.profissao}.`);
  }


  // Sobrescreve o método da classe base
  passouTesteVoightKampff() {
      return true; // Humanos passam no teste
  }
}


Explicações:

Na abordagem da POO, criamos a classe base EntidadeBiologica, que contém atributos e métodos comuns a ambas as entidades (replicantes e humanos ). Ambas as classes, Androide e Humano, herdam dessa classe base usando o conceito de herança.

Os replicantes, representados pela classe Androide, herdam os atributos e métodos da EntidadeBiologica e adicionam suas características específicas, como a série modelo e a habilidade de hackear sistemas. A sobrescrita do método passouTesteVoightKampff na classe Androide reflete a lógica específica de que replicantes não passam no teste.

Da mesma forma, os humanos , representados pela classe Humano, herdam os atributos e métodos da EntidadeBiologica e incluem suas características distintas, como a profissão. A sobrescrita do método passouTesteVoightKampff na classe Humano reflete a lógica específica de que humanos passam no teste.

Essa abordagem de herança e sobrescrita de métodos permite uma modelagem mais eficiente e organizada, destacando as similaridades e diferenças entre as entidades biológicas no universo de Blade Runner.

Compartilhe
Comentários (2)
Regilene Silva
Regilene Silva - 20/02/2024 10:21

AMEEI!!! Pena que teria que passar esse filme umas 500 vezes pros meu alunos compreenderem a referência. Mas eu, pessoalmente, gostei muito. POO é muito demais! É colocar mais 'tempero' humano no código. Estou estudando SQL e sinto que preciso 'desmamar' do SQLAlchemy (ORM), mas é difícil. Adorei a analogia!

Willian Gomes
Willian Gomes - 20/02/2024 01:02

Muito obrigado por compartilhar!