Abstraction
Designing and building things that work is at the heart of engineering. Engineers have to work together in teams to build complex systems, whether software, hardware, cars, planes, or bridges. This complexity is a major source of engineering cost and errors. With the wrong engineering approach, every team member can end up needing to understand every other team member's work, which means the total effort requires to build a system of size n is proportional to n2! The solution to complexity is abstraction, also known as information hiding. Abstraction is simply the removal of unnecessary detail. The idea is that to design a part of a complex system, you must identify what about that part others must know in order to design their parts, and what details you can hide. The part others must know is the abstraction. Programming languages like Java are designed to support you in creating abstractions. You are already familiar with one kind of abstraction, a function abstraction. Every time yo
Abstraction Abstraction Topics: What is abstraction/information hiding? Function abstraction Clients vs. implementers Data abstraction Abstract Data Types (ADTs) ADTs via visibility qualifiers ADTs via Java interfaces Programming with interfaces Designing and building things that work is at the heart of engineering. Engineers have to work together in teams to build complex systems, whether software, hardware, cars, planes, or bridges. This complexity is a major source of engineering cost and errors. With the wrong engineering approach, every team member can end up needing to understand every o
related reading
- Abstraction (computer science) - Wikipediaen.wikipedia.org
- 17. Abstract Class - CS2030S Programming Methodology IInus-cs2030s.github.io
- Information hidingen.wikipedia.org
- Up and Down the Ladder of Abstractionworrydream.com
- The Wrong Abstraction - Sandi Metzsandimetz.com
- That's not an abstraction, that's just a layer of indirectionfhur.me
- Structure and Interpretation of Computer Programsmitp-content-server.mit.edu
- Reading 7: Abstraction Functions & Rep Invariantsweb.mit.edu
- Reading 11: Abstraction Functions & Rep Invariantsweb.mit.edu
- Everything I know about good system designseangoedecke.com
- 3. Functions - CS2030S Programming Methodology IInus-cs2030s.github.io
- The Law of Leaky Abstractions – Joel on Softwarejoelonsoftware.com