I am a veteran C++ programmer. This year I decided to seriously take of the challenge of learning to program in Java. Now I am starting to see that many object oriented topics are universal. They are language independent. Yes this might be obvious to some. But given my long history with C++, I always seemed to think of the principles in terms of how C++ implements them. Here I will discuss some of these universal topics that I recalled by reading a book by Grady Booch.
An abstraction denotes the essential characteristics of an object. Encapsulation divides structure and behavior. It separates interfaces and implementation. This is all done through information hiding. Modularity refers to decomposes complexity into separate products.
Abstractions are related in a hierarchical manner. One example of this is multiple inheritance. You can receive behavior from more than one source. Another example is aggregation. This is a fancy way of stating that something contains something else.
Typing is enforcing a class on an object. It restricts and defines what the object can and can not do. It prevents a programmer from exchanging objects that have different types. This is a safety feature. Most of the time, if you try to assign something of the wrong type to something else, you have a bug.
Like I mentioned earlier, I am learning Java programming. Unfortunately we are learning the basics of the programming language. So we have not covered some of the deeper topics like inheritance. However a good thing about this is that we are taking it from the very top. So we are covering basic things such as encapsulation and abstraction.
Salary Comparison Failure - Read a post that stated top bug bounty hunters make 3X the salary of average developers. Umm what? Who cares what those top people make? You got to compar...