Git Product home page Git Product logo

s4-e3's Introduction

-- RMU SESSION 4 EXERCISE 3

If in doubt about how to submit, see SUBMISSION_GUIDELINES file.

In this exercise, we'll be exploring object oriented design principles, taking a
look at SOLID in particular. Our goal is to create realistic examples of 
these high level concepts in action.

== GUIDELINES

- Start by watching the following talk from Sandi Metz. It's recommended to
  watch the whole thing.

  http://confreaks.net/videos/240-goruco2009-solid-object-oriented-design

- For each of the following principles, create an example that clearly
  demonstrates the core ideas behind the principle:

  * Single responsibility principle
  * Open/closed principle
  * Liskov substitution principle
  * Interface segregation principle
  * Dependency inversion principle
 
- Also, choose three of the above principles and create a counterexample 
  for each.

- Try to pick good examples that look like they could be from real code, and
  avoid duplication of other student's work by describing your scenarios as you
  work on them.

- You can make all of your examples follow a common theme if you'd like, but
  each example must be a bit of code you can actually execute which focuses on
  exactly one principle or a counter example of that principle.  This means you
  need to create a total of 8 different examples, not just one big one that
  covers all of the requirements.

- Feel free to use real code from an existing project (your own, another
  student's, or an open source project) to form your examples if you'd like.
  But make sure that you clean things up enough so it's clear what principle
  you're trying to demonstrate.

- Finally, do not re-use the examples from Sandi's talk.

== QUESTIONS?

Hit up the mailing list or IRC. RMU exercises are left deliberately open ended,
and often benefit from some discussion before, during, and after you work on
them.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.