1. Functions allow defining reusable chunks of code that can optionally take parameters and return values. Functions can have default parameter values. 2. Classes define blueprints for objects that can contain properties like name and age, as well as methods like walk(). Classes can inherit from other classes and conform to protocols. 3. Protocols define a blueprint of functionality that classes and structures can conform to, like requiring a coding() method.