Day in and day out, you probably depend on many different sorts of complex technological tools and innovations. Luckily, the modern world has embraced some sense of user-focused design in many of its products, so you should not need an engineering degree to operate a microwave oven or create a spreadsheet on your laptop. The most popular technology “just works” and does not require you to toil over hundreds of densely-packed pages of a user manual.
Imagine sitting comfortably at home. You call a friend on your cell phone. A lot of technology is at work behind the scenes in those few seconds before your friend answers. This hidden machinery allows you and your friend to speak nearly instantly—no matter where either of you are on the planet. You—and most cell phone users—can remain blissfully unaware of everything that happens to process a mobile call.
Similarly, programmers need not know the ins and outs of every single method or class they use. For example, you have used the String class in this course but understand only how to create a String and how to perform various operations on that String object. You have not had to concern yourself with the details of how the String keeps track of the characters in the string, the ordering of those characters, or the efficient processing of the collection of characters. Just like the cell phone user, you are likely most familiar with the interface of the tool rather than its inner workings. If you found another Java class that allowed you to manage strings of characters, you could adopt it quickly, much like you could change cell phone carriers. You count on your tools to make your job easier—and you are not sweating the details.
When you adopt classes from another user or library, and you are completely oblivious to what is happening “behind the scenes,” you are definitely working with a loosely-coupled program. Users of such programs often remark, “I am not sure how it works but it works.” They do not need to tear the code of the application apart and learn how it accomplishes its task, and this is ideal. A loosely-coupled program does not depend on a specific context to run correctly. These applications can be swapped without affecting a program; they are wholly self-contained and can easily be scooped out of an application without leaving carnage in their wakes.
By Day 3, think about a real-life process or activity that exemplifies loose coupling, and explain your answer based on this week’s reading. Describe how the process or activity could easily be replaced without affecting your daily life.