Postagens

Mostrando postagens de agosto, 2025

Protegendo segredos através da ocultação da implementação

Até aqui, você viu que uma interface pode ocultar a implementação subjacente de um objeto. Quando oculta a implementação atrás de uma interface, você protege seu objeto de uso não projetado ou destrutivo. Proteger seu objeto de uso não projetado é uma vantagem da ocultação da implementação. Entretanto, existe outro lado na história: os usuários de seus objetos. A ocultação da implementação leva a um projeto mais flexível, pois ela impede que os usuários de seus objetos se tornem fortemente acoplados à implementação subjacente dos objetos. Então, não apenas a ocultação da implementação protege seus objetos, como também protege aqueles que usam seus objetos, estimulando um código fracamente acoplado. Novo Termo O código fracamente acoplado é independente da implementação de outros componentes. Novo Termo O código fortemente acoplado é fortemente vinculado à implementação de outros componentes. Você poderia estar se perguntando, “para que serve código fracamente acoplado?” Quando um recur...

Protegendo seu objeto através do TAD

O Tipo Abstrato de Dados (TAD) não é um conceito novo. Os TADs, junto com a própria OO, cresceu a partir da linguagem de programação Simula, introduzida em 1966. Na verdade, os TADs são decididamente não OO; em vez disso, eles são um subconjunto da OO. Entretanto, os TADs apresentam duas características interessantes: abstração e tipo. É essa idéia de tipo que é importante, pois sem ela, você não pode ter um verdadeiro encapsulamento. O verdadeiro encapsulamento é imposto em nível de linguagem, através de construções internas da linguagem. Qualquer outra forma de encapsulamento é simplesmente um acordo de cavalheiros, que é facilmente malogrado. Os programadores o contornarão porque podem fazer isso! Novo Termo Um TAD é um conjunto de dados e um conjunto de operações sobre esses dados. Os TADs permitem que você defina novos tipos na linguagem, ocultando dados internos e o estado, atrás de uma interface bem definida. Essa interface apresenta o TAD como uma única unidade atômica. Os TADs...

Aprendendo a pensar e programar de forma abstrata

Imagem
Embora as linguagens OO estimulem o encapsulamento, elas não o garantem. E fácil construir código dependente e frágil. O encapsulamento eficaz vem apenas com um projeto cuidadoso, abstração e experiência. Um dos primeiros passos para o encapsulamento eficaz é aprender como abstrair software e os conceitos subjacentes eficientemente. O que é abstração? Abstração é o processo de simplificar um problema difícil. Quando começa a resolver um problema, você não se preocupa com cada detalhe. Em vez disso, você o simplifica, tratando apenas dos detalhes pertinentes a uma solução. Imagine que você tenha de escrever um simulador de fluxo de tráfego. E possível que você modele classes para sinais de trânsito, veículos, condições da pista, auto-estradas, ruas de mão dupla, ruas de mão única, condições climáticas etc. Cada um desses elementos afetaria o fluxo do tráfego. Entretanto, você não modelaria insetos e pássaros no sistema, mesmo que eles possam aparecer em uma via real. Além disso, você om...

Os três pilares da programação orientada a objetos

Imagem
Para edificar seu entendimento e domínio de OO, você deve primeiro ter uma base sólida a partir da qual possa expandir sua compreensão. Primeiro, você precisará identificar, definir e explorar os conceitos básicos da OO. Somente quando você tiver uma boa base das teorias básicas de OO é que poderá aplicá-la corretamente no software que escrever. Tal discussão o leva naturalmente aos três conceitos que devem estar presentes para que uma linguagem seja considerada realmente orientada a objetos. Esses três conceitos são frequentemente referidos como os três pilares da programação orientada a objetos. Novo Termo Os três pilares da programação orientada a objetos são: encapsulamento, herança e polimorfismo. Como a POO é baseada neles, os três pilares são semelhantes a uma torre de blocos: remova o bloco inferior e tudo mais virá abaixo. O encapsulamento, que você abordará hoje, é uma peça extremamente importante do quebra-cabeça, pois ele forma a base da herança e do polimorfismo.  Enca...

Armadilhas da POO

Quando você aprende OO pela primeira vez, existem quatro armadilhas que precisa evitar. Armadilha 1: pensar na POO simplesmente como uma linguagem Frequentemente, as pessoas equiparam linguagens orientadas a objetos com a POO. O erro surge ao supor que você está programando de maneira orientada a objetos simplesmente porque usa uma linguagem orientada a objetos. Nada poderia estar mais distante da realidade.  A POO é muito mais do que simplesmente usar uma linguagem orientada a objetos ou conhecer certo conjunto de definições. Você pode escrever código horrivelmente não orientado a objetos em uma linguagem orientada a objetos. A verdadeira POO é um estado da mente que exige que você veja seus problemas como um grupo de objetos e use encapsulamento, herança e polimorfismo corretamente.  Infelizmente, muitas empresas e programadores supõem que, se simplesmente usarem uma linguagem orientada a objetos, se beneficiarão de todas as vantagens que a POO oferece. Quando falham, elas t...

Vantagens e objetivos da POO

A programação orientada a objetos define seis objetivos sobrepostos para desenvolvimento de software. A POO se esmera em produzir software que tenha as seguintes características: 1. Natural  2. Confiável  3. Reutilizável  4. Manutenível  5. Extensível  6. Oportunos Vamos ver como ela funciona para atender cada um desses objetivos. Natural A POO produz software natural. Os programas naturais são mais inteligíveis. Em vez de programar em termos de regiões de memória, você pode programar usando a terminologia de seu problema em particular. Você não precisa se aprofundar nos detalhes do computador enquanto projeta seu programa. Em vez de ajustar seus programas para a linguagem do mundo dos computadores, a OO o libera para que expresse seu programa nos termos de seu problema. A programação orientada a objetos permite que você modele um problema em um nível funcional e não em nível de implementação. Você não precisa saber como um software funciona, para usá-lo: você s...