Course Introduction and Exercises
  • Download the exercises for this course
  • Download Slides and Exercises
Module 7 - Composition and Inheritance
  • 01 - Introduction
  • 02 - Agenda
  • 03 - Classes and Abstract Classes
  • 04 - Abstract Classes
  • 05 - Anonymous Classes and Overrides
  • 06 - Uniform Access
  • 07 - val, def and lazy val
  • 08 - Inheriting and Extends
  • 09 - Invoking Superclasses
  • 10 - Alternative Car Definition
  • 11 - override keyword
  • 12 - override keyword continued
  • 13 - final keyword
  • 14 - final keyword continued
  • 15 - final classes
  • 16 - case classes
  • 17 - Domain Models
  • 18 - Cars and Vehicles
  • 19 - Parking Structure
  • Composition and inheritance
  • 20 - Module 07 Exercises
Module 8 - Hierarchy, Types and Options
  • 01 - Module 08 Introduction
  • 02 - Agenda
  • 03 - Top Classes
  • 04 - Top Types Example
  • 05 - Organization From the Top
  • 06 - Bottom Classes
  • 07 - Null and Nothing
  • 08 - Even More Nothing
  • 09 - Scala Type Calculus
  • 10 - Scala Type Inference Tricks
  • 11 - Primitives and Implicit Conversions
  • 12 - Rich Wrappers
  • 13 - @specialized
  • 14 - @specialized generation
  • 15 - Extension Methods and Implicit Classes
  • 16 - Value Class
  • 17 - Nil, Null, Nothing, None
  • 18 - Option
  • 19 - Working with Option
  • 20 - Option continued
  • 21 - equals and hashCode
  • 22 - Generate with IDEA
  • 23 - Follow this formula
  • 24 - Sub classes
  • 25 - Just use case classes
  • 26 - Product Types
  • 27 - Product Type Features
  • Scala's Type Hierarchy
  • 28 - Module 8 Exercises
  • 29 - Module 8 Puzzlers explanations
Module 9 - Traits
  • 01 - Module 09 Introduction
  • 02 - Agenda
  • 03 - Multiple Inheritance
  • 04 - Traits Compared to Interfaces
  • 05 - Creating a Trait
  • 06 - Using a Trait in a Class
  • 07 - Polymorphism and Rich Interfaces
  • 08 - Multiple Traits
  • 09 - How'd it do that?
  • 10 - Stacking Traits
  • 11 - Stacking Traits - Quiz
  • 12 - Stacking Traits 1
  • 13 - Stacking Traits 2
  • 14 - Stacking Traits 3
  • 15 - Construction Composition
  • 16 - Traits vs Classes
  • 17 - Trait Initialization
  • 18 - Trait Initialization Fixes
  • 19 - abstract override
  • 20 - Implementing the Abstract
  • 21 - Traits with Type Parameters
  • 22 - Another CompareAge class
  • 23 - Selfless Traits
  • Traits
  • 24 - Exercises for Module 9
Module 10 - Packages, Imports and Scope
  • 01 - Module 10 Introduction
  • 02 - Agenda
  • 03 - Public, Protected and Private
  • 04 - Packages
  • 05 - Package Structure Alternatives
  • 06 - Namespace Notation
  • 07 - More Parts of the Model
  • 08 - Package Visibility
  • 09 - At the top level
  • 10 - wine package
  • 11 - The PairWine object
  • 12 - Package Objects
  • 13 - Importing from an object
  • 14 - Importing from an instance
  • 15 - Importing Fu: Renaming
  • 16 - Selective Importing
  • 17 - Companion Objects