Document Sample
Objects Powered By Docstoc
        Section 7

•   Software is very complex          •    Model the real world as a collection
     (perhaps the most complex             of interacting entities, called objects
        thing ever built)                   – everything is an object!

•   Need organisation and structure   •    Objects have defined
    to build and understand                 – properties
                                            – behaviour

•   object-orientation is one
    mechanism addressing these
                                 Object-oriented Design
OO design quite similar to LEGO ™

•    use small blocks to build bigger objects
•    same kind of block used in different objects
      – some blocks very generic
      – some blocks become highly specialised
•    blocks fit together in specific ways

    OO problem-solving
    • determine all the blocks required
    • determine how to fit the blocks together
                                          What is an Object?
Objects are entities that can perform a   Objects communicate with each other using
   given (defined) set of activities         messages

E.g.,                                     •   each object specifies the actions it can

•   Clock                                 •   sender object sends a message
     – what time is it?                        – to clock: “tell me the time”
     – what make is it?                        – to book: “tell me your title”

•   Book                                  •   receiver object responds
     – what‟s the title?                       – from clock: “it‟s 12pm”
     – who‟s the author?                       – from book: “Zen and the Art of
                                                  Motorcycle Maintenance”
                             Object-orientation Example
Find highest card in poker hand:           Hand of card object: how does it work?

•   What are the objects?                  Hand of cards is a collection of card objects
     – hand of cards                           – what behaviour do card objects
•   What behaviour do the objects              – card: compare yourself against
    display? (I.e., to what messages do            another card and say whether
    they respond?)                                 you‟re higher or not
      – hand of cards: tell me your
        highest card

•   Note: algorithms from tutorial 1 are
    not object-oriented
                            Object-orientation Example
OO algorithm for highest card in hand:

object: hand-of-cards
message: which-is-highest

answer: hand-of-cards . which-is-

                             OO algorithm for hand-of-cards.which-is-highest:

                                    highest-so-far is first card object in hand
                                    repeat for all card objects in hand:
                                       next-card-object . compare-to: highest-so-far
                                       (I.e., next-card-object, compare yourself against
                                       highest-so-far object)
                                          If larger: set highest-so-far as next-card-object
                                          If not: do nothing
                                         Classes and Objects
Card objects                              OO Design

                                          •   Define the classes in the system
K         J           9
                                               – what properties do objects of this
                                                 class have?
Each behaves in similar way
    – I.e., each responds to the               – what behaviour do objects of this
       message compare-yourself-to               class display?

Concept of how all cards behave,          •   Declare the actual objects in the system
   rather than specific cards: a class
                                               – introduce the objects

                                               – declare what class they belong to
A Message has four components
• receiver: to whom is the message going?
• behaviour: what general task do you want the
  receiver to do?
• details: are there any specific details about
  how you want the receiver to do the task?
• return: what kind of response are you


  “ clock , tell me the time ”                    ?

   receiver      behaviour       no details     return

  “ son , turn that damned radio off ”

 receiver        behaviour            details      no return


  “ honey , buy me a diamond necklace ”

   receiver    behaviour             details   no return

  “ honey , buy me flowers ”

 receiver     behaviour    details
                                               no return
               Sending Messages in Java
Messages are sent in Java through method

        receiver . behaviour ( details )

    return = receiver . behaviour ( details )

• The method‟s name identifies the behaviour
• The details are the arguments passed to the
  method‟s parameters
                          Messages in Java


        honey . buy_me ( “flowers”);

        time_now = clock . tell_time (    );

                               note! no
            Existentialism and Ontology

“What‟s in a name? A rose by any other
  name would smell just as sweet.”

Can an object (a thing) exist without a

Can a name exist without an object?
                     Existentialism Examples

   • People
       – same person can have several names
       – same name can be used for several people

Sir Donald Bradman       Donald           Donald Trump

     The Don
                Existentialism Examples

• Houses
  – the building is the object
  – the address is the object reference

 69 Main St
 Hometown Qld
                      Existentialism Examples
Names without objects
     “When I have a baby, I‟m going to call it „Rachel‟”
     • name exists
     • baby does not exist yet

Objects without names
     Doctor: “What are you going to call him?”
     Proud Father: “I don‟t know yet”
     • baby exists
     • name does not exist yet
                    Existentialism and Java

Introducing a name in Java:
  – names refer to objects
  – (in Java) must associate a class (data-
    type) with a name
    • i.e., the new name is going to refer to an object
      of that class
       Introducing Object References in
Java syntax for declaring an object

           class-name object-reference ;

        Card highest-so-far ;
        Person honey;                 note syntax
        Clock myClock;
          Introducing New Objects in Java
Java syntax for creating a new object:

        new class-name ( details )

        new Person( )
        new Card (“ace of spades”)
        new Clock( )
          Attaching object references to
                          actual objects

To make a new, named object in Java:
1. make a new, unnamed object of some
2. associate it with an object reference to
   an object of that class
                Attaching object references to
                        actual objects in Java
In Java:

class-name object-reference ;
object-reference = new class-name ( details ) ;

   Person honey;                        Card x;
   honey = new Person ( ) ;             x = new Card ( “ace_of_spades” );

   Card motörhead;
   motörhead = new Card ( “ace_of_spades” );
Strings are objects
                                        Object references           Objects

In Java:

String s = new String(“Batman”);
String t = new String(“Robin”);
String u = new String(“Batman”);                            B   a   t       m   a   n

Objects respond to messages:
                                                            R   o       b   i   n
In Java:

System.out.println(   s.length()   );         u
                                                            B   a       t   m   a   n
                     Objects and Object References
  Object references are not objects       Objects are not object references

String s = new String(“Batman”);      s
String t = new String(“Robin”);                       B    a   t       m   a   n
String u = s;

System.out.println(s);     Batman

System.out.println(t);     Robin
                                                       R   o       b   i   n
System.out.println(u);     Batman
                    Objects and Object References
Object references are not objects               Objects are not object references

                                                              B       a       t       m       a       n
s = “Robin”;

System.out.println(s);     Robin

System.out.println(u);     Batman
                                                              R       o           b   i       n
t = u + t;
                                                              R       o           b   i       n


                                    B       a     t   m   a       n       R       o       b       i       n
                   Objects and Object References
  Object references are not objects            Objects are not object references

String s = new String(“Batman”);          s
String t = new String(“Robin”);                            B    a   t       m   a   n
String u = new String(“Batman”);
int x = 10;
int y = 5;                                                  R   o       b   i   n
int z = 5;
                                                           B    a   t       m   a   n

x == y ?           false
y == z ?           true               x   10

s == t   ?         false
                                      y   5
s == u ?           false
s.equals(u) ?      true
                                      z   5
                                   Unnamed Objects
Objects can exist without names
E.g.,                                           a String object

            System.out.println( “Baron Greenback” );

                                                       a Point object

            jLabel1.setPosition( new Point(10,10) );

                                                   a Frame1 object

              Application.run( new Frame1( ) );
                       The Class Tour


Shared By: