My first OO language was Smalltalk ported to an 8085 computer.
Then I started applying OO concepts to C. A Class is a file in C. Hide the data structures by not exporting them. Only allow exported procedures to alter the data structure. Functions returning an "object" actually only return an address which is what C uses. Definitely not safe! You do need routines to allocate an object and to deallocate the object.
I believe that the main reason you do not hear more about OO was that when it was a hot topic for managers they saw that Smalltalk (either VisualWorks or VisualAge) cost over $3500 per programmer. C++ cost about $350 per programmer. They saw the ads claiming C++ was "OO" so they bought C++. Their programmers continued to write C code and compiled it with a C++ compiler. The result was none of the benefits they expected from OO.
I do not believe Java is OO, despite the claims.
To actually learn OO a programmer has to change the way he thinks. A true paradigm shift. Chubb & Sons Insurance did it right. They sent their teams to a two week wonder course. Each developer was given his own set of books on the subject. But even more importantly, they hired mentors to work with the teams and help them change how they think. I was the mentor for the Insurance Underwriter Workbench for South America. We used VisualAge running on OS2 with DB2 as a database. I found it takes about 2½ years for the developers to change how they think.
On a Mac I used Squeak which runs fine on Darwin (highly hacked FreeBSD) with X11. On Sun System 3 running Unix V I used VisualWorks. On HP workstations running Univ V we used Visual Works. VisualWorks from Cincom.com is what I use for day to day tasks on Ubuntu MATE 18.04. Squeak and Pharo are also available on Ubuntu.
Smalltalk requires a virtual machine and three files (an image file, a sources file, and a changes file). The image file contains all the objects in the developers' machine at the time the deployed image was created. In fact, the hardest part when deploying an app is removing all the developer classes and objects not used by the application. The sources file contains the source code for all the methods in the image when it was deployed. As you add/change objects and methods, all the changes are recorded in the changes file. When the image becomes corrupted (and it will), the changes file allows you to create a new image with all your work intact. There is also a Change Set Browser which records all changes in methods, making recovery relatively easy.
The Smalltalk IDE blows away all the others I've looked at. The System Browser shows you all packages, classes, and methods (including source code) for everything in your current image. There is a Package Browser which allows you to view all packages in the community repository and install them in your image.
I recommend installing the Personal Usage License (PUL) version of VisualWorks from Concom.com. They do hide some classes (such as the compiler) and although they are supposed to use OpenSS, you cannot build a bot that uses https:// URLs.
In my opinion their debugger is far superior to Squeak's; and light-years ahead of anything for Python, Haskell, Prolog, Lisp, or APL.
I also recommend installing Squeak. Their tutorials are better and Squeak bots can access https:// URLs.
Try using Smalltalk for a while and see what you can do.
I also believe every developer should be a polymath. They should have experience with an imperative language (C then Python - not C++ or Java), an OO language (Smalltalk), an Functional Programming language (Haskell), a Logic Programming language (Prolog), an array processing language (APL), a Symbolic Processing language (Lisp), and Forth.
Program design is about what is possible. A problem may be difficult using one paradigm and trivial using another. Expanding your vision will also help you see deficiencies in current programs. SPICE is the standard circuit simulation software. Expresso written in APL is 1000 times faster.
Robert Pearson