πŸ“˜ FIT2099: Object-Oriented Design and Implementation

Map of Content

Index for FIT2099 Object-Oriented Design and Implementation (Java). Every design note carries a Mermaid classDiagram; designs are judged on Coupling / Cohesion / Extensibility. Start with OOP Building Blocks (Class, Object, Field, Method).

πŸ“Š Assessment Map

  • Assessment: engine-based Java group project across milestones + individual work.
  • Assessed skills: design rationale in Coupling/Cohesion/Extensibility terms, UML/Mermaid diagrams, SOLID application, smell β†’ refactor.

🧰 Toolkit Cheatsheets

  • πŸ“Œ FIT2099 Unit Cheatsheet β€” principles, smellsβ†’refactors, contracts, UML rules
  • Java Toolkit (Cheatsheet) β€” code a class from a blank editor: class anatomy, modifiers, types/==-vs-equals, collections, inheritance/polymorphism/interfaces/enums, exceptions/DbC/CQS, DI/defensive copying, Factory Method, and the smellβ†’refactoring quick-map.
  • UML Toolkit (Cheatsheet) β€” draw from a blank page: class-diagram compartments/visibility/relationship-arrow legend/multiplicity/stereotypes, sequence-diagram lifelines/messages/activation/fragments, and the domain/activity/use-case/CRC modelling tools (Mermaid syntax throughout).

πŸ“… Knowledge Index

Week 1 β€” Java & OO Fundamentals

Week 2 β€” Modifiers, UML Relationships, Design Principles & Inheritance

Week 3 β€” Collections, Polymorphism & Abstraction

Week 4 β€” Interfaces & Enumerations

Week 5 β€” SOLID Principles

Week 6 β€” Applying Abstraction: Injection, Copying & Rationale

Week 7 β€” Dynamic Modelling

Week 8 β€” Design by Contract, Exceptions & Factory

Week 9 β€” Code & Design Smells + Refactoring

Week 10 β€” Refactoring to Address Code Smells

  • (deepened this week: Refactoring (Java) β€” the refactor-to-enable-change motivation (Fowler statement() scenario) + the identifyβ†’fixβ†’applyβ†’testβ†’commitβ†’repeat loop; no new note β€” Week 10 is a worked deepening of the Week 9 material.)

Week 11 β€” Design in the Lifecycle, Technical Debt & the Design Process

πŸ“ UML Notation References (consolidated)

🧭 Suggested Reading Order

(read leftβ†’right within each week Β· bold = assignment-critical; ⭐ = graded artefact skill)

🎯 Learning Outcomes

Unit LOs:

  1. design with UML (class + interaction diagrams)
  2. judge design quality
  3. implement abstraction/information-hiding/inheritance/polymorphism in Java
  4. refactor + debug
  5. practise with IDEs, UML tools, version control

Key skills per week:

  • W1 βž”
    • static typing catches errors at compile time
    • class = blueprint, object = instance
    • value vs reference semantics
    • constructors, control flow, arrays
    • client couples to the interface only (LO3)
  • W2 βž”
    • private fields + deliberate accessors
    • static = class-level, final = assign-once (reference β‰  immutable)
    • draw association vs dependency vs inheritance arrows
    • DRY / own-your-properties / no magic literals (LO1–3)
  • W3 βž”
    • program to the collection interface (wrapper types in generics)
    • runtime type dispatches the override, declared type limits visibility
    • abstract = never instantiated (LO3)
  • W4 βž”
    • one extends, many implements β€” capability contracts
    • enums kill magic-number smells with compile-time checks (LO3)
  • W5 βž”
    • argue every design decision through SRP/OCP/LSP/ISP/DIP
    • principles are guidelines β€” over-application is its own smell (LO1–2)
  • W6 βž”
    • inject collaborators from outside (DI beyond DIP)
    • defensive-copy mutable state at boundaries
    • write rationale = WHY + alternative + trade-off, never description (LO1–3, A1)
  • W7 βž”
    • sequence diagram one narrow scenario, concrete classes only, correct message/activation notation (LO1, A1)
  • W8 βž”
    • precondition breach = client bug (exception), postcondition = supplier bug (assertion)
    • commands vs queries
    • Factory Method returns the parent type (LO2–3)
  • W9–10 βž”
    • recognise smell families as hints not proofs
    • type-branching β†’ Replace Conditional with Polymorphism
    • refactor behaviour-preserving under tests, two hats (LO4)
  • W11 βž”
    • decide as late as responsibly possible (Lean)
    • take technical debt deliberately + repay by refactoring to better design
    • explore with CRC cards, split when the card overflows (LO1, LO5)