Abstraction and Program Design · Abstraction et conception de programmes
| English | Français |
|---|---|
| abstraction/əbˈstrækʃn/ | abstraction |
| procedural abstraction/prəˈsiːdʒərəl əbˈstrækʃn/ | l'abstraction procédurale |
| method decomposition/ˈmeθəd ˌdiːkɒmpəˈzɪʃn/ | décomposition de méthode |
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.
Cacher les détails
- L'abstraction 抽象 signifie cacher les détails pour se concentrer sur l'idée principale.
- Vous conduisez une voiture avec le volant et les pédales — pas en connaissant l'architecture interne du moteur.
- En programmation, l'abstraction vous permet d'utiliser quelque chose par ce qu'il fait, pas comment.
- C'est l'idée la plus importante pour gérer de gros programmes.
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.
Abstraction procédurale
- L'abstraction procédurale 过程抽象 encapsule un comportement dans une méthode que vous appelez par nom.
- Une fois écrite,
average(scores)est utilisée pour son résultat — le code à l'intérieur est caché. - Le nom de la méthode et ses paramètres (son interface) sont tout ce dont un appelant a besoin.
- C'est exactement ainsi que vous utilisez les méthodes de bibliothèque comme
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.
Décomposition en méthodes
- Divisez un gros problème en petits comportements, chacun sa propre méthode — décomposition en méthodes 方法分解.
- « Traiter une commande » →
checkStock(),chargeCard(),ship(). - De petites méthodes nommées sont plus faciles à écrire, tester et réutiliser.
- La méthode principale se lit alors comme un résumé de haut niveau.
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.
Planifier une classe
- Pour concevoir une classe, décidez quelles données elle contient et quels comportements elle offre.
- Un
Studenta des données (nom, notes) et des comportements (addScore,average). - Une bonne conception regroupe les données et comportements liés ensemble.
- Planifier au préalable rend un programme plus facile à construire, lire et réutiliser.
Interface or implementation? · Interface ou implémentation ?
Abstraction hides the how behind a simple what. Sort each item. · L'abstraction cache le comment derrière un quoi simple. Trier chaque élément.
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.
L'abstraction concerne l'interface, pas l'implémentation. Un appelant de average(scores) a besoin uniquement de son nom, de ses entrées et de son résultat — jamais de la boucle à l'intérieur. Concevez chaque méthode pour accomplir une tâche claire (décomposition en méthodes) ; une méthode qui fait cinq choses non liées est difficile à nommer, tester et réutiliser. Planifiez une classe comme données + comportements avant d'écrire du code.
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.
Concevoir une classe Student :
- Données : le nom de l'étudiant et une liste de notes.
- Comportements :
addScore(s),average(),highest(). - Un appelant utilise
student.average()pour son résultat — le calcul est caché à l'intérieur.
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.
L'abstraction cache les détails pour se concentrer sur l'idée principale ; l'abstraction procédurale vous permet d'utiliser une méthode par ce qu'elle fait, pas comment. La décomposition en méthodes divise un gros problème en petits comportements nommés. Concevez une classe en décidant ses données et ses comportements — une bonne conception rend le code plus facile à construire, lire et réutiliser.
Abstraction is best described as... · L'abstraction est mieux décrite comme...
Abstraction hides how something works so you can use what it does. · L'abstraction cache le fonctionnement de quelque chose pour que vous puissiez utiliser ce qu'il fait.
Procedural abstraction lets you use a method by... · L'abstraction procédurale permet d'utiliser une méthode en...
You call it by name and inputs, not by its internals. · Vous l'appelez par son nom et ses entrées, pas par son contenu interne.
Breaking a big problem into smaller named behaviors (methods) is called method ___ (one word). · Diviser un gros problème en petits comportements nommés (méthodes) s'appelle la décomposition de méthodes (un mot).
Method decomposition splits work into focused methods. · La décomposition de méthodes divise le travail en méthodes ciblées.
When designing a class, which should you decide? · Lors de la conception d'une classe, quelle décision prendre ?
Design is about data + behaviors, grouped sensibly — not addresses. · La conception concerne les données + comportements, regroupés logiquement — pas les adresses.
Good program design makes a program easier to build, read, and reuse. · Une bonne conception de programme facilite la construction, la lecture et la réutilisation.
That's the payoff of abstraction and decomposition. · C'est le gain de l'abstraction et de la décomposition.