Good Tasks / Tasks / Exercises to Teach or Improve Object Oriented Programming (OOP) Skills

What is a good challenge to improve your object oriented programming skills?

The idea behind this survey is to give you an idea of ​​what exercises are useful for teaching OOP.

The task should be as agnostic as possible, requiring either little or no specific libraries, or only the most common libraries. Try to include only one call for each answer, so that the vote would be consistent with the merits of this problem. It would also be nice if the necessary level of skill was indicated, as well as the rationale for why this is a useful exercise.

The solution to the problems can then be published as answers to the question "How ..." and related to this.

For example:

  • Challenge - Stack implementation with last for the first time
  • Skill Level - Beginner
  • Justification - gives experience with objects
+66
oop
Sep 12 '08 at 22:45
source share
8 answers

Building Skills in Object Oriented Design is a free book that can be useful. The description is as follows

"The purpose of this book is to help a novice designer by providing them with a series of interesting and moderately complex exercises in OO design. This book can also help managers increase their comfort in developing OO software. The applications that we will build are a step above the trivial and require careful thought and design.Also, since applications are mostly recreational in nature, they are interesting and interesting.This book allows the reader to explore the processes and artifacts of OO design to the extreme rock project to make a good design seem to be impossible. "

+38
May 13 '09 at 9:38 a.m.
source share

Write a complicated program from scratch . Try to get some people (around five, which should be feasible) to use it. Respond to their change requests.

Adapt your design program. Start small and then see how it grows. Drive this growth. It's complicated. You will also have to correct errors and maintain this over time, which was a very valuable lesson for me.

+14
Sep 17 '08 at 19:40
source share

Call: write a wrapper for your website / service API of your choice in a language of your choice that does not yet exist (for example, the ZenDesk API written in C #). Free the shell as an open source for other users.

Skill Level: Beginner to Intermediate

Justification. To learn how to extrapolate a third-party web services API into a meaningful set of objects / classes, make it easy to reuse this API in your language of choice.

+8
Sep 12 '08 at 23:07
source share

After you have learned the basics, study the gang of four model book.

http://www.amazon.com/Design-Patterns-Object-Oriented-Addison-Wesley-Professional/dp/0201633612/ref=pd_bbs_sr_1? e = utf-8 & s = books & qid = 1221488916 & cf = 8-1

This is a classic, and he should read for any coder who wants to understand how to use OO to develop elegant solutions for common coding problems.

+4
Sep 15 '08 at 14:31
source share

Take the written code snippet with the procedural style and try to convert it into an OOP-based solution. Read the book on refactoring and design patterns during the process. My friend was able to take a huge step forward in understanding object-oriented concepts in this way. As with nothing, this may not work for everyone.

+3
Sep 17 '08 at 13:57
source share

I found CRC cards to be effective enough in training, learning and creating good OO designs.

+2
Sep 17 '08 at 14:21
source share

Of course, a good challenge, although less affordable than the “start from scratch” purpose, is to reorganize some existing code that either does not use inheritance or does not use it very much to make better use of inheritance. The refactoring process will reveal many advantages and errors, as it certainly has my last project for me. It also prompted me to understand concepts better than in previous projects, where I created my own object-oriented projects.

+1
Sep 12 '08 at 22:54
source share

The task has very little to do with the fact that it is "OOP", it is more about how you evaluate it.

I would take a look at the Refactoring book, chapter 3, and make sure that there is not a single bad code smell in the solution. Or, more importantly, move on to those that really apply.

Most importantly, keep an eye on the existence of setters and getters (indicating that you are working with values ​​from a class and not asking the class to work with its own values) - or using "extends" without applying the Liskov replacement principle, such things.

0
Sep 16 '08 at 21:06
source share



All Articles