230 likes | 305 Views
CSE115: Introduction to Computer Science I. Dr. Carl Alphonce 219 Bell Hall NEW 645-4739 NEW alphonce@buffalo.edu. Agenda. Cell phones off & name signs out Review Questions? Objects The birds-and-the-bees talk Communicating with objects. Review.
E N D
CSE115: Introduction to Computer Science I Dr. Carl Alphonce 219 Bell Hall NEW 645-4739 NEW alphonce@buffalo.edu
Agenda • Cell phones off & name signs out • Review • Questions? • Objects • The birds-and-the-bees talk • Communicating with objects
Review • Software development is an iterative and incremental process. • OO software systems are systems of interacting objects. • Objects have • properties: things objects know • (think of the counting object last class) • behaviors: things objects do • (think of the “jumping jack” object)
How do we create objects? • new example1.Terrarium() • There are three parts to this expression: • new • example1.Terrarium • ()
Let’s try it! • We use a tool called Eclipse… • …and a plug-in for Eclipse called DrJava • DrJava provides an interactions pane
Eclipse tour • terminology • view: a subwindow in Eclipse • perspective: a collection of views • Eclipse: a framework for building tools • Eclipse is extended via plug-ins • a plug-in: Java Development Tools (JDT) • others: DrJava, Green, CDT, …
Expression evaluation • evaluating new example1.Terrarium() • causes an object to be created and initialized • produces a value
evaluating a ‘new’ expression When evaluating an expression like ‘new example1.Terrarium()’, the operator ‘new’ first determines the size of the object to be created (let us say it is four byte for the sake of this example)
evaluating a ‘new’ expression When evaluating an expression like ‘new example1.Terrarium()’, the operator ‘new’ first determines the size of the object to be created (let us say it is four byte for the sake of this example) Next, new must secure a contiguous block of memory four bytes large, to store the representation of the object.
evaluating a ‘new’ expression When evaluating an expression like ‘new example1.Terrarium()’, the operator ‘new’ first determines the size of the object to be created (let us say it is four byte for the sake of this example) Next, new must secure a contiguous block of memory four bytes large, to store the representation of the object. Bit strings representing the object are written into the reserved memory locations.
evaluating a ‘new’ expression When evaluating an expression like ‘new example1.Terrarium()’, the operator ‘new’ first determines the size of the object to be created (let us say it is four byte for the sake of this example) Next, new must secure a contiguous block of memory four bytes large, to store the representation of the object. Bit strings representing the object are written into the reserved memory locations. The starting address of the block of memory holding the object’s representation is the value of the ‘new’ expression. This address is called a ‘reference’.
evaluating a ‘new’ expression A similar thing happens when we evaluate another ‘new’ expression like ‘new example1.Caterpillar()’.
evaluating a ‘new’ expression A similar thing happens when we evaluate another ‘new’ expression like ‘new example1.Caterpillar()’. Supposing that an example1.Caterpillar object occupies two bytes of memory, new reserves a contiguous block of two bytes, writes bit strings representing the object to those memory locations, and the starting addressof this block of memory is the value of the ‘new’ expression.
DrJava’s response When we evaluate these ‘new’ expressions in DrJava, what is the response we get? > new example1.Terrarium() example1.Terrarium[frame0,0,0,608x434,layout=java.awt.BorderLayout,title=,resizable,normal,defaultCloseOperation=EXIT_ON_CLOSE,rootPane=javax.swing.JRootPane[,4,30,600x400,layout=javax.swing.JRootPane$RootLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777673,maximumSize=,minimumSize=,preferredSize=],rootPaneCheckingEnabled=true] > new example1.Caterpillar() example1.Caterpillar@bd93cd
DrJava’s response These responses don’t look like memory addresses. What’s going on? After DrJava evaluates the expression, it must print the value. The way Java works when a reference is printed a textual representation of the object it refers to is produced (as defined by the object itself)
Where do objects come from?(The “birds and bees” lecture) • We’ve seen how to create an object. • But where does the object come from? • How does DrJava know what an example1.Terrarium() object is?
Object communication To put example1.Caterpillar object example1.Terrarium object: > new example1.Terrarium().add(new example1.Caterpillar())
Where do objects come from?(The “birds and bees” lecture) ? Programmer writes a program in a high-level language like Java: example1.Terrarium.java Computers don’t understand programs expressed in high-level languages
Compilation Compiler translates A compiler translates program to an equivalent low-level form that a computer can understand example1.Terrarium.class Programmer writes a program in a high-level language like Java: example1.Terrarium.java
Runtime Compiler translates Runtime refers to the time during which a program is executing, or running.
Objects exist only at runtime Compiler translates Objects do not exist while the programmer writes the program, except in their minds. Objects exist only at runtime
Huh? • If objects are the basic building blocks of object-oriented programs, and programmers don’t directly manipulate objects, what do programmers write? • They write class definitions. • Objects are instances of classes. • Classes are instantiated only at runtime.