Programming Foundations: Object-Oriented Design
2h 41mBeginner2024-12-09
Authors

Barron Stone
Electrical Engineer

Olivia Chiu Stone
Programmer, Engineer
Course details
All good software starts with a great design. Object-oriented design helps developers plan applications before they write a single line of code, and break down ideas into reusable and maintainable components. This course focuses on the foundational concepts, teaching them in a fun, interactive way to help you quickly develop your skills. Tag team Olivia and Barron Stone introduce you to the concepts and terms—objects, classes, abstraction, inheritance, and more—that you need to get started. They then show how to take the requirements for an app, identify use cases, and map out classes using Universal Modeling Language (UML). The final design can then be translated into code using one of the many popular object-oriented programming languages, such as Java, C#, Ruby, or Python.
Learning objectives
Object-oriented basics: objects, classes, and more
Encapsulation
Inheritance
Defining requirements
Identifying use cases, actors, and scenarios
Domain modeling
Identifying class responsibilities and relationships
Creating class diagrams
Using abstract classes
Working with inheritance
Developing software with object-oriented design principles
Learning objectives
Object-oriented basics: objects, classes, and more
Encapsulation
Inheritance
Defining requirements
Identifying use cases, actors, and scenarios
Domain modeling
Identifying class responsibilities and relationships
Creating class diagrams
Using abstract classes
Working with inheritance
Developing software with object-oriented design principles
Skills covered
Object-Oriented ProgrammingSoftware DesignPythonFoundationsOpen SourceSoftware Development
Concepts
0. Introduction
- 01 - Learn object-oriented design principles
- 02 - What you should know
1. Object-Oriented Fundamentals
- 03 - Object-oriented thinking
- 04 - Objects
- 05 - Classes
- 06 - Abstraction
- 07 - Encapsulation
- 08 - Inheritance
- 09 - Polymorphism
- 10 - Analysis, design, and programming
- 11 - Unified modeling language (UML)
2. Requirements
- 12 - Defining requirements
- 13 - FURPS+ requirements
- 14 - Challenge - Jukebox requirements
- 15 - Solution - Jukebox requirements
3. Use Cases and User Stories
- 16 - Use cases
- 17 - Identifying the actors
- 18 - Identifying the scenarios
- 19 - Diagramming use cases
- 20 - User stories
- 21 - Challenge - Jukebox use cases
- 22 - Solution - Jukebox use cases
4. Domain Modeling
- 23 - Identifying the objects
- 24 - Identifying class relationships
- 25 - Identifying class responsibilities
- 26 - CRC cards
- 27 - Challenge - Jukebox conceptual model
- 28 - Solution - Jukebox conceptual model
5. Class Diagrams
- 29 - Creating class diagrams - Attributes
- 30 - Creating class diagrams - Behaviors
- 31 - Converting class diagrams into code
- 32 - Instantiating classes
- 33 - Class with multiple constructors
- 34 - Static attributes and methods
- 35 - Challenge - Jukebox class diagrams
- 36 - Solution - Jukebox class diagrams
6. Inheritance and Composition
- 37 - Identifying inheritance situations
- 38 - Using inheritance
- 39 - Abstract and concrete classes
- 40 - Interfaces
- 41 - Aggregation
- 42 - Composition
- 43 - Challenge - Jukebox class relationships
- 44 - Solution - Jukebox class relationships
7. Software Development
- 45 - OOP support in different languages
- 46 - General development principles
- 47 - Software testing
- 48 - Design patterns
Glossaries
Conclusion
- 49 - Next steps