SlideShare a Scribd company logo
1 of 76
Download to read offline
Object-Oriented
                        Programming:
                       The Basic Building Blocks




Zeegee Software Inc.
TERMS AND CONDITIONS
The author of these slides, Zeegee Software Inc., has provided these slides
for personal educational use only. Zeegee Software reserves all rights to
the contents of this document.
Under no circumstances may the contents of this document, in part or
whole, be presented in a public forum or excerpted for commercial use
without the express permission of Zeegee Software.
Under no circumstances may anyone cause this electronic file to be altered
or copied in a manner which omits, changes the text of, or obscures the
readability of these Terms and Conditions.
INTRODUCTION
           • What is/isn't object-orientedness?
           • The quot;software crisisquot;
           • Software reuse
           • The evolution of good engineering practices
           • The perils of non-OO development




Copyright © 1996, 2000 Zeegee Software Inc.        09/22/06   Object-Oriented Programming 1-3
What does quot;object-orientedquot;
                                 mean, anyway?
           • Programs consist of entities, called objects, which
             correspond to concepts the program will manipulate:
                    – A business application might have Employee and Department objects.
           • Objects are created by specifying their structure and their
             properties in a class.
                    – The Employee class is a (single) blueprint used to create (many and
                      varying) Employee objects.
           • Objects communicate by sending each other messages:
                    – We might ask an Employee object quot;what's your name?quot;.




Copyright © 1996, 2000 Zeegee Software Inc.       09/22/06                     Object-Oriented Programming 1-4
What is object-orientedness?
           • A programming style where concepts in your problem
             domain are mapped directly into your code: quot;object-
             orientedquot; means quot;concept-oriented.quot;
           • A philosophy of design and implementation (i.e., a way of
             thinking about your code) which can be employed even in
             non-OO programming domains.
           • A technology to help you follow this philosophy: OO
             languages, OO databases, OO expert systems, etc.
           • A buzzword used by people who want to sell you
             something.



Copyright © 1996, 2000 Zeegee Software Inc.   09/22/06        Object-Oriented Programming 1-5
What is
                                   object-orientedness not?
           • It is not a solution to all your design and implementation
             problems.
           • It will not allow non-programmers to quot;program like the
             pros.quot;
           • It does not allow you to side-step the design process and
             begin coding applications from day zero.
           • It is not inherently better than non-OO for all tasks.
           • It will not grow hair, lower your cholesterol, taste as fresh
             as homemade, soften hands while you do the dishes, and
             paint any car for $99.95… beware of sales pitches, no matter
             how flashy.

Copyright © 1996, 2000 Zeegee Software Inc.   09/22/06           Object-Oriented Programming 1-6
The software crisis:
                       why we must change our ways
           • Human society depending more and more on software.
           • The software crisis: much existing software is...
                    – bug-ridden, because...
                    – too complex to understand, and so...
                    – difficult to maintain, and so...
                    – difficult to extend, and so...
           • We reinvent the wheel over and over, leading to...
                    – unnecessarily high development costs
                    – new and more exciting bugs...


Copyright © 1996, 2000 Zeegee Software Inc.       09/22/06       Object-Oriented Programming 1-7
The goal: software reuse
           • Programs tend to be quot;stick builtquot; from the ground up:
                    – Like making custom nails, screws, bricks, etc. for a house!
           • Take our cue from the industrial revolution: assembly lines
             and interchangeable parts:
                    – Goal: develop manageable, understandable, reusable software
                      components that can be employed in a wide variety of
                      applications, so that quot;newquot; code is specific to the problem at
                      hand.
           • Reuse is not the same as quot;cut and pastequot;; however...
           • Temptation to quot;cut and pastequot; indicates useful code!


Copyright © 1996, 2000 Zeegee Software Inc.    09/22/06                   Object-Oriented Programming 1-8
Benefits of software reuse
           • Reduces coding/testing, thereby reducing delivery time and
             cost.
           • Many reusers means many testers: well-tested code!
           • Bugs found in reusable module can be reported to source:
             fix is made, new module is distributed, and now everyone
             benefits.
           • Application programmers don't need to be experts in a wide
             variety of esoteric disciplines: easier to hire developers, and
             easier to keep them sane.
           • High visibility of code can improve attitude of developer, and
             inspire more care and forethought, rather than just quot;task at
             handquot; thinking.
Copyright © 1996, 2000 Zeegee Software Inc.   09/22/06           Object-Oriented Programming 1-9
Come on... how long does
                                software last, anyway?
           • Long enough for the Y2K bug to have been of some
             concern!
                    – Much software written before 1990 did not have Y2K in
                      mind.
                    – Code from the 1980s is still in use!
                    – People often quot;cut and pastequot; old code into new systems: the
                      ghosts of programs long dead.
                    – Developers are unwilling to tweak/upgrade components if
                      they quot;seem to work fine as-isquot;.
           • Huge sums of money were spent to head off Y2K disaster.
             We'll never know if it was necessary, but we do know the
             price tag!
Copyright © 1996, 2000 Zeegee Software Inc.     09/22/06               Object-Oriented Programming 1-10
Modular programming
           • Break large problems down into smaller, more manageable
             ones by breaking large programs into smaller pieces.
           • Each piece can be coded and tested individually.
           • Core of modularization is the subroutine (invented 1950s).
           • But we still need to decide...
                    – What tasks are made into subroutines?
                    – What are the arguments? Return values? Side effects?
           • A discipline was needed...



Copyright © 1996, 2000 Zeegee Software Inc.   09/22/06                Object-Oriented Programming 1-11
Structured programming
           • Invented 1960s, as a means of good modularization.
           • Relies on functional decomposition:
                    – Top-down approach.
                    – Break tasks (functionality) down from top level on down, to
                      smaller and smaller components, until you get to actual
                      subroutines.
                                                                   go_to_store()


                                              drive(store)                 shop()   drive(home)


                  get_in_car()                    start_car()

Copyright © 1996, 2000 Zeegee Software Inc.                     09/22/06                  Object-Oriented Programming 1-12
Limitations of
                                structured programming
           • Can't always anticipate functions of evolving systems!
           • The more successful a system is, the greater the chance it
             will be requested to handle a wider range of tasks than
             originally envisioned:
                    – System gets quot;tweakedquot; to handle initial modifications.
                    – Tweaks become quot;hacksquot; as desired functionality departs more
                      and more from original decomposition.
                    – System becomes more complex and unstable; further
                      modifications require worse hacks or full rewrite.
                    – Process stops when costs outweighs benefits.


Copyright © 1996, 2000 Zeegee Software Inc.    09/22/06                  Object-Oriented Programming 1-13
Global/shared data:
                              the break in the modularity
           • At some point, many programs use global data which is
             shared between different subroutines.
           • When any subroutine affects the global data, they can affect
             the other subroutines as well, in unexpected ways!

                                                          go_to_store


                                              start_car      drive              stop_car




                                      wheel      pedal    tank          tires   gears   address


Copyright © 1996, 2000 Zeegee Software Inc.                  09/22/06                             Object-Oriented Programming 1-14
Modularization of data
           • Often in structured programming, each subroutine is given
             its quot;own little worldquot; of data:
                    – Arguments               float hypotenuse (a, b)
                                                 float a;
                    – Local variables            float b;
                                              {
                    – Return value               float c;
                                                 c = sqrt((a * a) + (b * b));
                                                 return c;
                                              }


           • One way structured programming helps is in modularizing
             data as well as functionality.
           • But sometimes, we still have to share information!

Copyright © 1996, 2000 Zeegee Software Inc.       09/22/06                Object-Oriented Programming 1-15
The status quo:
                                      non-OO programming
           • Programs consist of two separate entities: data structures and
             functions.
           • Data structures: integer, string, array, list, stack, binary tree,
             hashtable, person, etc.
           • Data structures are accessed and modified directly, or else by
             calling functions to perform the desired operations.

                               IntStack s;

                               s.size = 0;
                                                              Modify s by direct assignment
                               s.top = NULL;

                               istack_push(101, &s);          Modify/access s by via special
                               x = istack_pop(&s);            functions


Copyright © 1996, 2000 Zeegee Software Inc.        09/22/06                     Object-Oriented Programming 1-16
Problems with non-OO
                                         programming
           • Functions for manipulating the same data structure can differ in
             naming convention, argument order, etc.: difficult to
             build/understand code:
                                              s.size = 0;
                                              count = s_numelems(&s);
                                              istack_push(101, &s);
                                              x = pop_int_stack(&s);
                                              print_thing(INTSTACK, &s);


           • Ability/requirement to examine/modify parts of data structure
             results in programs which will fail if data structure changes.
           • Can never be sure we have all the functions we need to build
             complex applications with data structure.

Copyright © 1996, 2000 Zeegee Software Inc.                  09/22/06      Object-Oriented Programming 1-17
Problems with
                                       non-OO programming
       • To implement something similar (but not identical) to an existing data
         structure, must often duplicate large amounts of code.
       • Containers (arrays, lists, search trees, etc.) which can store different
         data types at the same time require lots of additional bookkeeping in
         the code:

                                   for (i = 0; i < size; i++) {

                                              thing = slot[i];

                                              if (thing->type == INT_ {
                                                       print_int(thing);            the switch
                                              }                                     statement
                                              else if (thing->type == STRING) {         of
                                                       print_string(thing);
                                              }                                       death
                                              else if (thing->type == CIRCLE) ...
                                                       ...
                                   }


Copyright © 1996, 2000 Zeegee Software Inc.               09/22/06                     Object-Oriented Programming 1-18
How does OO help?
           • Message passing paradigm provides clear, consistent syntax for
             accessing/manipulating objects.
           • Encapsulation provides way of making data and quot;helper
             functionsquot; inaccessible to prying eyes and sticky fingers.
           • Inheritance allows new data structures to be defined in terms of
             existing ones, re-using existing (and tested) code.
           • Dynamic binding means that data structures keep track of their
             types, so users of the data structures don't have to.
           • All objects come bundled with the complete set of functions that
             are needed to work with them.




Copyright © 1996, 2000 Zeegee Software Inc.          09/22/06        Object-Oriented Programming 1-19
THE OO UNIVERSE
           • Objects
           • Classes
           • Instance variables
           • Instance methods and messages
           • Pure OO environments
           • Class variables/methods
           • Constructors/destructors




Copyright © 1996, 2000 Zeegee Software Inc.     09/22/06    Object-Oriented Programming 1-20
Objects
           • An object is a bundle of information that models some
             high-level concept in the problem domain.
           • Generally a 1-to-1 correspondence between quot;real thingsquot; in
             the problem domain and objects in a running OO program.
                    – This is one reason that OO programs can be very intuitive to
                      work with: they're a kind of quot;virtual realityquot;.
           • The structure and behavior of an object is defined in the
             object's class description...


                You can think of objects as just another kind of data type, like integers
                and strings. For example, a boolean variable holds a very simple object
                which might model the state of an on/off switch...

Copyright © 1996, 2000 Zeegee Software Inc.     09/22/06                     Object-Oriented Programming 1-21
Objects
                                               An object for a      An object for
                                               person               their car

                       Lastname: Smith
                       Firstname: Jean
                       Age: 35
                       Weight: 120
                       Car:                                 Make: Ford
                                                            Model: Escort
                                                            License: THX-1138
                                                            Color: white
                                                            Miles: 64000




Copyright © 1996, 2000 Zeegee Software Inc.      09/22/06                    Object-Oriented Programming 1-22
Classes and instances
         • A class is a blueprint for creating many similar objects.
         • The created object is an instance of that class.
         • Objects created from the same class will have the same basic
           structure and functionality.
                  – All cars created from the same Ford Escort blueprints will look and
                    work basically the same.
         • Many instances can be created from a single class.
                  – Just as many Ford Escorts can be created from the same set of Ford
                    Escort blueprints.

                Think of objects as structs (C) or records (Pascal): there's a single type
                definition (the class), but many different structs/records (the instances) can be
                created from it.
Copyright © 1996, 2000 Zeegee Software Inc.         09/22/06                        Object-Oriented Programming 1-23
Classes and instances

                                                                  Make: Ford
                                                                  Model: Prefect
                                                                  License: HHG42
                                                                  Color: black
                               Make: String                       Miles: 42000
                               Model: String
                               License: String                              A Car instance
                               Color: Color
                               Miles: Integer
                                                                  Make: Ford
                                                                  Model: Escort
                                                                  License: TX118
                                                                  Color: white
                                                                  Miles: 64000

                                              Class: Car                    A Car instance

Copyright © 1996, 2000 Zeegee Software Inc.            09/22/06                    Object-Oriented Programming 1-24
Instance variables
           • An instance variable (or attribute) of an object is a piece of
             information attached to an instance (object).
                    – The name of a Person object, the model and year of a Car
                      object, etc.
           • The instance variables that an object has are defined in the
             object's class: an object can usually have many instance variables,
             of many different types.
           • Each object is given its own private space to hold its
             instance variables. Assigning a new value to an instance variable
             of one object does not affect the instance variables of any other
             object.
                If you think of objects as structs (C) or records (Pascal), then the
                instance variables are the structure elements.

Copyright © 1996, 2000 Zeegee Software Inc.          09/22/06            Object-Oriented Programming 1-25
Instance methods
           • When we define objects, we usually have an idea of what we
             want to do with them...
                    – I'm dealing with Person objects in an employee database... I want to be
                      able to ask each Person object their name, weight, and age.
                    – I'm dealing with Car objects in a driving simulation... I want to be able to
                      start a Car, change its speed, turn its steering wheel, etc.
           • An action that involves a single object as the
             quot;star playerquot; is usually implemented as a special kind of
             function/subroutine attached to that object's class, called an
             instance method (or, more commonly, just a method).




Copyright © 1996, 2000 Zeegee Software Inc.           09/22/06                        Object-Oriented Programming 1-26
Methods and messages
           • A message is the request you send to an object in order to get it
             to do something: perform an action, return a value, etc.
                                              someone.setName(quot;Picardquot;);



           • A method is the piece of code which is called to perform the
             activity requested by the message:
                                              Person::setName(String newname){
                                                 self.name = newname;
                                              }

           • Message passing and method invocation usually mean the same
             thing: the act of sending a message to an object, and having that
             object do something.


Copyright © 1996, 2000 Zeegee Software Inc.                 09/22/06             Object-Oriented Programming 1-27
What messages look like
           A message generally has three parts:
                    – The receiver: the object receiving the message.
                    – The method name: what we want the object to execute.
                    – The parameters: any arguments that the message takes.


                  receiver                    method              parameters


               someone.setName(quot;Jean-Lucquot;, quot;Picardquot;);


Copyright © 1996, 2000 Zeegee Software Inc.            09/22/06                Object-Oriented Programming 1-28
What methods look like
           • Like any other function, methods can take arguments.
           • Methods know which object received the message (they have
             to... after all, it's the star player!).

                  They might access the object               Person::setName(String new){
                                                                this->name = new;
                  through a special variable (C++'s          }
                  this, Smalltalk's self):
                                                             sub setName {
                  Or through a special argument
                                                                my ($self, $new) = @_;
                  given to the method (Perl,                    $self->{Name} = $new;
                  Python):                                   }

                  Or just access its instance variables      Person::setName(String new){
                  implicitly (C++, Smalltalk):                  name = new;
                                                             }


Copyright © 1996, 2000 Zeegee Software Inc.       09/22/06                     Object-Oriented Programming 1-29
An OO bestiary
                                              Real world                                      Software
                                                                                  class Car       {
                                                                                     String       itsModel;
                                                                                     int          itsYear;
       Classes                                                                       Tire
                                                                                     ...
                                                                                                  itsTires[4];

                                                     blueprint                    }




       Instances                                                                    myCar          myMom'sCar           myFriend'sCar
                                                        car


                                                                                 myCar
       Instance                                        steering wheel              itsModel    Es cor t
                                                                                   itsYear
       variables
                                                                                               19 90
                                                                                   itsTires    tire631 tire245    tire898   tire707
                                              seat            tires


                                                                                  myCar.start();
                                                                                  myCar.shiftGear(FIRST);
       Methods                                                                    myCar.accelerate();
                                                                                  myCar.turn(LEFT);
                                                     dashboard

Copyright © 1996, 2000 Zeegee Software Inc.                           09/22/06                                   Object-Oriented Programming 1-30
A sample class

            class Person {

                         String               name;
                         int                  age;                 instance variables
                         float                weight;

                         /* Change my weight: */
                         setWeight(int newWeight) {
                                weight = newWeight;                method
                         }

                         /* Return my weight, if I won't mind: */
                         getWeight() {
                                if (weight < 150)              method
                                       return weight;
                                else
                                       return -1;
                         }
            }

Copyright © 1996, 2000 Zeegee Software Inc.             09/22/06        Object-Oriented Programming 1-31
Using classes and objects

                                              Create instance of class Person


         Person kirk(quot;Kirk, James T.quot;);

         kirk.setWeight(190);
         kirk.setAge(37);

         wgt = kirk.getWeight();


                                              Send messages to object quot;kirkquot;




Copyright © 1996, 2000 Zeegee Software Inc.   09/22/06                   Object-Oriented Programming 1-32
Representing classes
                                              and objects
                                         Class                                   Object
                                                                        inst-var-1   value
                                     Classname                          inst-var-2   value
                                                                        inst-var-3   value




                                                inst-var-1
                         Classname              inst-var-2              inst-var-1   value
                                                inst-var-3              inst-var-2   value
                                                                        inst-var-3   value

                                                                        method-1(args)
                                                                        method-2(args)

                       Classname
                        inst-var-1        method-1(args)
                        inst-var-2        method-2(args)
                        inst-var-3




Copyright © 1996, 2000 Zeegee Software Inc.                  09/22/06                        Object-Oriented Programming 1-33
quot;Purequot; OO environments
           • In very quot;purequot; OO environments, everything is an object!
                    – Every class might be an instance of a special MetaClass class, which in
                      turn might be an instance of itself!
                    – Methods/functions might be instances of a special Code class.
           • This can be taken to surprising extremes... for example, in OPAL
             (Smalltalk), there is no if-then statement: instead, you send an
             ifTrue:ifFalse message to a Boolean object:
                                   method: getWeight
                                          (weight < 150.0)
                                                 ifTrue: [^weight]        % okay
                                                 ifFalse: [^-1]
                                          % no way!
                                   %



Copyright © 1996, 2000 Zeegee Software Inc.        09/22/06                     Object-Oriented Programming 1-34
Class methods
               If a class is just another kind of object, then it should have its
               own methods and respond to messages, right?
           • Right! Because of this, we usually divide methods into:
                    – Class methods, which are invoked when you send a message to a
                      class.
                    – Instance methods, which are invoked when you send a message to
                      an instance of a quot;normalquot; class.
                      We usually just call these methods.
           • The most common class method is the constructor, which
             returns a new instance. It's often called quot;newquot;:
                      /* Class method: */                     /* Instance method: */
                      p = Person.new(quot;Kirkquot;);                 p.setName(quot;Kirkquot;);


Copyright © 1996, 2000 Zeegee Software Inc.        09/22/06                  Object-Oriented Programming 1-35
Class methods, cont'd
               Class methods generally do not operate on instances!
               They are intended for performing utility functions that are
               strongly associated with a class, but that don't involve any
               particular instance of that class!
           • Other candidates for class methods:
                    – Storing/retrieving objects of this class by some appropriate
                      lookup key (e.g., the name).
                    – Asking for information related to the class as a whole:
                         /* Get the next available license plate. */
                         classmethod Car::nextLicensePlate {
                                 CurrentLicense += 1;
                                 return quot;ABCquot; + CurrentLicense;
                         }

Copyright © 1996, 2000 Zeegee Software Inc.     09/22/06                 Object-Oriented Programming 1-36
Class variables
               If a class is just another kind of object, then it should have its
               own instance variables too, right?
           • Right! And these special instance variables are commonly
             called class variables.
           • In many OO environments, the only places you can access a
             class variable are...
                    – From inside a class method of that class
                    – From inside an instance method of that class
           • Class variables are kind of like global variables which are
             associated with a particular class.


Copyright © 1996, 2000 Zeegee Software Inc.         09/22/06             Object-Oriented Programming 1-37
Constructors
           • As mentioned before, constructors are special functions
             (usually class or instance methods) used to initialize or
             return a new object.
           • Most common name for a constructor is new().
           • Depending on the OO environment, a class might have
             many constructors, each of which builds an object a
             different way.
           • Different constructors might have different names (Perl5,
             Smalltalk), or they might all have the same name but be
             distinguished by having different numbers/types of their
             arguments (C++).


Copyright © 1996, 2000 Zeegee Software Inc.       09/22/06     Object-Oriented Programming 1-38
Sample constructors
           • In C++, constructors are special unnamed instance
             methods, invoked when you declare object variables:
                            // Create a Person from nothing:
                            Person anonymous;

                            // Create a Person from name, age, and weight:
                            Person nsolo(quot;Napoleon Soloquot;, 35, 190.0);

                            // Create a Person from another Person:
                            Person clone(nsolo);


           • In Perl5, constructors are class methods, and can be
             named whatever you like:
                            # Create a Person from name, age, and weight:
                            $nsolo = Person->new(      Name=>quot;Napoleon Soloquot;,
                                       Age=>35,
                                       Weight=>190.0);

Copyright © 1996, 2000 Zeegee Software Inc.       09/22/06                 Object-Oriented Programming 1-39
Destructors
           • Objects often end their lives be being explicitly deleted
             (C++), going out of scope (C++), or being garbage-collected
             (Java, Perl, Smalltalk).
           • We sometimes want to get control of the object just before
             it vanishes, to clean up after it properly:
                    – We may have opened files, which we want to close.
                    – We may have allocated memory, which we want to free.
           • The special instance method invoked just as an object is
             about to disappear is called the destructor.
           • Classes generally have one destructor, which takes no
             arguments.

Copyright © 1996, 2000 Zeegee Software Inc.       09/22/06           Object-Oriented Programming 1-40
OO FEATURES/BENEFITS
           • Encapsulation
           • Polymorphism
           • Subclasses and inheritance
           • Class hierarchies and inheritance schemes
           • Abstract/concrete classes
           • Static/dynamic binding




Copyright © 1996, 2000 Zeegee Software Inc.   09/22/06   Object-Oriented Programming 1-41
Encapsulation
           • There is a piece of wisdom which has made its way down
             through centuries of software development...
                        Teams work best when members of those teams know as little
                        about each others' work as possible.
           • When one software module depends on the low-level
             implementation details of another module, unexplained bugs
             tend to appear as the system evolves.
           • The quot;back roomquot; metaphor.
           • We need a way of not only suggesting that programmers
             stay out of the quot;back roomquot;, but enforcing it.


Copyright © 1996, 2000 Zeegee Software Inc.        09/22/06               Object-Oriented Programming 1-42
Encapsulation
           • Encapsulation means that some or all of an object's internal
             structure is quot;hiddenquot; from the outside world.
           • Hidden information may only be accessed through the
             object's methods, called the object's public interface.
           • Access to object is safe, controlled.
           • Methods, like instance variables, may also be hidden to
             create private quot;helper functionsquot;.
                                                              quot;privatequot; internal
                                                              structure/methods
                quot;public interfacequot;                            (the chocolate filling)
                methods (the hard
                candy shell)


Copyright © 1996, 2000 Zeegee Software Inc.        09/22/06          Object-Oriented Programming 1-43
Objects as
                                     quot;goodsquot; and quot;servicesquot;

                             Person::income()                                                 An object of class
                             {
                               return (salary - expenses);                                       quot;Personquot;
                             }

       What is
     your yearly
                                                                                 expenses
      income?



                                                                        salary

                                                              name                    age


                      user        method                              structure                 method
                    of object (public interface)                  (private portion)         (public interface)

Copyright © 1996, 2000 Zeegee Software Inc.                  09/22/06                           Object-Oriented Programming 1-44
Encapsulation as maintainability

                                              Person::income() {
                                                return (salary + (savings * intRate) - expenses -
                                                        tax(salary,savings,deductions));
                                              }

             What is
           your yearly                                                              deductions
            income?
                                                                                                 expenses

                                                                                                                     other
                                                                                        salary                      methods
                                                                                              savings
                                                                                 name                   age


                      user        method                                               structure
                    of object (public interface)                                   (private portion)

Copyright © 1996, 2000 Zeegee Software Inc.                           09/22/06                                Object-Oriented Programming 1-45
Encapsulation
                    for class builders and class users

                                              Class builder                 Class user
      Goal                             Create a reusable,             Quickly get and use a class.
                                       maintainable class with an
                                       understandable interface.

      Approach                         Hide structure and             Examine and use operations
                                       implementation details from    in class interface.
                                       user.

      Benefits                         May change structure and       Understandable interface;
                                       algorithms without affecting   can be used without fear of
                                       user.                          quot;breakingquot; object.

      Costs                            Reusable classes must be       Access to data through
                                       carefully planned.             operations may be slower
                                                                      than direct access.

Copyright © 1996, 2000 Zeegee Software Inc.                09/22/06                  Object-Oriented Programming 1-46
Polymorphism
        • Literally, quot;one entity, many forms.quot;
        • Means the same name can be assigned to different
          functions/methods: the actual function triggered by the
          name is determined by the types of the arguments.
        • Sometimes called overloading.
        • Allows designers to use the most quot;naturalquot; and understandable
          names for functions:
                          /* Matrix M times vector v: */
                          y = M * x;

                          /* Matrix M times scalar: */       The multiplication operator
                          N = M * 2;                              is overloaded

                          /* Vector x times scalar: */
                          y = 4 * x;
Copyright © 1996, 2000 Zeegee Software Inc.       09/22/06             Object-Oriented Programming 1-47
With/without polymorphism
            • Without polymorphism, we need a unique name for
              every function:
                  /* Stuff with matrices, vectors, and scalars: */
                  mat_vec_mult(
                     M,
                     vec_times_scal(
                        vec_cross(vec_minus(A, B), vec_plus(A, B)),
                        -1)
                     );


            • With polymorphism, we can use natural names and
              operators, shrinking code and increasing readability:
                  /* Stuff with matrices, vectors, and scalars: */
                  M * (-1 * (A-B).cross(A+B))



Copyright © 1996, 2000 Zeegee Software Inc.   09/22/06        Object-Oriented Programming 1-48
More fun with polymorphism

                  Overloading '+' to perform string concatenation:
                   fullname = lastname + quot;, quot; + firstname;


                  Overloading 'min' to compare different types:
                   firstInDictionary = min(quot;astroquot;, quot;zodiacquot;);
                   lowerNumber =       min(42, 99);
                   closerToOrigin =    min(complex1, complex2);


                  Overloading 'print' to print different entities to different
                  kinds of output:
                   aPerson.print(myFile);
                   aPerson.print(myScreen);
                   aPerson.print(myPrinter);
                   aPlace.print(myPrinter);

Copyright © 1996, 2000 Zeegee Software Inc.   09/22/06                Object-Oriented Programming 1-49
Polymorphism
                    for class builders and class users

                                              Class builder                  Class user
      Goal                             Create maintainable,            Quickly get and use a class.
                                       reusable, class library with
                                       understandable interfaces.

      Approach                         Use polymorphism to create      Examine and use operations
                                       similarity between class        in class interface.
                                       interfaces & speed learning.

      Benefits                         Interfaces to new classes are   Learn one class, and learn a
                                       already partially designed.     bunch!


      Costs                            Must pick method names          Misnamed methods which
                                       and arguments carefully.        are similar but not identical
                                       Must not reuse names if         can be confusing.
                                       purposes differ!
Copyright © 1996, 2000 Zeegee Software Inc.                09/22/06                    Object-Oriented Programming 1-50
Subclasses
           • It is often desirable to create a new class which is a special
             case of an existing class, possibly with some small changes in
             structure or methods:
               class Person {                                  class Doctor {

                     String            name;                       String   name;
                     int               age;                        int      age;
                     float             weight;                     float    weight;
                                                                   School   medSchool;
                     void setWeight(wgt) {…}                       String   licenseNo;
                     int getWeight() {…}
               }                                                   void setWeight(wgt) {…}
                                                                   int getWeight() {…}
                                                                   void examine(patient) {…}
                                                               }

           • To re-use the existing code, make the new class a subclass
             of the existing one...

Copyright © 1996, 2000 Zeegee Software Inc.         09/22/06                      Object-Oriented Programming 1-51
Subclasses and inheritance

           • If class C is a subclass of class P, then C is a child class of P,
             and P is a parent class or superclass of C.
           • A child class automatically inherits all the structure and
             functionality of its parent class. When defining a subclass,
             you will usually choose to:
                    – Add new instance variables and methods.
                    – Override some methods of the parent class, providing new
                      methods.
                    – Exclude some of the instance variables and methods of the
                      parent class.



Copyright © 1996, 2000 Zeegee Software Inc.   09/22/06                Object-Oriented Programming 1-52
Adding structure/behavior
                                   in subclasses
           When you specify instance variables/methods in a child class that
           are not present in the parent class, instances of the child class get
           the new structure and functionality in addition to what they would
           get from the parent alone:
                                       Classes                            Instances
                     class Person {                            a Person:
                        int age;
                                                                    age          52
                           int getAge() {…}                         getAge()
                     }



                     class Doctor : Person {
                                                               a Doctor:
                        String licenseNo;                           age          52
                        void examine(patient) {…}                   licenseNo    AMA-1179150-6
                     }                                              getAge()
                                                                    examine(patient)



Copyright © 1996, 2000 Zeegee Software Inc.         09/22/06                           Object-Oriented Programming 1-53
Overriding behavior in subclasses
           When you specify a method in a child class that already exists in
           the parent class, the child's method overrides the parent's method:
           instances of the child will execute the child's method.
                                       Classes                        Instances
                     class Person {
                        String name;
                                                               name        Leonard McCoy
                        String getName() {
                           return name;                        getName()
                        }
                     }                                        Uses getName() of Person



                     class Doctor : Person {
                        String getName() {                     name        Leonard McCoy
                           return quot;Dr. quot; + name;
                        }                                      getName()
                     }
                                                              Uses getName() of Doctor
Copyright © 1996, 2000 Zeegee Software Inc.        09/22/06                      Object-Oriented Programming 1-54
Overriding with default behavior
           Sometimes it is desirable to override a parent's method, and yet
           also to invoke the parent's method to do some of the work:
                                          Classes                               Instances
                     class Person {
                        String first, mi, last;                        first        Leonard
                                                                       mi           N
                           String getName() {
                                                                       last         McCoy
                              return first + mi + last;
                           }                                           getName()
                     }
                                                                  getName() returns quot;Leonard N. McCoyquot;


                     class Doctor : Person {
                                                                        first       Leonard
                           String getName() {                           mi          N
                              return                                    last        McCoy
                                 quot;Dr.quot; +
                                 Person::getName();                     getName()
                           }
                     }                                           getName() returns quot;Dr. Leonard N. McCoyquot;

Copyright © 1996, 2000 Zeegee Software Inc.           09/22/06                          Object-Oriented Programming 1-55
Exclusion in subclasses
           If a child class is a very special case of its parent, it may not need all
           the instance variables in its parent. Some languages allow
           variables/methods to be excluded in a subclass.
                                          Classes                       Instances
                     class Rectangle {
                                                               top         30
                           int    top;                         left       120
                           int    left;                        width       50
                           int    width;                       height      70
                           int    height;                      area()
                     }



                     class Square : Rectangle {
                                                               top         30
                           exclude width;                      left       120
                           exclude height;                     side       60
                           int side;                           area()
                     }

Copyright © 1996, 2000 Zeegee Software Inc.         09/22/06                    Object-Oriented Programming 1-56
Class hierarchies
           Usually, a class can have many child classes, each of which can
           have their own child classes. A quot;family treequot; of all the classes
           in a program is called a class hierarchy...


                                                                {
                The base classes of a given class O                 GP       GP       GP        GP
                are those classes from which O
                ultimately inherits (parents,                            P                  P
                grandparents, etc.).

                                                                                  O

                                                                {
                The derived classes of a given class
                O are those classes which                                C                  C
                ultimately inherit from O (children,
                                                                    GC       GC       GC        GC
                grandchildren, etc.).


Copyright © 1996, 2000 Zeegee Software Inc.          09/22/06                         Object-Oriented Programming 1-57
Inheritance schemes
           One important way we characterize an OO language is by
           the kind of inheritance we are allowed to use...
           • If classes can't be derived from parents,
             we have a no-inheritance language.               A       B       C        D
             Its class hierarchies will be flat.
                                                                      A                 G
           • If each class can have at most one parent, we
             have a single-inheritance language.                  B         F           H
             Its class hierarchies will resemble trees.
                                                              C       D         E

           • If each class to can have more than one                  A                 G
             parent class, we have a multiple-inheritance
             language. Its class hierarchies will be graphs       B         F           H
             (DAGs).
                                                              C       D         E

Copyright © 1996, 2000 Zeegee Software Inc.       09/22/06                Object-Oriented Programming 1-58
A single-inheritance class hierarchy

                                              Object
               more
              general
                                                                             name
                                                                    Person   age
                                                                             weight



                                                       medSchool
                                              Doctor                              Typist        wpm
              more                                     licenseNo

             specific

                                                 freudian?
                            Psychiatrist         hasCouch?




Copyright © 1996, 2000 Zeegee Software Inc.              09/22/06                     Object-Oriented Programming 1-59
A single-inheritance scheme
           Object
                                                            name      McCoy, Leonard
                                                            age       52
           Person                                           weight    150
            name         setWeight(wgt)                     school    Johns Hopkins
            age          getWeight()
            weight                                          license   AMA-1179150-6


           Doctor
           school        getWeight()
           license       examine(patient)




           Dentist
            painless? cleanTeeth(patient)
                                                         An instance of quot;Doctorquot;
Copyright © 1996, 2000 Zeegee Software Inc.   09/22/06                    Object-Oriented Programming 1-60
A multiple-inheritance scheme
                                                                                  name      McCoy, Leonard
                     Object
                                                                                  age       52
                                                                                  weight    150
                                                                                  school    Johns Hopkins
                    Person                                                        license   AMA-1179150-6
                     name        setWeight(wgt)                                   rank      CMO
                     age         getWeight()
                     weight                                                       ship      U.S.S. Enterprise


 Doctor                                       NavyOfficer
school       getWeight()                      rank   hoistTheMainsail()
license      examine(patient)                 ship   swabTheDeck()




                     NavyDoctor

                                                                              An instance of quot;NavyDoctorquot;
Copyright © 1996, 2000 Zeegee Software Inc.                        09/22/06                       Object-Oriented Programming 1-61
Advantages/disadvantages
                                 of using inheritance
                          Advantages                          Disadvantages
        • Code sharing.                                  • Requires an OO
                                                           programming environment.
        • Software reusability without
          disturbing working code.                       • Can inherit attributes and
                                                           operations that are not
        • Overloading helps develop
                                                           desired.
          standard class interfaces.
                                                         • Too many subclasses
        • Encourages design by
                                                           makes debugging difficult.
          extensions/refinements,
          rather than mass re-                           • Performance may be
          implementation.                                  degraded.

Copyright © 1996, 2000 Zeegee Software Inc.   09/22/06                    Object-Oriented Programming 1-62
Abstract classes
                                              vs. concrete classes
           • Abstract classes are classes which do not have instances
             of their own: they exist solely so that their child classes
             may inherit structure and/or functionality.
           • Concrete classes are classes which may have instances.
             A concrete class may also have child classes.
                                                       color                          Abstract class
                                              Shape    pattern
                                                                                      Concrete class
                                                       hasBorder


                                                                        topLeft                    center
                                Polygon                     Rect        botRight   Circle          radius



      Regular               center              Irregular   points            Round   radius
                            numSides
      Polygon                                   Polygon                       Rect

Copyright © 1996, 2000 Zeegee Software Inc.                  09/22/06                          Object-Oriented Programming 1-63
Static binding vs.
                                              dynamic binding
           In some OO languages, objects don't keep
           track of their types:                                   this is called
                                                                         static
                    – An object's class (and, therefore, its           binding
                      behavior) is determined at compile-
                      time by the class of the variable it's
                      placed in (or referenced through).
           In other OO languages, objects know
                                                                   this is called
           their types:                                              dynamic
                    – An object's class is determined at              binding
                      run-time. Not affected by the class of
                      the variable the object it's placed in (or
                      referenced through).


Copyright © 1996, 2000 Zeegee Software Inc.          09/22/06        Object-Oriented Programming 1-64
Behavior under
                                static vs. dynamic binding
           Recall our example where Doctor overrode the getName() method of
           Person. Now consider the following program:
                                              Doctor julian(quot;Bashirquot;);
                                              Person someone = julian;

                                              print(someone.getName());

                                    If we get...                              If we get...

            Bashir                                                      Dr. Bashir


          ...then the Doctor behaves like a                           ...then the Doctor behaves like a
          Person after being stored in a                              Doctor even after being stored in a
          variable of type Person: we've got                          variable of type Person: we've got
          static binding.                                             dynamic binding.

Copyright © 1996, 2000 Zeegee Software Inc.                09/22/06                          Object-Oriented Programming 1-65
Containers with
                                 static vs. dynamic binding
                             for (i = 0; i < size; i++) {
                                Object *thing = slot[i];

                                   switch (*thing.type) {
                                   case INT:
                                      (*(IntObject *)thing).print();
                                      break;                                       static
                                   case STRING:
                                      (*(StringObject *)thing).print();
                                                                                 binding
                                                                                 (yuck… just
                                      break;
                                                                               like non-OO!)
                                   case CIRCLE:
                                      (*(CircleObject *)thing).print();
                                      break;
                                      ...
                                   }
                             }

                             for (i = 0; i < size; i++) {                      dynamic
                                   slot[i].print()
                                                                                binding
                                                                                     (code it
                             }                                                     just once!)

Copyright © 1996, 2000 Zeegee Software Inc.             09/22/06          Object-Oriented Programming 1-66
Static binding vs.
                                              dynamic binding

                        Static binding                               Dynamic binding
     • Type of object fixed at                                  • Type of object determined at
       compile time, by type of                                   run time, so objects quot;know
       variable containing it.                                    what they arequot;.
     • Often results in quot;casequot; and                              • Eliminates complex quot;casequot; and
       quot;ifquot; statements.                                           quot;ifquot; statements.
     • Heterogeneous collections                                • Heterogeneous collections
       difficult to implement.                                    greatly simplified.
     • Easier to debug.                                         • Harder to debug.
     • No overhead at run-time.                                 • Slower from run-time
                                                                  lookups.
Copyright © 1996, 2000 Zeegee Software Inc.          09/22/06                        Object-Oriented Programming 1-67
What we've been leading up to:
                          software reuse
           The most important benefit of the OO approach is that by...
                    – Hiding implementation details (encapsulation)
                    – Reducing the number of different things you need to
                      remember (polymorphism)
                    – Minimizing the amount of redundant code that needs to be
                      built, tested, and maintained (subclassing)
                    – Helping existing code to not break just because someone has
                      added a new data type (dynamic binding)
           ...it makes it far easier for you to reuse software components.



Copyright © 1996, 2000 Zeegee Software Inc.    09/22/06                Object-Oriented Programming 1-68
OO DATABASES
           • What they are
           • How they compare with Relational Databases




Copyright © 1996, 2000 Zeegee Software Inc.        09/22/06   Object-Oriented Programming 1-69
What is a database?
           • A database is a repository for persistent information:
             information that exists even when no program is active,
             usually on disk.
           • A good database management system...
                    – Lets us model information in our problem domain accurately.
                    – Allow fast insert, update, and query of the information.
                    – Gives multiple users concurrent and reliable access to the
                      information (transaction management).
                    – Allows the information to be managed by application
                      programs (not just through a user interface).


Copyright © 1996, 2000 Zeegee Software Inc.           09/22/06           Object-Oriented Programming 1-70
Relational databases
           • Been around for decades.
           • Information placed in tables:
                    – Rows are individual data records.
                    – Columns are the attributes of those records.
           • Different tables are joined on common values of particular
             attributes:
               Table: Person                                      Table: Car
                    Name              Age      Car                  Make     Color   License
                    Arthur             36     ZZ9ZA                 Sirius   gold    HOG121
                   Trillian            32                           Nash     white    ZZ9ZA
                   Zaphod              34     HOG121


Copyright © 1996, 2000 Zeegee Software Inc.            09/22/06                        Object-Oriented Programming 1-71
Object-oriented databases
            • An OO database (OODB) is like a running OO program,
              except that the objects are persistent: they are stored on
              disk rather than in memory.
            • The objects in an OO database can send messages to each
              other, just as objects in OO programs can: message-
              sending can be used to perform queries, create and install
              new objects, send mail to users in a user database, etc.
            • Ability to design and implement custom container classes
              allows developers to optimize database structure based on
              queries to be supported.



Copyright © 1996, 2000 Zeegee Software Inc.   09/22/06         Object-Oriented Programming 1-72
Benefits of Relational DBs
                                      over OODBs
       OO Relational
                                              • Strong support in academic and
                                                commercial communities?
                                              • Declarative vs. procedural query
                                                language?
                                              • Underlying mathematical formalism for
                                                query optimization?
                                              • Existing natural-language and GUI
                                                interface packages?
                                              • Easy schema modification of large,
                                                populated databases?
Copyright © 1996, 2000 Zeegee Software Inc.              09/22/06                  Object-Oriented Programming 1-73
Benefits of OODBs
                                          over Relational DBs
       OO Relational
                                              Allows modeling of complex entities?

                                              Allows modeling of custom collections/indexes
                                              (such as quadtrees for fast spatial search)?

                                              Does not require duplication of data?


                                              Scalable performance: will queries be fast for very
                                              large, complex databases?

                                              Scalable storage: can database easily be
                                              distributed across many physical storage devices?

                                              Smooth interface to external environment (other
                                              databases, math libraries, email)?
Copyright © 1996, 2000 Zeegee Software Inc.                09/22/06                   Object-Oriented Programming 1-74
When is OO good to use?
           • Experience has shown that not all problem domains are
             perfectly suited for OO implementations. Things which can
             indicate OO as a good choice...
                    – Need to manage complex information.
                    – Need to model real-world concepts and processes (e.g.,
                      simulations).
                    – Large number of developers to be coordinated.
                    – Correctness, maintainability, and evolvability more important
                      than blinding speed.
                    – Rapid/evolutionary prototyping environment.



Copyright © 1996, 2000 Zeegee Software Inc.    09/22/06                 Object-Oriented Programming 1-75
PROJECT: SIM

           Many of you have played computer games where a realistic
           world is being modelled and maybe simulated: SimCity, Zork,
           Trinity, etc.
           Ever wonder how people built those things?
           Ever try to yourself?
           Imagine that you want to create a swords-and-sorcery-style
           text adventure. Of course you're going to do an OO
           implementation. :-)
           What classes will you need? What attributes and methods
           will they have? How will they interact? How quot;realquot;
           can/should the physics of your world be?

Copyright © 1996, 2000 Zeegee Software Inc.       09/22/06   Object-Oriented Programming 1-76

More Related Content

What's hot

Integrating Quality into Project Portfolio Management
Integrating Quality into Project Portfolio ManagementIntegrating Quality into Project Portfolio Management
Integrating Quality into Project Portfolio ManagementChris Sterling
 
Framework Engineering_Final
Framework Engineering_FinalFramework Engineering_Final
Framework Engineering_FinalYoungSu Son
 
Towards a Push-Button Release
Towards a Push-Button ReleaseTowards a Push-Button Release
Towards a Push-Button ReleaseChris Sterling
 
Jesse Robbins Keynote - Hacking Culture @ Cloud Expo Europe 2013
Jesse Robbins Keynote - Hacking Culture @ Cloud Expo Europe 2013Jesse Robbins Keynote - Hacking Culture @ Cloud Expo Europe 2013
Jesse Robbins Keynote - Hacking Culture @ Cloud Expo Europe 2013Jesse Robbins
 
Agile User Experience
Agile User ExperienceAgile User Experience
Agile User ExperienceACM
 
Testing in an Agile Context 2011
Testing in an Agile Context 2011Testing in an Agile Context 2011
Testing in an Agile Context 2011Chris Sterling
 
Agile Project Management and Scrum Introduction
Agile Project Management and Scrum IntroductionAgile Project Management and Scrum Introduction
Agile Project Management and Scrum IntroductionEric Krock
 
LatJUG. Spring Roo
LatJUG. Spring RooLatJUG. Spring Roo
LatJUG. Spring Roodenis Udod
 
Graphicae Product Overview
Graphicae Product OverviewGraphicae Product Overview
Graphicae Product OverviewGraphicae
 
Dollars and Dates are Killing Agile
Dollars and Dates are Killing AgileDollars and Dates are Killing Agile
Dollars and Dates are Killing AgileChris Sterling
 
The Software Debt Bubble: Is It About to Burst
The Software Debt Bubble: Is It About to BurstThe Software Debt Bubble: Is It About to Burst
The Software Debt Bubble: Is It About to BurstChris Sterling
 
Surviving The Software Development Process
Surviving The Software Development ProcessSurviving The Software Development Process
Surviving The Software Development Processfrog
 
Cocoon Best Practises
Cocoon Best PractisesCocoon Best Practises
Cocoon Best Practisesmr.quinn
 
Sioux Hot-or-Not: Domain Driven Design (Edwin Van Dillen)
Sioux Hot-or-Not: Domain Driven Design (Edwin Van Dillen)Sioux Hot-or-Not: Domain Driven Design (Edwin Van Dillen)
Sioux Hot-or-Not: Domain Driven Design (Edwin Van Dillen)siouxhotornot
 
Enterprise IPv6 Deployment
Enterprise IPv6 Deployment Enterprise IPv6 Deployment
Enterprise IPv6 Deployment Cisco Canada
 
Introduction to OSLC
Introduction to OSLCIntroduction to OSLC
Introduction to OSLCopenservices
 
Boeing Webinar - Integrating Quality in Portfolio Management - oct 2010
Boeing Webinar - Integrating Quality in Portfolio Management -  oct 2010Boeing Webinar - Integrating Quality in Portfolio Management -  oct 2010
Boeing Webinar - Integrating Quality in Portfolio Management - oct 2010Brent Barton
 

What's hot (20)

Integrating Quality into Project Portfolio Management
Integrating Quality into Project Portfolio ManagementIntegrating Quality into Project Portfolio Management
Integrating Quality into Project Portfolio Management
 
Framework Engineering_Final
Framework Engineering_FinalFramework Engineering_Final
Framework Engineering_Final
 
Towards a Push-Button Release
Towards a Push-Button ReleaseTowards a Push-Button Release
Towards a Push-Button Release
 
Jesse Robbins Keynote - Hacking Culture @ Cloud Expo Europe 2013
Jesse Robbins Keynote - Hacking Culture @ Cloud Expo Europe 2013Jesse Robbins Keynote - Hacking Culture @ Cloud Expo Europe 2013
Jesse Robbins Keynote - Hacking Culture @ Cloud Expo Europe 2013
 
Agile User Experience
Agile User ExperienceAgile User Experience
Agile User Experience
 
Testing in an Agile Context 2011
Testing in an Agile Context 2011Testing in an Agile Context 2011
Testing in an Agile Context 2011
 
Agile Project Management and Scrum Introduction
Agile Project Management and Scrum IntroductionAgile Project Management and Scrum Introduction
Agile Project Management and Scrum Introduction
 
LatJUG. Spring Roo
LatJUG. Spring RooLatJUG. Spring Roo
LatJUG. Spring Roo
 
Graphicae Product Overview
Graphicae Product OverviewGraphicae Product Overview
Graphicae Product Overview
 
Fast track to the 9s via the cloud
Fast track to the 9s via the cloudFast track to the 9s via the cloud
Fast track to the 9s via the cloud
 
Dollars and Dates are Killing Agile
Dollars and Dates are Killing AgileDollars and Dates are Killing Agile
Dollars and Dates are Killing Agile
 
Utah PMA Quarterly Meeting, June, 2009
Utah PMA Quarterly Meeting, June, 2009Utah PMA Quarterly Meeting, June, 2009
Utah PMA Quarterly Meeting, June, 2009
 
The Software Debt Bubble: Is It About to Burst
The Software Debt Bubble: Is It About to BurstThe Software Debt Bubble: Is It About to Burst
The Software Debt Bubble: Is It About to Burst
 
Surviving The Software Development Process
Surviving The Software Development ProcessSurviving The Software Development Process
Surviving The Software Development Process
 
Cocoon Best Practises
Cocoon Best PractisesCocoon Best Practises
Cocoon Best Practises
 
Sioux Hot-or-Not: Domain Driven Design (Edwin Van Dillen)
Sioux Hot-or-Not: Domain Driven Design (Edwin Van Dillen)Sioux Hot-or-Not: Domain Driven Design (Edwin Van Dillen)
Sioux Hot-or-Not: Domain Driven Design (Edwin Van Dillen)
 
Agile Planning
Agile PlanningAgile Planning
Agile Planning
 
Enterprise IPv6 Deployment
Enterprise IPv6 Deployment Enterprise IPv6 Deployment
Enterprise IPv6 Deployment
 
Introduction to OSLC
Introduction to OSLCIntroduction to OSLC
Introduction to OSLC
 
Boeing Webinar - Integrating Quality in Portfolio Management - oct 2010
Boeing Webinar - Integrating Quality in Portfolio Management -  oct 2010Boeing Webinar - Integrating Quality in Portfolio Management -  oct 2010
Boeing Webinar - Integrating Quality in Portfolio Management - oct 2010
 

Similar to OOP Building Blocks: Classes, Objects & Messaging

BLUG 2013 - Mobile Application Delivery - Choices, choices, choices
BLUG 2013 - Mobile Application Delivery - Choices, choices, choicesBLUG 2013 - Mobile Application Delivery - Choices, choices, choices
BLUG 2013 - Mobile Application Delivery - Choices, choices, choicesRené Winkelmeyer
 
Agile Software Development In The Large
Agile Software Development In The LargeAgile Software Development In The Large
Agile Software Development In The LargeConSanFrancisco123
 
Make software like they make cars!
Make software like they make cars!Make software like they make cars!
Make software like they make cars!Ashish Belagali
 
Slides chapter 1
Slides chapter 1Slides chapter 1
Slides chapter 1gvkmku
 
(Isc)² secure johannesburg
(Isc)² secure johannesburg (Isc)² secure johannesburg
(Isc)² secure johannesburg Tunde Ogunkoya
 
The Case for Low-code Development
The Case for Low-code DevelopmentThe Case for Low-code Development
The Case for Low-code DevelopmentLinx
 
How to design a 'Good' Embedded Software?
How to design a 'Good' Embedded Software?How to design a 'Good' Embedded Software?
How to design a 'Good' Embedded Software?apurvaprabhakar
 
Demystifying the Mobile Container - PART I
Demystifying the Mobile Container - PART IDemystifying the Mobile Container - PART I
Demystifying the Mobile Container - PART IRelayware
 
No Silver Bullet - Essence and Accidents of Software Engineering
No Silver Bullet - Essence and Accidents of Software EngineeringNo Silver Bullet - Essence and Accidents of Software Engineering
No Silver Bullet - Essence and Accidents of Software EngineeringAditi Abhang
 
Challenges In Managing Embedded Product Development
Challenges In Managing Embedded Product DevelopmentChallenges In Managing Embedded Product Development
Challenges In Managing Embedded Product DevelopmentAtul Nene
 
Fresche Legacy Case Study: Innovative Computing
Fresche Legacy Case Study: Innovative ComputingFresche Legacy Case Study: Innovative Computing
Fresche Legacy Case Study: Innovative ComputingFresche Solutions
 
Unosat19 April09
Unosat19 April09Unosat19 April09
Unosat19 April09guestf13366
 
Dublin Unity User Group Meetup Sept 2015
Dublin Unity User Group Meetup Sept 2015Dublin Unity User Group Meetup Sept 2015
Dublin Unity User Group Meetup Sept 2015Dominique Boutin
 
Evaluation Of The Final Product
Evaluation Of The Final ProductEvaluation Of The Final Product
Evaluation Of The Final Productmiketh16
 
Hybrid Mobile App Development Frameworks 2016
Hybrid Mobile App Development Frameworks 2016Hybrid Mobile App Development Frameworks 2016
Hybrid Mobile App Development Frameworks 2016PixelCrayons
 
software project management Assumption about conventional model
software project management Assumption about conventional modelsoftware project management Assumption about conventional model
software project management Assumption about conventional modelREHMAT ULLAH
 
Top 13 best front end web development tools to consider in 2021
Top 13 best front end web development tools to consider in 2021Top 13 best front end web development tools to consider in 2021
Top 13 best front end web development tools to consider in 2021Samaritan InfoTech
 
Application Building The Glowe Way
Application Building The Glowe WayApplication Building The Glowe Way
Application Building The Glowe WayDavy Loots
 

Similar to OOP Building Blocks: Classes, Objects & Messaging (20)

BLUG 2013 - Mobile Application Delivery - Choices, choices, choices
BLUG 2013 - Mobile Application Delivery - Choices, choices, choicesBLUG 2013 - Mobile Application Delivery - Choices, choices, choices
BLUG 2013 - Mobile Application Delivery - Choices, choices, choices
 
Agile Software Development In The Large
Agile Software Development In The LargeAgile Software Development In The Large
Agile Software Development In The Large
 
Make software like they make cars!
Make software like they make cars!Make software like they make cars!
Make software like they make cars!
 
Slides chapter 1
Slides chapter 1Slides chapter 1
Slides chapter 1
 
(Isc)² secure johannesburg
(Isc)² secure johannesburg (Isc)² secure johannesburg
(Isc)² secure johannesburg
 
The Case for Low-code Development
The Case for Low-code DevelopmentThe Case for Low-code Development
The Case for Low-code Development
 
How to design a 'Good' Embedded Software?
How to design a 'Good' Embedded Software?How to design a 'Good' Embedded Software?
How to design a 'Good' Embedded Software?
 
Demystifying the Mobile Container - PART I
Demystifying the Mobile Container - PART IDemystifying the Mobile Container - PART I
Demystifying the Mobile Container - PART I
 
No Silver Bullet - Essence and Accidents of Software Engineering
No Silver Bullet - Essence and Accidents of Software EngineeringNo Silver Bullet - Essence and Accidents of Software Engineering
No Silver Bullet - Essence and Accidents of Software Engineering
 
Chapter 01
Chapter 01Chapter 01
Chapter 01
 
Challenges In Managing Embedded Product Development
Challenges In Managing Embedded Product DevelopmentChallenges In Managing Embedded Product Development
Challenges In Managing Embedded Product Development
 
Fresche Legacy Case Study: Innovative Computing
Fresche Legacy Case Study: Innovative ComputingFresche Legacy Case Study: Innovative Computing
Fresche Legacy Case Study: Innovative Computing
 
Unosat19 April09
Unosat19 April09Unosat19 April09
Unosat19 April09
 
Dublin Unity User Group Meetup Sept 2015
Dublin Unity User Group Meetup Sept 2015Dublin Unity User Group Meetup Sept 2015
Dublin Unity User Group Meetup Sept 2015
 
Software Engineering
Software EngineeringSoftware Engineering
Software Engineering
 
Evaluation Of The Final Product
Evaluation Of The Final ProductEvaluation Of The Final Product
Evaluation Of The Final Product
 
Hybrid Mobile App Development Frameworks 2016
Hybrid Mobile App Development Frameworks 2016Hybrid Mobile App Development Frameworks 2016
Hybrid Mobile App Development Frameworks 2016
 
software project management Assumption about conventional model
software project management Assumption about conventional modelsoftware project management Assumption about conventional model
software project management Assumption about conventional model
 
Top 13 best front end web development tools to consider in 2021
Top 13 best front end web development tools to consider in 2021Top 13 best front end web development tools to consider in 2021
Top 13 best front end web development tools to consider in 2021
 
Application Building The Glowe Way
Application Building The Glowe WayApplication Building The Glowe Way
Application Building The Glowe Way
 

Recently uploaded

Call US-88OO1O2216 Call Girls In Mahipalpur Female Escort Service
Call US-88OO1O2216 Call Girls In Mahipalpur Female Escort ServiceCall US-88OO1O2216 Call Girls In Mahipalpur Female Escort Service
Call US-88OO1O2216 Call Girls In Mahipalpur Female Escort Servicecallgirls2057
 
Independent Call Girls Andheri Nightlaila 9967584737
Independent Call Girls Andheri Nightlaila 9967584737Independent Call Girls Andheri Nightlaila 9967584737
Independent Call Girls Andheri Nightlaila 9967584737Riya Pathan
 
Flow Your Strategy at Flight Levels Day 2024
Flow Your Strategy at Flight Levels Day 2024Flow Your Strategy at Flight Levels Day 2024
Flow Your Strategy at Flight Levels Day 2024Kirill Klimov
 
NewBase 19 April 2024 Energy News issue - 1717 by Khaled Al Awadi.pdf
NewBase  19 April  2024  Energy News issue - 1717 by Khaled Al Awadi.pdfNewBase  19 April  2024  Energy News issue - 1717 by Khaled Al Awadi.pdf
NewBase 19 April 2024 Energy News issue - 1717 by Khaled Al Awadi.pdfKhaled Al Awadi
 
APRIL2024_UKRAINE_xml_0000000000000 .pdf
APRIL2024_UKRAINE_xml_0000000000000 .pdfAPRIL2024_UKRAINE_xml_0000000000000 .pdf
APRIL2024_UKRAINE_xml_0000000000000 .pdfRbc Rbcua
 
FULL ENJOY Call girls in Paharganj Delhi | 8377087607
FULL ENJOY Call girls in Paharganj Delhi | 8377087607FULL ENJOY Call girls in Paharganj Delhi | 8377087607
FULL ENJOY Call girls in Paharganj Delhi | 8377087607dollysharma2066
 
Darshan Hiranandani [News About Next CEO].pdf
Darshan Hiranandani [News About Next CEO].pdfDarshan Hiranandani [News About Next CEO].pdf
Darshan Hiranandani [News About Next CEO].pdfShashank Mehta
 
Annual General Meeting Presentation Slides
Annual General Meeting Presentation SlidesAnnual General Meeting Presentation Slides
Annual General Meeting Presentation SlidesKeppelCorporation
 
Chapter 9 PPT 4th edition.pdf internal audit
Chapter 9 PPT 4th edition.pdf internal auditChapter 9 PPT 4th edition.pdf internal audit
Chapter 9 PPT 4th edition.pdf internal auditNhtLNguyn9
 
8447779800, Low rate Call girls in New Ashok Nagar Delhi NCR
8447779800, Low rate Call girls in New Ashok Nagar Delhi NCR8447779800, Low rate Call girls in New Ashok Nagar Delhi NCR
8447779800, Low rate Call girls in New Ashok Nagar Delhi NCRashishs7044
 
Guide Complete Set of Residential Architectural Drawings PDF
Guide Complete Set of Residential Architectural Drawings PDFGuide Complete Set of Residential Architectural Drawings PDF
Guide Complete Set of Residential Architectural Drawings PDFChandresh Chudasama
 
8447779800, Low rate Call girls in Saket Delhi NCR
8447779800, Low rate Call girls in Saket Delhi NCR8447779800, Low rate Call girls in Saket Delhi NCR
8447779800, Low rate Call girls in Saket Delhi NCRashishs7044
 
Call Us 📲8800102216📞 Call Girls In DLF City Gurgaon
Call Us 📲8800102216📞 Call Girls In DLF City GurgaonCall Us 📲8800102216📞 Call Girls In DLF City Gurgaon
Call Us 📲8800102216📞 Call Girls In DLF City Gurgaoncallgirls2057
 
Kenya’s Coconut Value Chain by Gatsby Africa
Kenya’s Coconut Value Chain by Gatsby AfricaKenya’s Coconut Value Chain by Gatsby Africa
Kenya’s Coconut Value Chain by Gatsby Africaictsugar
 
Market Sizes Sample Report - 2024 Edition
Market Sizes Sample Report - 2024 EditionMarket Sizes Sample Report - 2024 Edition
Market Sizes Sample Report - 2024 EditionMintel Group
 
Organizational Structure Running A Successful Business
Organizational Structure Running A Successful BusinessOrganizational Structure Running A Successful Business
Organizational Structure Running A Successful BusinessSeta Wicaksana
 
Digital Transformation in the PLM domain - distrib.pdf
Digital Transformation in the PLM domain - distrib.pdfDigital Transformation in the PLM domain - distrib.pdf
Digital Transformation in the PLM domain - distrib.pdfJos Voskuil
 
Memorándum de Entendimiento (MoU) entre Codelco y SQM
Memorándum de Entendimiento (MoU) entre Codelco y SQMMemorándum de Entendimiento (MoU) entre Codelco y SQM
Memorándum de Entendimiento (MoU) entre Codelco y SQMVoces Mineras
 
8447779800, Low rate Call girls in Tughlakabad Delhi NCR
8447779800, Low rate Call girls in Tughlakabad Delhi NCR8447779800, Low rate Call girls in Tughlakabad Delhi NCR
8447779800, Low rate Call girls in Tughlakabad Delhi NCRashishs7044
 

Recently uploaded (20)

No-1 Call Girls In Goa 93193 VIP 73153 Escort service In North Goa Panaji, Ca...
No-1 Call Girls In Goa 93193 VIP 73153 Escort service In North Goa Panaji, Ca...No-1 Call Girls In Goa 93193 VIP 73153 Escort service In North Goa Panaji, Ca...
No-1 Call Girls In Goa 93193 VIP 73153 Escort service In North Goa Panaji, Ca...
 
Call US-88OO1O2216 Call Girls In Mahipalpur Female Escort Service
Call US-88OO1O2216 Call Girls In Mahipalpur Female Escort ServiceCall US-88OO1O2216 Call Girls In Mahipalpur Female Escort Service
Call US-88OO1O2216 Call Girls In Mahipalpur Female Escort Service
 
Independent Call Girls Andheri Nightlaila 9967584737
Independent Call Girls Andheri Nightlaila 9967584737Independent Call Girls Andheri Nightlaila 9967584737
Independent Call Girls Andheri Nightlaila 9967584737
 
Flow Your Strategy at Flight Levels Day 2024
Flow Your Strategy at Flight Levels Day 2024Flow Your Strategy at Flight Levels Day 2024
Flow Your Strategy at Flight Levels Day 2024
 
NewBase 19 April 2024 Energy News issue - 1717 by Khaled Al Awadi.pdf
NewBase  19 April  2024  Energy News issue - 1717 by Khaled Al Awadi.pdfNewBase  19 April  2024  Energy News issue - 1717 by Khaled Al Awadi.pdf
NewBase 19 April 2024 Energy News issue - 1717 by Khaled Al Awadi.pdf
 
APRIL2024_UKRAINE_xml_0000000000000 .pdf
APRIL2024_UKRAINE_xml_0000000000000 .pdfAPRIL2024_UKRAINE_xml_0000000000000 .pdf
APRIL2024_UKRAINE_xml_0000000000000 .pdf
 
FULL ENJOY Call girls in Paharganj Delhi | 8377087607
FULL ENJOY Call girls in Paharganj Delhi | 8377087607FULL ENJOY Call girls in Paharganj Delhi | 8377087607
FULL ENJOY Call girls in Paharganj Delhi | 8377087607
 
Darshan Hiranandani [News About Next CEO].pdf
Darshan Hiranandani [News About Next CEO].pdfDarshan Hiranandani [News About Next CEO].pdf
Darshan Hiranandani [News About Next CEO].pdf
 
Annual General Meeting Presentation Slides
Annual General Meeting Presentation SlidesAnnual General Meeting Presentation Slides
Annual General Meeting Presentation Slides
 
Chapter 9 PPT 4th edition.pdf internal audit
Chapter 9 PPT 4th edition.pdf internal auditChapter 9 PPT 4th edition.pdf internal audit
Chapter 9 PPT 4th edition.pdf internal audit
 
8447779800, Low rate Call girls in New Ashok Nagar Delhi NCR
8447779800, Low rate Call girls in New Ashok Nagar Delhi NCR8447779800, Low rate Call girls in New Ashok Nagar Delhi NCR
8447779800, Low rate Call girls in New Ashok Nagar Delhi NCR
 
Guide Complete Set of Residential Architectural Drawings PDF
Guide Complete Set of Residential Architectural Drawings PDFGuide Complete Set of Residential Architectural Drawings PDF
Guide Complete Set of Residential Architectural Drawings PDF
 
8447779800, Low rate Call girls in Saket Delhi NCR
8447779800, Low rate Call girls in Saket Delhi NCR8447779800, Low rate Call girls in Saket Delhi NCR
8447779800, Low rate Call girls in Saket Delhi NCR
 
Call Us 📲8800102216📞 Call Girls In DLF City Gurgaon
Call Us 📲8800102216📞 Call Girls In DLF City GurgaonCall Us 📲8800102216📞 Call Girls In DLF City Gurgaon
Call Us 📲8800102216📞 Call Girls In DLF City Gurgaon
 
Kenya’s Coconut Value Chain by Gatsby Africa
Kenya’s Coconut Value Chain by Gatsby AfricaKenya’s Coconut Value Chain by Gatsby Africa
Kenya’s Coconut Value Chain by Gatsby Africa
 
Market Sizes Sample Report - 2024 Edition
Market Sizes Sample Report - 2024 EditionMarket Sizes Sample Report - 2024 Edition
Market Sizes Sample Report - 2024 Edition
 
Organizational Structure Running A Successful Business
Organizational Structure Running A Successful BusinessOrganizational Structure Running A Successful Business
Organizational Structure Running A Successful Business
 
Digital Transformation in the PLM domain - distrib.pdf
Digital Transformation in the PLM domain - distrib.pdfDigital Transformation in the PLM domain - distrib.pdf
Digital Transformation in the PLM domain - distrib.pdf
 
Memorándum de Entendimiento (MoU) entre Codelco y SQM
Memorándum de Entendimiento (MoU) entre Codelco y SQMMemorándum de Entendimiento (MoU) entre Codelco y SQM
Memorándum de Entendimiento (MoU) entre Codelco y SQM
 
8447779800, Low rate Call girls in Tughlakabad Delhi NCR
8447779800, Low rate Call girls in Tughlakabad Delhi NCR8447779800, Low rate Call girls in Tughlakabad Delhi NCR
8447779800, Low rate Call girls in Tughlakabad Delhi NCR
 

OOP Building Blocks: Classes, Objects & Messaging

  • 1. Object-Oriented Programming: The Basic Building Blocks Zeegee Software Inc.
  • 2. TERMS AND CONDITIONS The author of these slides, Zeegee Software Inc., has provided these slides for personal educational use only. Zeegee Software reserves all rights to the contents of this document. Under no circumstances may the contents of this document, in part or whole, be presented in a public forum or excerpted for commercial use without the express permission of Zeegee Software. Under no circumstances may anyone cause this electronic file to be altered or copied in a manner which omits, changes the text of, or obscures the readability of these Terms and Conditions.
  • 3. INTRODUCTION • What is/isn't object-orientedness? • The quot;software crisisquot; • Software reuse • The evolution of good engineering practices • The perils of non-OO development Copyright © 1996, 2000 Zeegee Software Inc. 09/22/06 Object-Oriented Programming 1-3
  • 4. What does quot;object-orientedquot; mean, anyway? • Programs consist of entities, called objects, which correspond to concepts the program will manipulate: – A business application might have Employee and Department objects. • Objects are created by specifying their structure and their properties in a class. – The Employee class is a (single) blueprint used to create (many and varying) Employee objects. • Objects communicate by sending each other messages: – We might ask an Employee object quot;what's your name?quot;. Copyright © 1996, 2000 Zeegee Software Inc. 09/22/06 Object-Oriented Programming 1-4
  • 5. What is object-orientedness? • A programming style where concepts in your problem domain are mapped directly into your code: quot;object- orientedquot; means quot;concept-oriented.quot; • A philosophy of design and implementation (i.e., a way of thinking about your code) which can be employed even in non-OO programming domains. • A technology to help you follow this philosophy: OO languages, OO databases, OO expert systems, etc. • A buzzword used by people who want to sell you something. Copyright © 1996, 2000 Zeegee Software Inc. 09/22/06 Object-Oriented Programming 1-5
  • 6. What is object-orientedness not? • It is not a solution to all your design and implementation problems. • It will not allow non-programmers to quot;program like the pros.quot; • It does not allow you to side-step the design process and begin coding applications from day zero. • It is not inherently better than non-OO for all tasks. • It will not grow hair, lower your cholesterol, taste as fresh as homemade, soften hands while you do the dishes, and paint any car for $99.95… beware of sales pitches, no matter how flashy. Copyright © 1996, 2000 Zeegee Software Inc. 09/22/06 Object-Oriented Programming 1-6
  • 7. The software crisis: why we must change our ways • Human society depending more and more on software. • The software crisis: much existing software is... – bug-ridden, because... – too complex to understand, and so... – difficult to maintain, and so... – difficult to extend, and so... • We reinvent the wheel over and over, leading to... – unnecessarily high development costs – new and more exciting bugs... Copyright © 1996, 2000 Zeegee Software Inc. 09/22/06 Object-Oriented Programming 1-7
  • 8. The goal: software reuse • Programs tend to be quot;stick builtquot; from the ground up: – Like making custom nails, screws, bricks, etc. for a house! • Take our cue from the industrial revolution: assembly lines and interchangeable parts: – Goal: develop manageable, understandable, reusable software components that can be employed in a wide variety of applications, so that quot;newquot; code is specific to the problem at hand. • Reuse is not the same as quot;cut and pastequot;; however... • Temptation to quot;cut and pastequot; indicates useful code! Copyright © 1996, 2000 Zeegee Software Inc. 09/22/06 Object-Oriented Programming 1-8
  • 9. Benefits of software reuse • Reduces coding/testing, thereby reducing delivery time and cost. • Many reusers means many testers: well-tested code! • Bugs found in reusable module can be reported to source: fix is made, new module is distributed, and now everyone benefits. • Application programmers don't need to be experts in a wide variety of esoteric disciplines: easier to hire developers, and easier to keep them sane. • High visibility of code can improve attitude of developer, and inspire more care and forethought, rather than just quot;task at handquot; thinking. Copyright © 1996, 2000 Zeegee Software Inc. 09/22/06 Object-Oriented Programming 1-9
  • 10. Come on... how long does software last, anyway? • Long enough for the Y2K bug to have been of some concern! – Much software written before 1990 did not have Y2K in mind. – Code from the 1980s is still in use! – People often quot;cut and pastequot; old code into new systems: the ghosts of programs long dead. – Developers are unwilling to tweak/upgrade components if they quot;seem to work fine as-isquot;. • Huge sums of money were spent to head off Y2K disaster. We'll never know if it was necessary, but we do know the price tag! Copyright © 1996, 2000 Zeegee Software Inc. 09/22/06 Object-Oriented Programming 1-10
  • 11. Modular programming • Break large problems down into smaller, more manageable ones by breaking large programs into smaller pieces. • Each piece can be coded and tested individually. • Core of modularization is the subroutine (invented 1950s). • But we still need to decide... – What tasks are made into subroutines? – What are the arguments? Return values? Side effects? • A discipline was needed... Copyright © 1996, 2000 Zeegee Software Inc. 09/22/06 Object-Oriented Programming 1-11
  • 12. Structured programming • Invented 1960s, as a means of good modularization. • Relies on functional decomposition: – Top-down approach. – Break tasks (functionality) down from top level on down, to smaller and smaller components, until you get to actual subroutines. go_to_store() drive(store) shop() drive(home) get_in_car() start_car() Copyright © 1996, 2000 Zeegee Software Inc. 09/22/06 Object-Oriented Programming 1-12
  • 13. Limitations of structured programming • Can't always anticipate functions of evolving systems! • The more successful a system is, the greater the chance it will be requested to handle a wider range of tasks than originally envisioned: – System gets quot;tweakedquot; to handle initial modifications. – Tweaks become quot;hacksquot; as desired functionality departs more and more from original decomposition. – System becomes more complex and unstable; further modifications require worse hacks or full rewrite. – Process stops when costs outweighs benefits. Copyright © 1996, 2000 Zeegee Software Inc. 09/22/06 Object-Oriented Programming 1-13
  • 14. Global/shared data: the break in the modularity • At some point, many programs use global data which is shared between different subroutines. • When any subroutine affects the global data, they can affect the other subroutines as well, in unexpected ways! go_to_store start_car drive stop_car wheel pedal tank tires gears address Copyright © 1996, 2000 Zeegee Software Inc. 09/22/06 Object-Oriented Programming 1-14
  • 15. Modularization of data • Often in structured programming, each subroutine is given its quot;own little worldquot; of data: – Arguments float hypotenuse (a, b) float a; – Local variables float b; { – Return value float c; c = sqrt((a * a) + (b * b)); return c; } • One way structured programming helps is in modularizing data as well as functionality. • But sometimes, we still have to share information! Copyright © 1996, 2000 Zeegee Software Inc. 09/22/06 Object-Oriented Programming 1-15
  • 16. The status quo: non-OO programming • Programs consist of two separate entities: data structures and functions. • Data structures: integer, string, array, list, stack, binary tree, hashtable, person, etc. • Data structures are accessed and modified directly, or else by calling functions to perform the desired operations. IntStack s; s.size = 0; Modify s by direct assignment s.top = NULL; istack_push(101, &s); Modify/access s by via special x = istack_pop(&s); functions Copyright © 1996, 2000 Zeegee Software Inc. 09/22/06 Object-Oriented Programming 1-16
  • 17. Problems with non-OO programming • Functions for manipulating the same data structure can differ in naming convention, argument order, etc.: difficult to build/understand code: s.size = 0; count = s_numelems(&s); istack_push(101, &s); x = pop_int_stack(&s); print_thing(INTSTACK, &s); • Ability/requirement to examine/modify parts of data structure results in programs which will fail if data structure changes. • Can never be sure we have all the functions we need to build complex applications with data structure. Copyright © 1996, 2000 Zeegee Software Inc. 09/22/06 Object-Oriented Programming 1-17
  • 18. Problems with non-OO programming • To implement something similar (but not identical) to an existing data structure, must often duplicate large amounts of code. • Containers (arrays, lists, search trees, etc.) which can store different data types at the same time require lots of additional bookkeeping in the code: for (i = 0; i < size; i++) { thing = slot[i]; if (thing->type == INT_ { print_int(thing); the switch } statement else if (thing->type == STRING) { of print_string(thing); } death else if (thing->type == CIRCLE) ... ... } Copyright © 1996, 2000 Zeegee Software Inc. 09/22/06 Object-Oriented Programming 1-18
  • 19. How does OO help? • Message passing paradigm provides clear, consistent syntax for accessing/manipulating objects. • Encapsulation provides way of making data and quot;helper functionsquot; inaccessible to prying eyes and sticky fingers. • Inheritance allows new data structures to be defined in terms of existing ones, re-using existing (and tested) code. • Dynamic binding means that data structures keep track of their types, so users of the data structures don't have to. • All objects come bundled with the complete set of functions that are needed to work with them. Copyright © 1996, 2000 Zeegee Software Inc. 09/22/06 Object-Oriented Programming 1-19
  • 20. THE OO UNIVERSE • Objects • Classes • Instance variables • Instance methods and messages • Pure OO environments • Class variables/methods • Constructors/destructors Copyright © 1996, 2000 Zeegee Software Inc. 09/22/06 Object-Oriented Programming 1-20
  • 21. Objects • An object is a bundle of information that models some high-level concept in the problem domain. • Generally a 1-to-1 correspondence between quot;real thingsquot; in the problem domain and objects in a running OO program. – This is one reason that OO programs can be very intuitive to work with: they're a kind of quot;virtual realityquot;. • The structure and behavior of an object is defined in the object's class description... You can think of objects as just another kind of data type, like integers and strings. For example, a boolean variable holds a very simple object which might model the state of an on/off switch... Copyright © 1996, 2000 Zeegee Software Inc. 09/22/06 Object-Oriented Programming 1-21
  • 22. Objects An object for a An object for person their car Lastname: Smith Firstname: Jean Age: 35 Weight: 120 Car: Make: Ford Model: Escort License: THX-1138 Color: white Miles: 64000 Copyright © 1996, 2000 Zeegee Software Inc. 09/22/06 Object-Oriented Programming 1-22
  • 23. Classes and instances • A class is a blueprint for creating many similar objects. • The created object is an instance of that class. • Objects created from the same class will have the same basic structure and functionality. – All cars created from the same Ford Escort blueprints will look and work basically the same. • Many instances can be created from a single class. – Just as many Ford Escorts can be created from the same set of Ford Escort blueprints. Think of objects as structs (C) or records (Pascal): there's a single type definition (the class), but many different structs/records (the instances) can be created from it. Copyright © 1996, 2000 Zeegee Software Inc. 09/22/06 Object-Oriented Programming 1-23
  • 24. Classes and instances Make: Ford Model: Prefect License: HHG42 Color: black Make: String Miles: 42000 Model: String License: String A Car instance Color: Color Miles: Integer Make: Ford Model: Escort License: TX118 Color: white Miles: 64000 Class: Car A Car instance Copyright © 1996, 2000 Zeegee Software Inc. 09/22/06 Object-Oriented Programming 1-24
  • 25. Instance variables • An instance variable (or attribute) of an object is a piece of information attached to an instance (object). – The name of a Person object, the model and year of a Car object, etc. • The instance variables that an object has are defined in the object's class: an object can usually have many instance variables, of many different types. • Each object is given its own private space to hold its instance variables. Assigning a new value to an instance variable of one object does not affect the instance variables of any other object. If you think of objects as structs (C) or records (Pascal), then the instance variables are the structure elements. Copyright © 1996, 2000 Zeegee Software Inc. 09/22/06 Object-Oriented Programming 1-25
  • 26. Instance methods • When we define objects, we usually have an idea of what we want to do with them... – I'm dealing with Person objects in an employee database... I want to be able to ask each Person object their name, weight, and age. – I'm dealing with Car objects in a driving simulation... I want to be able to start a Car, change its speed, turn its steering wheel, etc. • An action that involves a single object as the quot;star playerquot; is usually implemented as a special kind of function/subroutine attached to that object's class, called an instance method (or, more commonly, just a method). Copyright © 1996, 2000 Zeegee Software Inc. 09/22/06 Object-Oriented Programming 1-26
  • 27. Methods and messages • A message is the request you send to an object in order to get it to do something: perform an action, return a value, etc. someone.setName(quot;Picardquot;); • A method is the piece of code which is called to perform the activity requested by the message: Person::setName(String newname){ self.name = newname; } • Message passing and method invocation usually mean the same thing: the act of sending a message to an object, and having that object do something. Copyright © 1996, 2000 Zeegee Software Inc. 09/22/06 Object-Oriented Programming 1-27
  • 28. What messages look like A message generally has three parts: – The receiver: the object receiving the message. – The method name: what we want the object to execute. – The parameters: any arguments that the message takes. receiver method parameters someone.setName(quot;Jean-Lucquot;, quot;Picardquot;); Copyright © 1996, 2000 Zeegee Software Inc. 09/22/06 Object-Oriented Programming 1-28
  • 29. What methods look like • Like any other function, methods can take arguments. • Methods know which object received the message (they have to... after all, it's the star player!). They might access the object Person::setName(String new){ this->name = new; through a special variable (C++'s } this, Smalltalk's self): sub setName { Or through a special argument my ($self, $new) = @_; given to the method (Perl, $self->{Name} = $new; Python): } Or just access its instance variables Person::setName(String new){ implicitly (C++, Smalltalk): name = new; } Copyright © 1996, 2000 Zeegee Software Inc. 09/22/06 Object-Oriented Programming 1-29
  • 30. An OO bestiary Real world Software class Car { String itsModel; int itsYear; Classes Tire ... itsTires[4]; blueprint } Instances myCar myMom'sCar myFriend'sCar car myCar Instance steering wheel itsModel Es cor t itsYear variables 19 90 itsTires tire631 tire245 tire898 tire707 seat tires myCar.start(); myCar.shiftGear(FIRST); Methods myCar.accelerate(); myCar.turn(LEFT); dashboard Copyright © 1996, 2000 Zeegee Software Inc. 09/22/06 Object-Oriented Programming 1-30
  • 31. A sample class class Person { String name; int age; instance variables float weight; /* Change my weight: */ setWeight(int newWeight) { weight = newWeight; method } /* Return my weight, if I won't mind: */ getWeight() { if (weight < 150) method return weight; else return -1; } } Copyright © 1996, 2000 Zeegee Software Inc. 09/22/06 Object-Oriented Programming 1-31
  • 32. Using classes and objects Create instance of class Person Person kirk(quot;Kirk, James T.quot;); kirk.setWeight(190); kirk.setAge(37); wgt = kirk.getWeight(); Send messages to object quot;kirkquot; Copyright © 1996, 2000 Zeegee Software Inc. 09/22/06 Object-Oriented Programming 1-32
  • 33. Representing classes and objects Class Object inst-var-1 value Classname inst-var-2 value inst-var-3 value inst-var-1 Classname inst-var-2 inst-var-1 value inst-var-3 inst-var-2 value inst-var-3 value method-1(args) method-2(args) Classname inst-var-1 method-1(args) inst-var-2 method-2(args) inst-var-3 Copyright © 1996, 2000 Zeegee Software Inc. 09/22/06 Object-Oriented Programming 1-33
  • 34. quot;Purequot; OO environments • In very quot;purequot; OO environments, everything is an object! – Every class might be an instance of a special MetaClass class, which in turn might be an instance of itself! – Methods/functions might be instances of a special Code class. • This can be taken to surprising extremes... for example, in OPAL (Smalltalk), there is no if-then statement: instead, you send an ifTrue:ifFalse message to a Boolean object: method: getWeight (weight < 150.0) ifTrue: [^weight] % okay ifFalse: [^-1] % no way! % Copyright © 1996, 2000 Zeegee Software Inc. 09/22/06 Object-Oriented Programming 1-34
  • 35. Class methods If a class is just another kind of object, then it should have its own methods and respond to messages, right? • Right! Because of this, we usually divide methods into: – Class methods, which are invoked when you send a message to a class. – Instance methods, which are invoked when you send a message to an instance of a quot;normalquot; class. We usually just call these methods. • The most common class method is the constructor, which returns a new instance. It's often called quot;newquot;: /* Class method: */ /* Instance method: */ p = Person.new(quot;Kirkquot;); p.setName(quot;Kirkquot;); Copyright © 1996, 2000 Zeegee Software Inc. 09/22/06 Object-Oriented Programming 1-35
  • 36. Class methods, cont'd Class methods generally do not operate on instances! They are intended for performing utility functions that are strongly associated with a class, but that don't involve any particular instance of that class! • Other candidates for class methods: – Storing/retrieving objects of this class by some appropriate lookup key (e.g., the name). – Asking for information related to the class as a whole: /* Get the next available license plate. */ classmethod Car::nextLicensePlate { CurrentLicense += 1; return quot;ABCquot; + CurrentLicense; } Copyright © 1996, 2000 Zeegee Software Inc. 09/22/06 Object-Oriented Programming 1-36
  • 37. Class variables If a class is just another kind of object, then it should have its own instance variables too, right? • Right! And these special instance variables are commonly called class variables. • In many OO environments, the only places you can access a class variable are... – From inside a class method of that class – From inside an instance method of that class • Class variables are kind of like global variables which are associated with a particular class. Copyright © 1996, 2000 Zeegee Software Inc. 09/22/06 Object-Oriented Programming 1-37
  • 38. Constructors • As mentioned before, constructors are special functions (usually class or instance methods) used to initialize or return a new object. • Most common name for a constructor is new(). • Depending on the OO environment, a class might have many constructors, each of which builds an object a different way. • Different constructors might have different names (Perl5, Smalltalk), or they might all have the same name but be distinguished by having different numbers/types of their arguments (C++). Copyright © 1996, 2000 Zeegee Software Inc. 09/22/06 Object-Oriented Programming 1-38
  • 39. Sample constructors • In C++, constructors are special unnamed instance methods, invoked when you declare object variables: // Create a Person from nothing: Person anonymous; // Create a Person from name, age, and weight: Person nsolo(quot;Napoleon Soloquot;, 35, 190.0); // Create a Person from another Person: Person clone(nsolo); • In Perl5, constructors are class methods, and can be named whatever you like: # Create a Person from name, age, and weight: $nsolo = Person->new( Name=>quot;Napoleon Soloquot;, Age=>35, Weight=>190.0); Copyright © 1996, 2000 Zeegee Software Inc. 09/22/06 Object-Oriented Programming 1-39
  • 40. Destructors • Objects often end their lives be being explicitly deleted (C++), going out of scope (C++), or being garbage-collected (Java, Perl, Smalltalk). • We sometimes want to get control of the object just before it vanishes, to clean up after it properly: – We may have opened files, which we want to close. – We may have allocated memory, which we want to free. • The special instance method invoked just as an object is about to disappear is called the destructor. • Classes generally have one destructor, which takes no arguments. Copyright © 1996, 2000 Zeegee Software Inc. 09/22/06 Object-Oriented Programming 1-40
  • 41. OO FEATURES/BENEFITS • Encapsulation • Polymorphism • Subclasses and inheritance • Class hierarchies and inheritance schemes • Abstract/concrete classes • Static/dynamic binding Copyright © 1996, 2000 Zeegee Software Inc. 09/22/06 Object-Oriented Programming 1-41
  • 42. Encapsulation • There is a piece of wisdom which has made its way down through centuries of software development... Teams work best when members of those teams know as little about each others' work as possible. • When one software module depends on the low-level implementation details of another module, unexplained bugs tend to appear as the system evolves. • The quot;back roomquot; metaphor. • We need a way of not only suggesting that programmers stay out of the quot;back roomquot;, but enforcing it. Copyright © 1996, 2000 Zeegee Software Inc. 09/22/06 Object-Oriented Programming 1-42
  • 43. Encapsulation • Encapsulation means that some or all of an object's internal structure is quot;hiddenquot; from the outside world. • Hidden information may only be accessed through the object's methods, called the object's public interface. • Access to object is safe, controlled. • Methods, like instance variables, may also be hidden to create private quot;helper functionsquot;. quot;privatequot; internal structure/methods quot;public interfacequot; (the chocolate filling) methods (the hard candy shell) Copyright © 1996, 2000 Zeegee Software Inc. 09/22/06 Object-Oriented Programming 1-43
  • 44. Objects as quot;goodsquot; and quot;servicesquot; Person::income() An object of class { return (salary - expenses); quot;Personquot; } What is your yearly expenses income? salary name age user method structure method of object (public interface) (private portion) (public interface) Copyright © 1996, 2000 Zeegee Software Inc. 09/22/06 Object-Oriented Programming 1-44
  • 45. Encapsulation as maintainability Person::income() { return (salary + (savings * intRate) - expenses - tax(salary,savings,deductions)); } What is your yearly deductions income? expenses other salary methods savings name age user method structure of object (public interface) (private portion) Copyright © 1996, 2000 Zeegee Software Inc. 09/22/06 Object-Oriented Programming 1-45
  • 46. Encapsulation for class builders and class users Class builder Class user Goal Create a reusable, Quickly get and use a class. maintainable class with an understandable interface. Approach Hide structure and Examine and use operations implementation details from in class interface. user. Benefits May change structure and Understandable interface; algorithms without affecting can be used without fear of user. quot;breakingquot; object. Costs Reusable classes must be Access to data through carefully planned. operations may be slower than direct access. Copyright © 1996, 2000 Zeegee Software Inc. 09/22/06 Object-Oriented Programming 1-46
  • 47. Polymorphism • Literally, quot;one entity, many forms.quot; • Means the same name can be assigned to different functions/methods: the actual function triggered by the name is determined by the types of the arguments. • Sometimes called overloading. • Allows designers to use the most quot;naturalquot; and understandable names for functions: /* Matrix M times vector v: */ y = M * x; /* Matrix M times scalar: */ The multiplication operator N = M * 2; is overloaded /* Vector x times scalar: */ y = 4 * x; Copyright © 1996, 2000 Zeegee Software Inc. 09/22/06 Object-Oriented Programming 1-47
  • 48. With/without polymorphism • Without polymorphism, we need a unique name for every function: /* Stuff with matrices, vectors, and scalars: */ mat_vec_mult( M, vec_times_scal( vec_cross(vec_minus(A, B), vec_plus(A, B)), -1) ); • With polymorphism, we can use natural names and operators, shrinking code and increasing readability: /* Stuff with matrices, vectors, and scalars: */ M * (-1 * (A-B).cross(A+B)) Copyright © 1996, 2000 Zeegee Software Inc. 09/22/06 Object-Oriented Programming 1-48
  • 49. More fun with polymorphism Overloading '+' to perform string concatenation: fullname = lastname + quot;, quot; + firstname; Overloading 'min' to compare different types: firstInDictionary = min(quot;astroquot;, quot;zodiacquot;); lowerNumber = min(42, 99); closerToOrigin = min(complex1, complex2); Overloading 'print' to print different entities to different kinds of output: aPerson.print(myFile); aPerson.print(myScreen); aPerson.print(myPrinter); aPlace.print(myPrinter); Copyright © 1996, 2000 Zeegee Software Inc. 09/22/06 Object-Oriented Programming 1-49
  • 50. Polymorphism for class builders and class users Class builder Class user Goal Create maintainable, Quickly get and use a class. reusable, class library with understandable interfaces. Approach Use polymorphism to create Examine and use operations similarity between class in class interface. interfaces & speed learning. Benefits Interfaces to new classes are Learn one class, and learn a already partially designed. bunch! Costs Must pick method names Misnamed methods which and arguments carefully. are similar but not identical Must not reuse names if can be confusing. purposes differ! Copyright © 1996, 2000 Zeegee Software Inc. 09/22/06 Object-Oriented Programming 1-50
  • 51. Subclasses • It is often desirable to create a new class which is a special case of an existing class, possibly with some small changes in structure or methods: class Person { class Doctor { String name; String name; int age; int age; float weight; float weight; School medSchool; void setWeight(wgt) {…} String licenseNo; int getWeight() {…} } void setWeight(wgt) {…} int getWeight() {…} void examine(patient) {…} } • To re-use the existing code, make the new class a subclass of the existing one... Copyright © 1996, 2000 Zeegee Software Inc. 09/22/06 Object-Oriented Programming 1-51
  • 52. Subclasses and inheritance • If class C is a subclass of class P, then C is a child class of P, and P is a parent class or superclass of C. • A child class automatically inherits all the structure and functionality of its parent class. When defining a subclass, you will usually choose to: – Add new instance variables and methods. – Override some methods of the parent class, providing new methods. – Exclude some of the instance variables and methods of the parent class. Copyright © 1996, 2000 Zeegee Software Inc. 09/22/06 Object-Oriented Programming 1-52
  • 53. Adding structure/behavior in subclasses When you specify instance variables/methods in a child class that are not present in the parent class, instances of the child class get the new structure and functionality in addition to what they would get from the parent alone: Classes Instances class Person { a Person: int age; age 52 int getAge() {…} getAge() } class Doctor : Person { a Doctor: String licenseNo; age 52 void examine(patient) {…} licenseNo AMA-1179150-6 } getAge() examine(patient) Copyright © 1996, 2000 Zeegee Software Inc. 09/22/06 Object-Oriented Programming 1-53
  • 54. Overriding behavior in subclasses When you specify a method in a child class that already exists in the parent class, the child's method overrides the parent's method: instances of the child will execute the child's method. Classes Instances class Person { String name; name Leonard McCoy String getName() { return name; getName() } } Uses getName() of Person class Doctor : Person { String getName() { name Leonard McCoy return quot;Dr. quot; + name; } getName() } Uses getName() of Doctor Copyright © 1996, 2000 Zeegee Software Inc. 09/22/06 Object-Oriented Programming 1-54
  • 55. Overriding with default behavior Sometimes it is desirable to override a parent's method, and yet also to invoke the parent's method to do some of the work: Classes Instances class Person { String first, mi, last; first Leonard mi N String getName() { last McCoy return first + mi + last; } getName() } getName() returns quot;Leonard N. McCoyquot; class Doctor : Person { first Leonard String getName() { mi N return last McCoy quot;Dr.quot; + Person::getName(); getName() } } getName() returns quot;Dr. Leonard N. McCoyquot; Copyright © 1996, 2000 Zeegee Software Inc. 09/22/06 Object-Oriented Programming 1-55
  • 56. Exclusion in subclasses If a child class is a very special case of its parent, it may not need all the instance variables in its parent. Some languages allow variables/methods to be excluded in a subclass. Classes Instances class Rectangle { top 30 int top; left 120 int left; width 50 int width; height 70 int height; area() } class Square : Rectangle { top 30 exclude width; left 120 exclude height; side 60 int side; area() } Copyright © 1996, 2000 Zeegee Software Inc. 09/22/06 Object-Oriented Programming 1-56
  • 57. Class hierarchies Usually, a class can have many child classes, each of which can have their own child classes. A quot;family treequot; of all the classes in a program is called a class hierarchy... { The base classes of a given class O GP GP GP GP are those classes from which O ultimately inherits (parents, P P grandparents, etc.). O { The derived classes of a given class O are those classes which C C ultimately inherit from O (children, GC GC GC GC grandchildren, etc.). Copyright © 1996, 2000 Zeegee Software Inc. 09/22/06 Object-Oriented Programming 1-57
  • 58. Inheritance schemes One important way we characterize an OO language is by the kind of inheritance we are allowed to use... • If classes can't be derived from parents, we have a no-inheritance language. A B C D Its class hierarchies will be flat. A G • If each class can have at most one parent, we have a single-inheritance language. B F H Its class hierarchies will resemble trees. C D E • If each class to can have more than one A G parent class, we have a multiple-inheritance language. Its class hierarchies will be graphs B F H (DAGs). C D E Copyright © 1996, 2000 Zeegee Software Inc. 09/22/06 Object-Oriented Programming 1-58
  • 59. A single-inheritance class hierarchy Object more general name Person age weight medSchool Doctor Typist wpm more licenseNo specific freudian? Psychiatrist hasCouch? Copyright © 1996, 2000 Zeegee Software Inc. 09/22/06 Object-Oriented Programming 1-59
  • 60. A single-inheritance scheme Object name McCoy, Leonard age 52 Person weight 150 name setWeight(wgt) school Johns Hopkins age getWeight() weight license AMA-1179150-6 Doctor school getWeight() license examine(patient) Dentist painless? cleanTeeth(patient) An instance of quot;Doctorquot; Copyright © 1996, 2000 Zeegee Software Inc. 09/22/06 Object-Oriented Programming 1-60
  • 61. A multiple-inheritance scheme name McCoy, Leonard Object age 52 weight 150 school Johns Hopkins Person license AMA-1179150-6 name setWeight(wgt) rank CMO age getWeight() weight ship U.S.S. Enterprise Doctor NavyOfficer school getWeight() rank hoistTheMainsail() license examine(patient) ship swabTheDeck() NavyDoctor An instance of quot;NavyDoctorquot; Copyright © 1996, 2000 Zeegee Software Inc. 09/22/06 Object-Oriented Programming 1-61
  • 62. Advantages/disadvantages of using inheritance Advantages Disadvantages • Code sharing. • Requires an OO programming environment. • Software reusability without disturbing working code. • Can inherit attributes and operations that are not • Overloading helps develop desired. standard class interfaces. • Too many subclasses • Encourages design by makes debugging difficult. extensions/refinements, rather than mass re- • Performance may be implementation. degraded. Copyright © 1996, 2000 Zeegee Software Inc. 09/22/06 Object-Oriented Programming 1-62
  • 63. Abstract classes vs. concrete classes • Abstract classes are classes which do not have instances of their own: they exist solely so that their child classes may inherit structure and/or functionality. • Concrete classes are classes which may have instances. A concrete class may also have child classes. color Abstract class Shape pattern Concrete class hasBorder topLeft center Polygon Rect botRight Circle radius Regular center Irregular points Round radius numSides Polygon Polygon Rect Copyright © 1996, 2000 Zeegee Software Inc. 09/22/06 Object-Oriented Programming 1-63
  • 64. Static binding vs. dynamic binding In some OO languages, objects don't keep track of their types: this is called static – An object's class (and, therefore, its binding behavior) is determined at compile- time by the class of the variable it's placed in (or referenced through). In other OO languages, objects know this is called their types: dynamic – An object's class is determined at binding run-time. Not affected by the class of the variable the object it's placed in (or referenced through). Copyright © 1996, 2000 Zeegee Software Inc. 09/22/06 Object-Oriented Programming 1-64
  • 65. Behavior under static vs. dynamic binding Recall our example where Doctor overrode the getName() method of Person. Now consider the following program: Doctor julian(quot;Bashirquot;); Person someone = julian; print(someone.getName()); If we get... If we get... Bashir Dr. Bashir ...then the Doctor behaves like a ...then the Doctor behaves like a Person after being stored in a Doctor even after being stored in a variable of type Person: we've got variable of type Person: we've got static binding. dynamic binding. Copyright © 1996, 2000 Zeegee Software Inc. 09/22/06 Object-Oriented Programming 1-65
  • 66. Containers with static vs. dynamic binding for (i = 0; i < size; i++) { Object *thing = slot[i]; switch (*thing.type) { case INT: (*(IntObject *)thing).print(); break; static case STRING: (*(StringObject *)thing).print(); binding (yuck… just break; like non-OO!) case CIRCLE: (*(CircleObject *)thing).print(); break; ... } } for (i = 0; i < size; i++) { dynamic slot[i].print() binding (code it } just once!) Copyright © 1996, 2000 Zeegee Software Inc. 09/22/06 Object-Oriented Programming 1-66
  • 67. Static binding vs. dynamic binding Static binding Dynamic binding • Type of object fixed at • Type of object determined at compile time, by type of run time, so objects quot;know variable containing it. what they arequot;. • Often results in quot;casequot; and • Eliminates complex quot;casequot; and quot;ifquot; statements. quot;ifquot; statements. • Heterogeneous collections • Heterogeneous collections difficult to implement. greatly simplified. • Easier to debug. • Harder to debug. • No overhead at run-time. • Slower from run-time lookups. Copyright © 1996, 2000 Zeegee Software Inc. 09/22/06 Object-Oriented Programming 1-67
  • 68. What we've been leading up to: software reuse The most important benefit of the OO approach is that by... – Hiding implementation details (encapsulation) – Reducing the number of different things you need to remember (polymorphism) – Minimizing the amount of redundant code that needs to be built, tested, and maintained (subclassing) – Helping existing code to not break just because someone has added a new data type (dynamic binding) ...it makes it far easier for you to reuse software components. Copyright © 1996, 2000 Zeegee Software Inc. 09/22/06 Object-Oriented Programming 1-68
  • 69. OO DATABASES • What they are • How they compare with Relational Databases Copyright © 1996, 2000 Zeegee Software Inc. 09/22/06 Object-Oriented Programming 1-69
  • 70. What is a database? • A database is a repository for persistent information: information that exists even when no program is active, usually on disk. • A good database management system... – Lets us model information in our problem domain accurately. – Allow fast insert, update, and query of the information. – Gives multiple users concurrent and reliable access to the information (transaction management). – Allows the information to be managed by application programs (not just through a user interface). Copyright © 1996, 2000 Zeegee Software Inc. 09/22/06 Object-Oriented Programming 1-70
  • 71. Relational databases • Been around for decades. • Information placed in tables: – Rows are individual data records. – Columns are the attributes of those records. • Different tables are joined on common values of particular attributes: Table: Person Table: Car Name Age Car Make Color License Arthur 36 ZZ9ZA Sirius gold HOG121 Trillian 32 Nash white ZZ9ZA Zaphod 34 HOG121 Copyright © 1996, 2000 Zeegee Software Inc. 09/22/06 Object-Oriented Programming 1-71
  • 72. Object-oriented databases • An OO database (OODB) is like a running OO program, except that the objects are persistent: they are stored on disk rather than in memory. • The objects in an OO database can send messages to each other, just as objects in OO programs can: message- sending can be used to perform queries, create and install new objects, send mail to users in a user database, etc. • Ability to design and implement custom container classes allows developers to optimize database structure based on queries to be supported. Copyright © 1996, 2000 Zeegee Software Inc. 09/22/06 Object-Oriented Programming 1-72
  • 73. Benefits of Relational DBs over OODBs OO Relational • Strong support in academic and commercial communities? • Declarative vs. procedural query language? • Underlying mathematical formalism for query optimization? • Existing natural-language and GUI interface packages? • Easy schema modification of large, populated databases? Copyright © 1996, 2000 Zeegee Software Inc. 09/22/06 Object-Oriented Programming 1-73
  • 74. Benefits of OODBs over Relational DBs OO Relational Allows modeling of complex entities? Allows modeling of custom collections/indexes (such as quadtrees for fast spatial search)? Does not require duplication of data? Scalable performance: will queries be fast for very large, complex databases? Scalable storage: can database easily be distributed across many physical storage devices? Smooth interface to external environment (other databases, math libraries, email)? Copyright © 1996, 2000 Zeegee Software Inc. 09/22/06 Object-Oriented Programming 1-74
  • 75. When is OO good to use? • Experience has shown that not all problem domains are perfectly suited for OO implementations. Things which can indicate OO as a good choice... – Need to manage complex information. – Need to model real-world concepts and processes (e.g., simulations). – Large number of developers to be coordinated. – Correctness, maintainability, and evolvability more important than blinding speed. – Rapid/evolutionary prototyping environment. Copyright © 1996, 2000 Zeegee Software Inc. 09/22/06 Object-Oriented Programming 1-75
  • 76. PROJECT: SIM Many of you have played computer games where a realistic world is being modelled and maybe simulated: SimCity, Zork, Trinity, etc. Ever wonder how people built those things? Ever try to yourself? Imagine that you want to create a swords-and-sorcery-style text adventure. Of course you're going to do an OO implementation. :-) What classes will you need? What attributes and methods will they have? How will they interact? How quot;realquot; can/should the physics of your world be? Copyright © 1996, 2000 Zeegee Software Inc. 09/22/06 Object-Oriented Programming 1-76