Computer Science 3331.03

Object-Oriented Programming and Design

 

Term: Fall 2000 Instructors:
Rachel Jiang
(rachel@cs.yorku.ca)
John Li
(johnli@cs.yorku.ca)
Course Outline
Term: Fall 1999 Instructor: Richard Paige
(paige@cs.yorku.ca)
Course Outline

Description:

Introduction to the theoretical and practical methods of object-oriented software construction. Topics include single and multiple inheritance, type hierarchies, polymorphism, operator overloading, object persistence, class library design, generic classes, and design by contract. This course is a detailed introduction to the methodology of object-oriented software construction, one of the major areas of software engineering practice and research. An object-oriented program is based on classes. Instances of classes, called objects, are created as the program runs and interact through message passing. Messages that are acceptable to an object are defined by the interface of the class. Use of interfaces promotes the reuse of reliable code and can make it easier to carry out maintenance and extension. The course will introduce the theoretical concepts of object-oriented programming and design, and present examples using the object-oriented programming language Eiffel. Eiffel will be compared to other OO languages, like C++, Java, Smalltalk, Python, and Delphi. The course will cover more OO techniques in far more detail than in previous courses, and the students will apply these techniques in a large group design and programming project.

Topics to be covered in the course will include the following:

  • Abstract data types as a basis for information hiding and as a theory for OO software construction.
  • Other software engineering principles such as the open-closed principle and the single choice principle.
  • Information hiding; secret vs. public vs. selectively available information.
  • Single inheritance: subtyping; substitutability; subcontracting.
  • Feature adaptation: changing export status; renaming methods; ambiguity in inheritance; overriding; redefinition of behaviour; breaking the subtype relationship.
  • Design by contract: preconditions, postconditions, class invariants, and their use in designing software systems. Debugging using contracts. Testing using contracts.
  • Documenting OO programs; automatic documentation tools.
  • Exception handling.
  • Generic (parameterized) classes as a mechanism for code reuse.
  • Polymorphism, dynamic binding, and static binding.
  • Type checking: static vs. dynamic checking.
  • Principles for inheritance: inheritance vs. use.
  • Multiple inheritance for class library design. Repeated inheritance.
  • Persistence. Linking OO programs with a database.
  • Class interfaces: partial implementations vs. full implementations.

Prerequisites: general prerequisites Degree Credit Exclusion: COSC3010A 3.0; AK/COSC3650 3.0

Course List


This page was last updated 09/30/2000.
Contents copyright ©, 2000, University of Toronto.