CS U370 Object Oriented Design Prof. Hafner, Spring 2008 Final Exam Review Date of exam: Thursday, April 17, 8-10 a.m. Location: 170 West Village F The final exam will have two programming problems. One will require the use of a Timer and an ActionListener. The other will involve implementation of a class defined by formal specifications, and it MAY require knowledge and/or use of the design recipe for implementing immutable ADT's. Additional true/false, multiple choice, and/or short answer problems will primarily focus on the topics listed below, although anything we have discussed in class could be mentioned. I. Any topics covered on the midterm exam II. Refactoring * -- the implementation of a property (on-demand, pre-computed, lazy) -- changing the representation of a class III. Inheritance,Over-riding and Polymorphism IV. Use of interfaces: Comparable, Comparator, Iterator, Iterable V. Enum types; Generic types VI. Iterators VII. Designing and implementing aggregate classes such as stacks and queues VIII. The use of java.awt and javax.swing types such as Icon, JFrame, JButton, JLabel, LayoutManager IX. Re-usable software - what elements of OO Design and Java support this, and in what way? X The concept of a design patterns and their realization in programs we have discussed or written factory method singleton iterator visitor observer strategy XI. The use of Timer objects and ActionListener classes in Java. XII. The definition and purpose of pre and post conditions of methods, and class invariants ------------------------------------------------------------------ Topics covered on the midterm CSU 370 OO Design, Spring 2008, Prof. Hafner Coverage of the Midterm Exam = 3:25 - 5:05 Friday, Feb. 29 I. How to set up, compile and execute Java programs; purpose and use of packages; full name of classes II. The basics of OO and Java programming: classes, methods, variables, exception handling, etc. Overloading. III. Information hiding ("encapsulation";"representation independence") --Use of factory methods (static "creators" instead of constructors) IV. Abstraction-based software design --understanding an ADT specification: signature and behavior --translating the ADT into client syntax --translating the ADT/client syntax into code, using the "design recipe" --the contract between client and implementor V. Specifying access levels of classes and members, and the relationship to the abstraction barrier. -- private: visible only inside the class -- : "package protected" -- protected: visible within the package AND in sub-classes in another package -- public: visible everywhere VI. Black box v. white box testing Unit testing, integration testing, regressions testing "Extreme programming" methodology/iterative design/testing VII.Class (i.e. static) versus instance variables and methods VIII. Mutable and immutable classes IX. Inherited "canonical" methods: toString, equals, hashCode X. Abstract classes and methods; Interfaces -- The Comparable and Comparator interface types XI. The java type system and the use of casting XII. The java Date and Calendar classes and the representation of date and time information XIII. Inheritance,Over-riding and Polymorphism XIV. Nested classes (static nested classes vs. inner classes) **** postponed until Final ***** XV. Refactoring: precomputed, compute-on-demand, lazy evaluation XVI. The Singleton design pattern Exam procedures: Please take alternate seats. Put all books and electronics on the floor. Each student may keep one sheet of 8.5 x 11 inch paper with writing on each side. If you have a question, please raise your hand and the instructor will come over to you. You may leave when you finish the exam.