software design software extensibility composition inheritance code reuse delegates dynamically allocated memory stack memory heap memory program memory usage managed code heterogeneous collections subtyping type extension software maintainability interface design alternatives object-oriented design
See more