Abstraction is the fundamental way to deal with complexity in programming. It allows us to escape from the implementation details and focus on the essential part. A good example of abstraction is the list sort function. It doesn't matter how it works. It just has to do what we need it to do.
Another example is map
and filter
— higher-order functions allowing you to process collections without knowing their internal structure. Moreover, the collection doesn't have to be flat: these functions can be written for structures that are as complex as you like, for example, trees.
Abstractions with functions help you focus on the processing, not the data traversal process. On the other hand, the data themselves often have a complex structure. Presenting a user with a non-trivial system may require you to describe dozens and hundreds of different parameters and data associated with them.
In this situation, we can hide the complex structure behind a set of functions. These functions hide internal complexity and simplify code support. Concealing the details of implementation is called abstraction with data.
In this course, we will learn some basic principles of program design, such as how to model and represent objects in the real life and imaginary world. To demonstrate design, we'll create a library for working with graphical primitives such as points, segments, and shapes. This library is simple for anyone to understand, including visually, and it is easy to represent in code.
The main topics of this course will be:
- Domain Model
- Ontology
- Design levels
- Abstraction barriers
- Invariant
Are there any more questions? Ask them in the Discussion section.
The Hexlet support team or other students will answer you.
For full access to the course you need a professional subscription.
A professional subscription will give you full access to all Hexlet courses, projects and lifetime access to the theory of lessons learned. You can cancel your subscription at any time.