Week 1: Introduction & OOP Recap
W1 OOM Introduction & OOP Recap
- Software Complexity
- Understand the paradox of simple rules leading to complex outcomes.
- Software Development Life Cycle
- Familiarize yourself with the Waterfall model.
- OOP Basics (Recap from Spriha’s Lecture)
- Objects and Classes: Basics of object-oriented programming.
- Abstraction: Hiding complex implementation details.
- Inheritance: Deriving new classes from existing ones.
- Polymorphism: Ability to process objects differently based on their class.
- Encapsulation: Bundling data with methods that operate on the data.
Week 2: OO Design Principles
- Quality Attributes: Functionality, Reliability, Usability, Efficiency, Maintainability.
- Use Cases: Writing and understanding use cases in textual format.
- OO Analysis and Design: Identifying objects, classes, relationships, and interactions.
- Design Principles: DRY, KISS, YAGNI, Separation of Concerns, Principle of Least Astonishment, Law of Demeter, GRASP, SOLID principles.
Week 3: Refactoring and Code Smells
W3 Refactoring and code smells
- Refactoring: When and how to refactor, principles of refactoring.
- Code Smells: Types and how to address them, including Bloaters, OO Abusers, Change Preventers, Dispensables, Couplers.
Week 4: Unified Modelling Language
- UML: Conversion of code or problems into appropriate UML diagrams, including Class Diagrams, Sequence Diagrams, Use Case Diagrams, etc.
Week 5: Design Patterns
- Factory Method, Abstract Factory, Singleton, Decorator, Adapter, Facade, Proxy, Observer, Strategy Patterns:
- Understand the purpose of each design pattern.
- Recognize situations for their application.
- Ability to implement simple code snippets or draw UML diagrams for these patterns.
Sample Paper Highlights
- Functional vs Non-Functional Requirements: Examples of each for an e-commerce platform.
- Class Extensions and Abstract Classes: Understanding class hierarchies in Java.
- OO Design Violations: Identifying violations of OO design principles like SRP, OCP, DIP, ISP, LSP.
- Code Smells in Practice: Recognizing and addressing code smells in given scenarios.
- UML Diagrams: Drawing state diagrams for real-world scenarios.
- Design Patterns Application: Identifying problems with current approaches and suggesting design pattern solutions.
Study Tips
- Focus on understanding the principles behind each concept rather than memorizing definitions.
- Practice drawing UML diagrams for various scenarios, as this seems to be a significant part of your exam.
- Review examples of code smells and refactoring techniques, as these are practical skills that your exam will test.
- Understand the application of design patterns by practicing with code snippets or examples from the lectures.