Abstraction and Program Design · Abstração e Projeto de Programas
| English | Português |
|---|---|
| abstraction/əbˈstrækʃn/ | abstração |
| procedural abstraction/prəˈsiːdʒərəl əbˈstrækʃn/ | abstração procedural |
| method decomposition/ˈmeθəd ˌdiːkɒmpəˈzɪʃn/ | decomposição de método |
Hiding the details
- Abstraction 抽象 means hiding details to focus on the main idea.
- You drive a car by the steering wheel and pedals — not by knowing the engine's internals.
- In code, abstraction lets you use something by what it does, not how.
- It's the single most important idea for managing large programs.
Ocultando os detalhes
- Abstração 抽象 significa esconder detalhes para focar na ideia principal.
- Você dirige um carro pelo volante e pedais — não sabendo os detalhes internos do motor.
- Em código, abstração permite usar algo pelo o que ele faz, não como.
- É a ideia mais importante para gerenciar programas grandes.
Procedural abstraction
- Procedural abstraction 过程抽象 packages a behavior into a method you call by name.
- Once written,
average(scores)is used for its result — the code inside is hidden. - The method name and parameters (its interface) are all a caller needs.
- This is exactly how you use library methods like
Math.sqrt.
Abstração procedural
- Abstração procedural 过程抽象 empacota um comportamento em um método que você chama por nome.
- Uma vez escrito,
average(scores)é usado por seu resultado — o código interno fica oculto. - O nome do método e os parâmetros (sua interface) são tudo que um chamador precisa.
- Isso é exatamente como você usa métodos de biblioteca como
Math.sqrt.
Method decomposition
- Break a big problem into smaller behaviors, each its own method — method decomposition 方法分解.
- "Process an order" →
checkStock(),chargeCard(),ship(). - Small, named methods are easier to write, test, and reuse.
- The main method then reads like a high-level summary.
Decomposição de métodos
- Divida um problema grande em comportamentos menores, cada um sendo seu próprio método — decomposição de métodos 方法分解.
- "Processar um pedido" →
checkStock(),chargeCard(),ship(). - Métodos pequenos e nomeados são mais fáceis de escrever, testar e reutilizar.
- O método principal então lê como um resumo de alto nível.
Planning a class
- To design a class, decide what data it holds and what behaviors it offers.
- A
Studenthas data (name, scores) and behaviors (addScore,average). - Good design groups related data and behavior together.
- Planning first makes a program easier to build, read, and reuse.
Planejamento de uma classe
- Para projetar uma classe, decida quais dados ela armazena e quais comportamentos ela oferece.
- Uma
Studenttem dados (nome, notas) e comportamentos (addScore,average). - Um bom design agrupa dados e comportamentos relacionados juntos.
- Planejar primeiro torna um programa mais fácil de construir, ler e reutilizar.
Interface or implementation? · Interface ou implementação?
Abstraction hides the how behind a simple what. Sort each item. · Abstração esconde o como atrás de um simples o quê. Ordene cada item.
Abstraction is about the interface, not the implementation. A caller of average(scores) needs only its name, inputs, and result — never the loop inside. Design each method to do one clear job (method decomposition); a method that does five unrelated things is hard to name, test, and reuse. Plan a class as data + behaviors before writing code.
Abstração trata da interface, não da implementação. Um chamador de average(scores) precisa apenas de seu nome, entradas e resultado — nunca do loop interno. Projete cada método para fazer um trabalho claro (decomposição de método); um método que faz cinco coisas não relacionadas é difícil de nomear, testar e reutilizar. Planeje uma classe como dados + comportamentos antes de escrever o código.
Designing a Student class:
- Data: the student's name and a list of scores.
- Behaviors:
addScore(s),average(),highest(). - A caller uses
student.average()for its result — the calculation is hidden inside.
Projetando uma classe Student:
- Dados: o nome do aluno e uma lista de notas.
- Comportamentos:
addScore(s),average(),highest(). - Um chamador usa
student.average()para seu resultado — o cálculo fica oculto internamente.
Abstraction hides details to focus on the main idea; procedural abstraction lets you use a method by what it does, not how. Method decomposition breaks a big problem into small, named behaviors. Design a class by deciding its data and behaviors — good design makes code easier to build, read, and reuse.
Abstração esconde detalhes para focar na ideia principal; abstração procedural permite usar um método pelo o que ele faz, não como. Decomposição de métodos divide um problema grande em comportamentos pequenos e nomeados. Projete uma classe decidindo seus dados e comportamentos — um bom design torna o código mais fácil de construir, ler e reutilizar.
Abstraction is best described as... · Abstração é melhor descrita como...
Abstraction hides how something works so you can use what it does. · Abstração esconde como algo funciona para que você possa usar o que ele faz.
Procedural abstraction lets you use a method by... · Abstração procedural permite que você use um método através de...
You call it by name and inputs, not by its internals. · Você o chama pelo nome e entradas, não por seus internos.
Breaking a big problem into smaller named behaviors (methods) is called method ___ (one word). · Quebrar um problema grande em comportamentos menores nomeados (métodos) é chamado de decomposição de ___ (uma palavra).
Method decomposition splits work into focused methods. · Decomposição de método divide o trabalho em métodos focados.
When designing a class, which should you decide? · Ao projetar uma classe, o que você deve decidir?
Design is about data + behaviors, grouped sensibly — not addresses. · Projeto trata de dados + comportamentos, agrupados sensivelmente — não endereços.
Good program design makes a program easier to build, read, and reuse. · Bom projeto de programa torna um programa mais fácil de construir, ler e reutilizar.
That's the payoff of abstraction and decomposition. · Esse é o retorno da abstração e decomposição.