CS 391 OBJECT oriented Programming Required Text: Deitel & Deitel, C++ How to Program, 3rd Edition, Prentice Hall. Course Outline: I) Review of Classes, Objects and Data Abstraction * Implementing an Abstract Data Type with a Class * public, private and protected class members * Class Scope and Accessing Class Members * Examples (Stacks, Strings, etc.) II) Constructors and Destructors * Initializing Class Objects * Using Destructors * Using Data Members and Member Functions * Copy Constructor * Examples III) More on Classes * Constant Objects and Constant Member Functions * Friend Functions and Friend Classes * The Concept of Data Abstraction and Information Hiding - Examples * Dynamic Memory Allocation using the Operators new and delete * Using the this Pointer * Static Member Variables and Static Member Functions * Container Classes and Iterators * Proxy Classes IV) Operator Overloading * Fundamentals and Restrictions of Operator Overloading - Operators that can be overloaded * Operator Functions - class members and friend functions * Overloading Unary Operators * Overloading Binary Operators * Overloading Stream << and >> (Stream-Insertion and Stream Extraction) Operators * Examples (complex numbers, arrays) V) Inheritance * Base Classes and Derived Classes * Protected Members * Casting Base Pointers to Derived Pointers - Examples * Overriding Base-Class Members in a Derived Class * Inheritance with public, private and protected Base Classes * Using Constructors and Destructors in Derived Classes * Examples VI) Virtual Functions and Polymorphism * Virtual Functions - Examples * Polymorphism * Virtual Destructors Bibliography (Note, there are many other decent books on this material, the following is just a short list): I. Irvine, K. R., C++ And Object-Oriented Programming, Prentice Hall,1997. II. Oualline, S., Pratical C++ Programming, O'Reilly & Associates, 1995. III. Johnsonbaugh, R. and Kalin, M., Object-Oriented Programming in C++, Prentice Hall, 1995. IV. Pfleeger, S. L., Software Engineering: Theory and Practice, Prentice Hall, 1998. V. Barclay, K. and Savage, J., Object Oriented Design With C++, Prentice Hall, 1997. VI. Kafura, D., Object-Oriented Software Design and Construction with C++, Prentice Hall, 1998. VII. Van Alstyne, J., Professional and Technical Writing Strategies: Communicating in Technology and Science, Prentice Hall, 1999. VIII. Pfeiffer, W. S., Technical Writing: A Practical Approach, Prentice Hall, 1997. IX. Woolever, K. R. and Loeb, H. M., Writing for the Computer Industry, Prentice Hall, 1994. Course Requirements and Policies: There will be Two class exams (approximately one a month) and a Final. Do not miss any exams - No make-up exams will be given. If you miss an exam the final will be weighted heavier. Programming Projects will be assigned and are due on the date assigned. Late projects are not acceptable. Final Grade = .45(Class Exams) + .30(Final Exam) + .25(Programming Projects) Attendance: It is your responsibility to attend class. Any work missed due to absence is the responsibility of the student. Note: Any student needing special accommodations is invited to self-identify himself or herself, in confidence, to the professor. The objective of this policy is to ensure that all students are treated fairly and equally.