Giter Site home page Giter Site logo

devsgeeknerd / cla-por-que-her-con-ass-tao-pol-her-log-ori-obj-com-bas Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 0.0 9 KB

Por Que a Herança Constitui um Assunto Tão Polêmico? — Herança — Lógica Orientado a Objetos - Completo — Fundamentos.

Dart 100.00%

cla-por-que-her-con-ass-tao-pol-her-log-ori-obj-com-bas's Introduction

Por Que a Herança Constitui um Assunto Tão Polêmico?

Conteúdo da Aula:

A aula "Por Que a Herança Constitui um Assunto Tão Polêmico?" explora as controvérsias e debates em torno do uso da herança na programação orientada a objetos (POO).

Embora a herança seja um conceito fundamental da POO, sua aplicação prática tem gerado discussões entre desenvolvedores e arquitetos de software.

Esta aula aborda os pontos de vista a favor e contra a herança, apresentando casos em que a herança pode levar a problemas de design e manutenção de código, além de alternativas como composição e interfaces.

A herança facilita significativamente a vida do desenvolvedor no que diz respeito à manutenção do código.

No entanto, o problema surge quando ela é aplicada de maneira indiscriminada, uma prática comum entre desenvolvedores.

Frequentemente, as classes não apresentam uma relação de "ser", e o desenvolvedor, de forma inadequada, aplica herança entre essas classes.

Essa associação incorreta certamente resultará em problemas futuros, pois qualquer modificação feita na superclasse refletirá diretamente na subclasse.

Se as duas classes não possuem nenhuma relação, as modificações na superclasse podem afetar negativamente as subclasses associadas.

Outro ponto é que os desenvolvedores muitas vezes se esquecem de outros recursos que a orientação a objetos oferece para resolver problemas, como interfaces, sobrescrita e sobrecarga de métodos.

Nesses casos, a herança é aplicada incorretamente, dificultando a manutenção do código, o que é justamente o oposto do esperado.

Além disso, desenvolvedores frequentemente criam o que chamamos de "árvores de herança".

Essas árvores consistem em um conjunto de classes unidas por uma cadeia de herança.

Por exemplo, uma classe D herda de uma classe C, que herda de uma classe B, que herda de uma classe A.

Deve-se tomar muito cuidado com árvores de herança extensas, pois a manutenção do código dessas classes é extremamente complexa.

Qualquer alteração em um membro da árvore propagará suas modificações para todos os seus descendentes.

De maneira geral, dois ou três níveis em uma árvore de herança são suficientes para resolver problemas de arquitetura de software.

Objetivos de Aprendizagem

  • Compreender a Polêmica em Torno da Herança:

    • Identificar as razões pelas quais a herança é um tema controverso na POO;
    • Analisar os argumentos a favor e contra o uso da herança.
  • Reconhecer os Problemas Potenciais da Herança:

    • Compreender como a herança pode levar a problemas como acoplamento forte, hierarquias rígidas e dificuldades de manutenção;
    • Estudar casos reais onde a herança causou problemas de design.
  • Explorar Alternativas à Herança:

    • Investigar alternativas à herança, como composição e uso de interfaces;
    • Avaliar quando e como aplicar essas alternativas em vez de herança.
  • Desenvolver Boas Práticas:

    • Aprender boas práticas para evitar os problemas comuns associados à herança;
    • Desenvolver habilidades para decidir de forma crítica quando usar herança ou suas alternativas.

Conteúdo Programático:

  • Introdução à Polêmica da Herança:

    • História e evolução do uso da herança na POO;
    • Visão geral das opiniões divergentes sobre a herança.
  • Argumentos a Favor da Herança:

    • Reutilização de código;
    • Criação de hierarquias lógicas e organizadas;
    • Facilidade de implementação de comportamento comum.
  • Argumentos Contra a Herança:

    • Acoplamento forte entre classes;
    • Problemas com hierarquias rígidas e inflexíveis;
    • Dificuldades de manutenção e evolução de código;
    • Problemas com a reutilização de código em contextos diferentes.
  • Problemas Comuns Associados à Herança:

    • Exemplo de problema1:
      • Aumento da complexidade e dificuldade de manutenção em hierarquias profundas.
    • Exemplo de problema2:
      • Fragilidade da base de código devido a alterações na superclasse afetando todas as subclasses.
  • Alternativas à Herança:

    • Composição:
      • Definição e comparação com herança;
      • Vantagens e desvantagens;
      • Exemplos práticos.
    • Interfaces:
      • Definição e uso em comparação com herança;
      • Vantagens e desvantagens;
      • Exemplos práticos.
  • Boas Práticas no Uso da Herança:

    • Diretrizes para decidir quando usar herança;
    • Exemplos de boas práticas no design de hierarquias de classes;
    • Estratégias para minimizar os problemas da herança.
  1. Exemplo Prático.

ℹ Informações

Visitors   Followers   Watchers   Stars   Forks   Repo Size   License

cla-por-que-her-con-ass-tao-pol-her-log-ori-obj-com-bas's People

Contributors

devsgeeknerd avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.