Understanding ADA: With Abstract Data Types