Abstraction and Program Design · Abstracción y diseño de programas
| English | Español |
|---|---|
| abstraction/əbˈstrækʃn/ | abstracción |
| procedural abstraction/prəˈsiːdʒərəl əbˈstrækʃn/ | abstracción procedural |
| method decomposition/ˈmeθəd ˌdiːkɒmpəˈzɪʃn/ | descomposición de métodos |
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.
Ocultar los detalles
- Abstracción 抽象 significa ocultar detalles para centrarse en la idea principal.
- Conduces un coche por el volante y los pedales, no por conocer los componentes internos del motor.
- En código, la abstracción te permite usar algo por qué hace, no cómo lo hace.
- Es la idea más importante para gestionar 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.
Abstracción procedural
- Abstracción procedural 过程抽象 agrupa un comportamiento en un método que llamas por nombre.
- Una vez escrito,
average(scores)se usa por su resultado — el código interno está oculto. - El nombre del método y sus parámetros (su interfaz) son todo lo que necesita quien lo llama.
- Esto es exactamente como usas métodos de bibliotecas 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.
Descomposición de métodos
- Divide un problema grande en pequeños comportamientos, cada uno en su propio método — descomposición de métodos 方法分解.
- "Procesar un pedido" →
checkStock(),chargeCard(),ship(). - Los métodos pequeños y nombrados son más fáciles de escribir, probar y reutilizar.
- El método principal pasa a leerse como un resumen de alto nivel.
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.
Planificar una clase
- Para diseñar una clase, decide qué datos contiene y qué comportamientos ofrece.
- Un
Studenttiene datos (nombre, puntuaciones) y comportamientos (addScore,average). - Un buen diseño agrupa datos y comportamientos relacionados juntos.
- Planificar primero hace que un programa sea más fácil de construir, leer y reutilizar.
Interface or implementation? · ¿Interfaz o implementación?
Abstraction hides the how behind a simple what. Sort each item. · La abstracción oculta el cómo detrás de un qué simple. Ordena cada elemento.
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.
La abstracción trata sobre la interfaz, no sobre la implementación. Quien llama a average(scores) solo necesita su nombre, entradas y resultado — nunca el bucle interno. Diseña cada método para que haga un trabajo claro (descomposición de métodos); un método que hace cinco cosas no relacionadas es difícil de nombrar, probar y reutilizar. Planifica una clase como datos + comportamientos antes de escribir 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.
Diseño de una clase Student:
- Datos: el nombre del estudiante y una lista de puntuaciones.
- Comportamientos:
addScore(s),average(),highest(). - Quien la usa obtiene el resultado con
student.average()— el cálculo está oculto dentro.
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.
Abstracción oculta detalles para centrarse en la idea principal; abstracción procedural te permite usar un método por qué hace, no cómo. Descomposición de métodos divide un problema grande en pequeños comportamientos nombrados. Diseña una clase decidiendo su datos y comportamientos — un buen diseño hace que el código sea más fácil de construir, leer y reutilizar.
Abstraction is best described as... · La abstracción se describe mejor como...
Abstraction hides how something works so you can use what it does. · La abstracción oculta cómo funciona algo para que puedas usar lo que hace.
Procedural abstraction lets you use a method by... · La abstracción procedural te permite usar un método mediante...
You call it by name and inputs, not by its internals. · Lo llamas por nombre e inputs, no por sus internals.
Breaking a big problem into smaller named behaviors (methods) is called method ___ (one word). · Dividir un problema grande en comportamientos pequeños con nombres (métodos) se llama ___ de método (una palabra).
Method decomposition splits work into focused methods. · La descomposición de métodos divide el trabajo en métodos enfocados.
When designing a class, which should you decide? · Al diseñar una clase, ¿qué deberías decidir?
Design is about data + behaviors, grouped sensibly — not addresses. · El diseño trata sobre datos + comportamientos, agrupados sensiblemente — no direcciones.
Good program design makes a program easier to build, read, and reuse. · Un buen diseño de programas hace que un programa sea más fácil de construir, leer y reutilizar.
That's the payoff of abstraction and decomposition. · Esa es la recompensa de la abstracción y la descomposición.