17 hours ago
- Ada breaks object-oriented programming into separate features like encapsulation, reuse, inheritance, abstract interfaces, type extension, and dynamic dispatch, allowing opt-in.
- In Ada, package specifications and bodies are separate, providing clear visibility and compile-time structure.
- Ada requires explicit declarations for type extension and null records, preventing implicit assumptions.
- Memory management in Ada uses controlled types with Finalize for automatic cleanup, similar to RAII in C++.
- Ada uses package-based visibility control instead of class-based visibility, allowing child packages to access parent internals.
- Constructors in Ada are functions returning objects, but can be problematic for inheritance; child packages or child functions can avoid primitive operation inheritance.
- The prefixed method call syntax in Ada is syntactic sugar; dynamic dispatch requires class-wide types, not the syntax itself.
- Ada competes with C, not Java, and offers safer and more expressive alternatives to C's memory management.