COSC 40453 OOP & Design Patterns
Tired of writing Spaghetti code? This course teaches students to write code of high quality (Extensible, Maintainable and Testable) by providing an in-depth coverage of object-oriented programming principles and techniques.
Prerequisites: Java and Data Structures
Topics include:
Object-Oriented Programming
- Abstraction, Encapsulation, Inheritance and Polymorphism
- Object-Oriented Analysis and Design in UML
- Interfaces and Abstract Classes
- Programming to an Interface
- Composition over Inheritance
- Anemic Domain Model vs. Rich Domain Model
Software Design Principles (SOLID)
- S (Single Responsibility Principle)
- O (Open/Closed Principle)
- L (Liskov Substitution Principle)
- I (Interface Segregation Principle)
- D (Dependency Inversion Principle)
Design Patterns
- Creational Patterns (Singleton, Factory etc.)
- Structural Patterns (Adaptor, Proxy, Decorator, Bridge, Facade etc.)
- Behavioral Patterns (Observer, State, Template Method, Strategy, Chain of Responsibility, Iterator etc)
New Features From Java SE 8 to Java SE 17
- Lambda Expressions
- Streams APIs
- Time APIs
- Switch Expressions
- Records
- Text Blocks
- Pattern Matching for instanceof
- Try-with-resources