NML

NML Learning Channel 1 - OOP

By Charl Marais

Write a console application, with OOP and SOLID best practices as a priority

Session

https://learningchannel.blob.core.windows.net/001-oop/Object%20Oriented%20Programming.pptx

https://learningchannel.blob.core.windows.net/001-oop/ObjectOrientedProgrammingInCSharp.zip

https://learningchannel.blob.core.windows.net/001-oop/recording11am.mp4 (Sound not the best)

https://learningchannel.blob.core.windows.net/001-oop/recording5pm.mp4(Start at 1:30)

Challenge

Write a console application, with OOP and SOLID best practices as a priority. The app must allow a user to enter one of three options: Square, Triangle and Diamond, although it should be possible to extend the program for more. Each option should produce an output as follows:

Square

****
*  *
*  *
****

(Equal number of columns and rows)

Triangle

  *
 * *
*****

Diamond

  *
 * *
*   *
 * *
  *

The implementations for each should accept a number of rows. It will be a configuration setting, and does not need to be accepted as input. We’ll have a 30min-45min review of the entries (probably not all) and I’ll show what I would consider the reference version of this. Please note that the challenge is aimed at putting into practice the OOP sessions so you have to write the best code (OOP + SOLID) possible. NOT the most clever or succinct algorithms. In fact, you app doesn’t even need to be able to produce the specified output to win. Yes, there could be a winner. You don’t need to use a DI framework, although your implementation should respect the inversion of control principle. That means that Program. Main can instantiate all dependencies as it’s the entry point. Email your entry to me zipped before Friday 11am. This challenge should please be done after hours or over lunch. It should take about an hour to complete.

Review and Entries

https://learningchannel.blob.core.windows.net/001-challenge-oop/challenge-review.mp4

https://learningchannel.blob.core.windows.net/001-challenge-oop/LearningChannel.Challenge1.zip