Object Oriented Programming

Workshop Week 2

Workshop Week 2

Table of Contents

Discussion

Transitioning to Java

  1. What is OOP? How is it different to procedural programming?
    • OOP uses classes as fundamental units of abstraction
      • data belongs to classes, manipulated by methods
      • different way to structure programs
    • procedural uses functions as fundamental units of abstraction
    • also functional and logic programming

Software Projects

  1. Experiences when developing software in past projects
    • spaghetti
    • replicated efforts because system was not broken down well into reusable code
    • poor documentation: intrinsic + extrinsic resulting in significant efforts to understand codebase when maintenance was required
    • failed to implement existing solutions through lack of knowledge (e.g. databases)
    • difficulty maintaining code and dependencies
  2. Thoughts on software design and software development
    • why is design important?
      • as software gets larger there are more “moving parts” that need to interact
      • high-level design allows you to divide this into tasks that can be tackled by teams simultaneously, with well managed interfaces
      • this makes code easier to test, more extensible, more maintainable
    • what is difficult about software design?
      • understanding requirements, and how requirements will change over time
      • implementing an architecture that is maintainable and extensible
      • discipline to plan rather than tackle the problem directly, and following your procedures as you progress (e.g. keeping documentation up to date)
      • project management: team, deadlines, …
    • what can you do differently right now to help practice designing software?
      • learn UML and markdown
      • improve documentation
      • record design process in documentation!
      • look for existing solutions

Edit this page.