1 / 6

Object-Oriented Programming Paradigm and Design Trade-Offs

Learn about object-oriented programming paradigm and its design trade-offs. Explore examples in languages like Smalltalk, Java, and C++. Develop predicate classes for logic programming.

alocher
Download Presentation

Object-Oriented Programming Paradigm and Design Trade-Offs

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Object-Oriented Programming • A design method as well as a programming paradigm • For example, CRC cards, noun-verb parsing of requirements • Hinges on inheritance-based polymorphism • Classes define behaviors and structures of objects • Subclasses may refine or extend base classes • Extensions external to classes may be supported (e.g., C#) • Distinct objects (class instances) interact • The sets of objects (and behaviors) may vary dynamically • OO paradigm introduces several key ideas • Independent objects with separate state • Encapsulate all but the most necessary details (e.g., public/private/protected access in C++) • Abstraction, polymorphism, substitution, extensibility

  2. Design Trade-Offs in OO Languages • Classes must declare all information compiler needs • E.g., sizes of by-value member variables, public interfaces • E.g., definitions of any methods the compiler should inline • Inlining copies method’s code to each place it’s called • Saves performance overhead of a function call each time • But requires more space for duplicate copies of instructions • How classes interact with the type system • Can exclude classes from type checking (not very safe) • Can use classes as type constructors (as in C++) • Can express entire type system as classes (as in Smalltalk) • Controlled violations of encapsulation may be allowed • E.g., C++ friend declaration to support symmetric operators

  3. OO Language Example: Smalltalk • A purely object-oriented language • Classes, constants, etc. are all objects • Powerful but somewhat elaborate execution model • Send a message to a receiver, which dispatches a method • Useful for event handling, simulation, similar applications • Methods read or modify objects’ state • I.e., accessor and mutator methods • Method calls are performed using reference semantics • Passes an alias to an object rather than copying its value • An object may refer to itself in a method • Objects are constructed via the class object • Send the new message to the class type

  4. OO Language Example: Java • An almost purely object-oriented language • E.g., integers are not objects, but can be wrapped with them • Much more common execution model • Call a method directly • Preserves flexibility but with a more understandable style • Methods again read or modify objects’ state • I.e., accessor and mutator methods • Method calls again use reference semantics • Passes an alias to an object rather than copying its value • But, Java may bind a call statically if possible for efficiency • Classes declare object constructor methods • Default constructors, constructor chaining are supported

  5. OO Language Example: C++ • Classes declared, objects instantiated (similar to Java) • Except, can instantiate an object directly on the stack as in EvenIntegerPredicate eip; // default ctor • Also can instantiate heap object via new (returns ptr) as in TruePredicate * tpp = new TruePredicate; • Object destructors managed differently for these cases • Return from a function calls local stack object destructors automatically • The program itself (or “smart pointer” it declares) must call delete directly (delete tpp; or shared_ptr<TruePredicate> tppsp (tpp);) • C++11 smart pointers implement reference counting and other object lifetime management semantics • C++ allows object methods to be defined (in .cpp files) separately from their class declarations (in .h files) • Also can define within declaration, which inlines the method • Class methods are passed implicit this parameter (arity is +1)

  6. Today’s Studio Exercises • We’ll code up predicate classes for logic programming • Developing a class hierarchy with abstract/concrete methods • Please see slides for next studio (and/or read ahead in the text book for more about abstract vs. concrete classes) • E.g., C++ methods are polymorphic only if declared virtual • Today’s exercises are all in C++ • Logic programs fit well within object-oriented features • As always, please ask us for help as needed • When done, e-mail your answers with subject line “Object-Oriented Programming Studio I” to the cse425@seas.wustl.edu course e-mail account

More Related