"if i can't picture it, i can't understand it.". reference anonymous - gravity ...

31
"If I can't picture it, I can't understand it."

Upload: felix-douglas

Post on 13-Jan-2016

230 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: "If I can't picture it, I can't understand it.". Reference anonymous - gravity  Concrete classes: rules of

"If I can't picture it, I can't understand it."

Page 2: "If I can't picture it, I can't understand it.". Reference anonymous - gravity  Concrete classes: rules of

Reference anonymous - gravity https://www.youtube.com/watch?v=cEkILY1h6fA

Concrete classes: rules of fight clubhttps://www.youtube.com/watch?v=vJMC_S-DB2I

Type anonymous : Fight Club - Robert Paulsonhttps://www.youtube.com/watch?v=GCi_PIz5ekU

Dubugger: x-men quicksilver https://www.youtube.com/watch?v=WGDXO9mlprM

Page 3: "If I can't picture it, I can't understand it.". Reference anonymous - gravity  Concrete classes: rules of

References

Objects are like astronauts.

Page 4: "If I can't picture it, I can't understand it.". Reference anonymous - gravity  Concrete classes: rules of

References

Object objDate = new Date(); This date has a reference. The reference is

an Object.

Page 5: "If I can't picture it, I can't understand it.". Reference anonymous - gravity  Concrete classes: rules of

Reference Anonymous

MyTime myTime = new MyTime(new Date()); The date is reference-anonymous, but we

can still get a reference to it myTime.getDate();

new Date(); The date is reference-anonymous and we

have no reference to it – it is space-junk and will be garbage collected.

Page 6: "If I can't picture it, I can't understand it.". Reference anonymous - gravity  Concrete classes: rules of

Reference Anonymous

Date dat1 = new Date(); Date dat2 = new Date(); dat1 = dat2;

The Object originally stored in dat1 is orphaned and becomes space junk.

Page 7: "If I can't picture it, I can't understand it.". Reference anonymous - gravity  Concrete classes: rules of

Java entity May be a reference? May be an instantiated?

Concrete Class YES YES

Abstract Class YES NO

Interface YES NO

https://www.youtube.com/watch?v=vJMC_S-DB2I

Page 8: "If I can't picture it, I can't understand it.". Reference anonymous - gravity  Concrete classes: rules of

Fight Club Rules of Java

1/ Only concrete classes can be instantiated.

Page 9: "If I can't picture it, I can't understand it.". Reference anonymous - gravity  Concrete classes: rules of

Fight Club Rules of Java

1/ Only concrete classes can be instantiated. 2/ Only concrete classes can be instantiated.

Page 10: "If I can't picture it, I can't understand it.". Reference anonymous - gravity  Concrete classes: rules of

Fight Club Rules of Java

1/ Only concrete classes can be instantiated. 2/ Only concrete classes can be instantiated. 3/ The type of any Object must be of type

Concrete_class. (corollary to 1 and 2) 4/ References may be concrete, abstract, or

interface.

Page 11: "If I can't picture it, I can't understand it.". Reference anonymous - gravity  Concrete classes: rules of

Fight Club Rules of Java

5/ You may create type-anonymous abstract-classes and interfaces by overriding ALL their contract methods when you declare them.

6/ The “type” of a type-anonymous class is $x aka Robert Paulson.

Page 12: "If I can't picture it, I can't understand it.". Reference anonymous - gravity  Concrete classes: rules of

Reflection

• If your program is written well and adheres to the principals of polymorphism, then you don't really need reflection.

• However, it's nice to know you have it when testing/debugging though.

• Very useful when first learning an OO language.

Page 13: "If I can't picture it, I can't understand it.". Reference anonymous - gravity  Concrete classes: rules of

Reflection

• Reflection allows you to inspect the type (class) of the implicit parameter at runtime.

• We will use reflection to gain a deeper understanding of polymorphism and the java event model.

Every class has a class object which you can access like so: java.util.Date.class, or like so: Class.forName(strFullyQualifiedClass);

See reflection example

Page 14: "If I can't picture it, I can't understand it.". Reference anonymous - gravity  Concrete classes: rules of

Reflection

Name of Driver implemnts Implicit param

EventListener type Defined

TimeTestOuterActionListener

yes EventListenerOuter In separate java file

TimeTestInner ActionListener

yes EventListenerInner In same java file

TimeTestLocalActionListener

yes anonymous Same method

TimeTestAnonActionListener

no anonymous inline

See inner example

Page 15: "If I can't picture it, I can't understand it.". Reference anonymous - gravity  Concrete classes: rules of

Java Event Model

• Used to program behavior in GUIs• Used extensively in Android.

Page 16: "If I can't picture it, I can't understand it.". Reference anonymous - gravity  Concrete classes: rules of

If a tree falls in a forest and no one is around to hear it, does it make a sound?

Page 17: "If I can't picture it, I can't understand it.". Reference anonymous - gravity  Concrete classes: rules of
Page 18: "If I can't picture it, I can't understand it.". Reference anonymous - gravity  Concrete classes: rules of

Event(onClick)

No Event-Listener listening

No Catcher

Event-Source(Button)

No Event Listener

Page 19: "If I can't picture it, I can't understand it.". Reference anonymous - gravity  Concrete classes: rules of

Event(onClick)

Event-Listener listening

Catcher ready to catch

Event-Source(Button)

ActionListener

Any Object

Page 20: "If I can't picture it, I can't understand it.". Reference anonymous - gravity  Concrete classes: rules of

Wrong Event

Page 21: "If I can't picture it, I can't understand it.". Reference anonymous - gravity  Concrete classes: rules of

Event source not registered

Page 22: "If I can't picture it, I can't understand it.". Reference anonymous - gravity  Concrete classes: rules of

Event(Action)

Event-Listener listening

Catcher ready to catch

Action-Listener

Event-Source(Button)

Any Object

OnMouse-Listener

Event(Mouse)

Page 23: "If I can't picture it, I can't understand it.". Reference anonymous - gravity  Concrete classes: rules of

Step 1/ define the event-listener object and override the appropriate methods

ActionListener mActionListener = new ActionListener() { @Override public void actionPerformed(ActionEvent e) {

//behavior here

}};

Step 2/ register (add) the event-listener to the event source.

mButton.addActionListener(mActionListener);

Page 24: "If I can't picture it, I can't understand it.". Reference anonymous - gravity  Concrete classes: rules of
Page 25: "If I can't picture it, I can't understand it.". Reference anonymous - gravity  Concrete classes: rules of

Casting

• Casting down may be done ONLY down the class hierarchy.

• Casting up is not required because a subclass object may always be stored in a superclass reference (or an interface that it implements).

Page 26: "If I can't picture it, I can't understand it.". Reference anonymous - gravity  Concrete classes: rules of

Inner and Anonymous Classes

• Though you are captive in the OO paradigm, you can use inner classes and anonymous classes to get around this constraint and write procedural-like code.

• Often times, no one but the enclosing class cares about an object. In this case, you may consider using inner or anonymous classes.

Page 27: "If I can't picture it, I can't understand it.". Reference anonymous - gravity  Concrete classes: rules of

Write a very simple application for a contact manager. The the sake of simplicity, each contact will have a name and a phone number only. The user should be able to create new contacts and diplay all contacts.

Create a Latin dictionary with entries for Latin and English equivalents. Store them in a list and allow the user to delete them.

Page 28: "If I can't picture it, I can't understand it.". Reference anonymous - gravity  Concrete classes: rules of

Interfaces

• A class implements an interface rather than extends it. Any class that implements the interface must override all the interface methods with it's own methods.

• Interface names often end with "able" to imply that they add to the capabilty of the class.

• An interface is a contract; it defines the methods

Page 29: "If I can't picture it, I can't understand it.". Reference anonymous - gravity  Concrete classes: rules of

The ColorSelector GUI App

Page 30: "If I can't picture it, I can't understand it.". Reference anonymous - gravity  Concrete classes: rules of

The Leet Translator GUI App

Page 31: "If I can't picture it, I can't understand it.". Reference anonymous - gravity  Concrete classes: rules of