10-152-311 - Object-Oriented Programming 1

7.2 Final Oral: Overview

The oral final will consist of a one-on-one, 25-30 minute discussion which will assess your knowledge of object-oriented programming. The exam will take place in a meeting room in the southeast area of ITEC, near room A122 on the Wausau campus. Dress professionally (business casual or better), arrive 5 minutes before your scheduled appointment, and wait in ITEC. If you are in one of the regional campuses, your attendance in Wausau is optional, but preferred. Contact me with alternate arrangements if needed.

Select a time slot for your individual final using this Doodle poll. Sign up early for the best selection of a time slot, as it is "first-come, first serve".

Be prepared to answer the following questions, of which I will choose several to discuss with you:

  1. An object is a/an ______ of a/an ______.
  2. An object is to a class, as a house is to a/an ______. Explain.
  3. Identify the elements of a field definition (e.g. "private Customer customer;") and describe the purpose of each.
  4. Regarding the code "Customer customer = new Customer();", be prepared to list the three operations that it performs and break down the line into its component parts.
  5. Describe what the keyword "this" refers to in C#. Discuss when you might want to (or need to) use it.
  6. Explain the purpose of the List class. Discuss how a list is different than a normal field.
  7. Compare/contrast read-only and private.
  8. Explain what a constructor is and how it works. Compare/contrast it with a standard method.
  9. Identify at least three features of object-oriented languages that can be used to support encapsulation. When might each be used? Be prepared to discuss.
  10. What are some benefits of encapsulation? Explain.
  11. Explain the design principle, "Only talk to your friends". Why does following this principle make your code more stable?
  12. Compare/contrast fields and properties.
  13. Compare/contrast methods and properties.
  14. Discuss both the benefits and shortcomings of using inheritance.
  15. Define polymorphism and explain how both inheritance and interfaces can be used to achieve it. Be prepared to discuss.
  16. Define abstraction in the context of programming. How does an understanding of abstraction aid you in writing better code? How do object-oriented languages allow implementing abstraction? Be prepared to give an example of both real-world and programming examples of a continuum from abstract to concrete (e.g. Animal, Mammal, Dingo).
  17. Explain the interface segregation principle (ISP).
  18. Be prepared to look at a segment of code and identify whether or not it uses polymorphism, and explain why.
  19. Be prepared to look at a UML object diagram and identify objects, multiplicity, and fields. Also, be prepared to write the code necessary to instantiate the objects and set their field values as specified on the diagram.
  20. Be prepared to look at a UML class diagram and identify classes, dependencies, multiplicity, fields, methods, parameters, and return types. Also, be prepared to use the diagram to write the code that would be required to set field values from one class to another.
  21. Be prepared to look at a UML sequence diagram and identify methods, method calls, objects, parameters, and return types on it. Be prepared to interpret the diagram, explaining its flow to me as if I were not a programmer.
  22. Describe your favorite two debugging techniques/features in Visual Studio and how/when you use each.

You may use any means of researching/preparing for this exam, including discussing it with your classmates. Study groups are welcome and supported! You can bring one sheet of notes with you to the final, but since the final is intended to measure your understanding of concepts rather than memorization, you may find that notes are not needed. If you do bring notes, please submit them here at least 24 hours in advance of your final. Keep in mind that you will not have time to thoroughly read from them during the final, so be sure they are concise and easy to reference quickly. While not required, submitting well-researched notes can both aid you in understanding the material and me in better assessing your knowledge level.