Object-oriented design book review

  • Sum up the book in one sentence.

This book teaches us how to design a great software using object-oriented principle.

  • Who is the intended audience for the book?

For those who know basic java, want to learn, understand, remember and apply object-oriented design to real-world projects. Also for those who wants to simulating dinner party conversation to dry, dull, academic lecture. In other words, if you want to transfer real word situation to program, you should read this book.

  • Who do you think would benefit most from this book?

For anyone who has some knowledge about object-oriented language but does not know how to write their own code for solving real life problem.


  • What does the book cover?

This book covers lots of prospective in regards of software design.  it talks about the three important steps in software design. They are, first:Make sure your software does what the customer wants it to do. Second: Apply basic OO principles to add flexibility. 3. Strive for a maintainable, reusable design. The rest of the books just go through these three steps with many details and scenarios.


In terms of the first step, the book’s suggestion is that pay attention to what the software needs to do. Creating a requirement list or feature list for big projects is always a first step and then thinking about how to do. In order to meet such requirements, programmers have to figure out potential problems in real life because customer’s requirements might not be specific and customers usually do not provide programmers with the context that software is running,

As for OO design principle, it covers Encapsulation for deleting duplicate code. Using Abstract class to reuse the behavior in the common class which is referred as “Don’t repeat yourself principle” in the book. Application of Is-a and has-a relationship. 

  • Was the material in the book useful to you?

The material in this book is very useful to me since object-oriented design principle could solve many real-life problems.

  • What was the most important thing you learned from this book?

The most important thing I learned is how to figure out where to start writing my program. First of all, I have to know the architecture. Putting every small details together to get a bigger picture. The relationship among each small details usually tell us where we should start. It tell us which part is the most important.   Ask my self three questions,

1: What is the most important requirement list in the system?

2: what the description of a particular requirment really means?

3: how should I implement this requirement?

  • Would any of the material from this book be useful in earlier CS courses? Which ones?

This book could be an extra reading material for CS140.  Basically, this book teachs people how to think problem in terms of objects. It gives students a chance to know the idea behind the complex java grammar.

  • Did you enjoy reading this book?

I really enjoy reading this book. This book talks about serious software design principle but it uses the daily language and lots of pictures to represent concept. In one word, this book is very brain –friendly


  • Would you recommend it to others?
  • Would you buy your own copy?


      Some critical thinking about object-oriented design:

      Object-oriented design concept has been abused for long time. Certain key can only open certain door. Object-oriented principle design is not right tool for everything.  Many object-oriented language forces us to think things in object way. But the human mind is delightfully capable of holding many ‘views’ or ‘models’ of our perceptions at once. an object in human perception is just one way of viewing the world. OO forces us to pick just one ‘model’ and entrench it in our program.


week 6-8

During this period of time, our group is working on those 60 service java documents. I clone those files to my computer by using GitHub desktop application. I can still read and edit those files online but I prefer reading and editing them by using eclipse.  Beside this, those 60 service java documents are displayed on GitHub group in repository of our group. This snapshot is layout of these 60 java comment issues


Each group members can make comments on each issues. Here is screenshot of issue comment interface. 


Github system is really convenient for program developer.  

Week 5: officially start our group project

In this week, blog entry rubric was introduced and we add the blog link, openMRS account number and Github user name to our student’s profile on wiki page. These steps are very easy, I just logged into my wiki account and clicked edit button and add the URL and my account information into it.

The most important thing we did this week is that I, as group member, started our first project. The rest of group member are Alvin Cordor, Michael Gibson, Nana Onyirimba and Jesse Anaya. Nana is group leader and we decided he became assignee for our project.  Basically, all of our group member will go through all OpenMRS api/services java code. We chose to follow the style of example java doc that was given by the person who opened the trunk.  I think working on this project with GitHub is expected to be a great opportunity for me to experience sort of software development cycle.

Week 4 Set up OpenMRS environment

In this week, we are required to set up OpenMRS development environment. First, I check whether I have latest version JDK since OpenMRS has to run on JDK 1.6 above. Next, OpenMRS SDK was installed. But at first I cannot run OpenMRS locally as manual shows. After I typed omrs-run, I got bunch of errors.  But after I set up a JAVA_HOME, this problem is resolved.

Then I set up Standalone, MySQL,Git and Maven. I tried to type command line to run jar file of OpenMRS standalone but it said that unable to access file. Thus I have to open the file and run the jar by double clicking. It works very well in this way.  I logged into OpenMRS with default user name and passwords successfully. Now, I am ready for doing some contribution to OpenMRS!!!

Week 3, Feb 2014

During the class on Feb 10, we created our own profile on wiki page of the course CS-401. It is very easy to create and add a link to our profile on main course wiki page. Here are some important points from Git Videos:

       •Git is a fast and modern implementation of version control.

  • Git provides history of content change. Git stores history snapshot.
  • Git facilitates collaborative changes to file.
  • Git is easy to use for any type of knowledge worker.
  • Git is locally enabled.
  •  Serve merge very well

Also the Git tutorial is very useful and helps me get familiar with some command line.

  As for issue tracker activity on class, by explaining certain term such as issue type, status, Key, I understand OpenMRS issue tracker more.