Programming Foundations: Object-Oriented Design

Programming Foundations: Object-Oriented Design

2h 41mBeginner2024-12-09

Authors

Barron Stone

Barron Stone

Electrical Engineer

Olivia Chiu Stone

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

Skills covered

Object-Oriented ProgrammingSoftware DesignPythonFoundationsOpen SourceSoftware Development

Concepts

Introduction

  • Learn object-oriented design principles
  • What you should know

Object-Oriented Fundamentals

  • Object-oriented thinking
  • Objects
  • Classes
  • Abstraction
  • Encapsulation
  • Inheritance
  • Polymorphism
  • Analysis, design, and programming
  • Unified modeling language (UML)

Requirements

  • Defining requirements
  • FURPS+ requirements
  • Challenge - Jukebox requirements
  • Solution - Jukebox requirements

Use Cases and User Stories

  • Use cases
  • Identifying the actors
  • Identifying the scenarios
  • Diagramming use cases
  • User stories
  • Challenge - Jukebox use cases
  • Solution - Jukebox use cases

Domain Modeling

  • Identifying the objects
  • Identifying class relationships
  • Identifying class responsibilities
  • CRC cards
  • Challenge - Jukebox conceptual model
  • Solution - Jukebox conceptual model

Class Diagrams

  • Creating class diagrams - Attributes
  • Creating class diagrams - Behaviors
  • Converting class diagrams into code
  • Instantiating classes
  • Class with multiple constructors
  • Static attributes and methods
  • Challenge - Jukebox class diagrams
  • Solution - Jukebox class diagrams

Inheritance and Composition

  • Identifying inheritance situations
  • Using inheritance
  • Abstract and concrete classes
  • Interfaces
  • Aggregation
  • Composition
  • Challenge - Jukebox class relationships
  • Solution - Jukebox class relationships

Software Development

  • OOP support in different languages
  • General development principles
  • Software testing
  • Design patterns

Glossaries

Conclusion

  • Next steps
80,000 Toman