Download presentation
Presentation is loading. Please wait.
Published byGwendoline Peters Modified over 9 years ago
1
CSE115 / CSE503 Introduction to Computer Science I Dr. Carl Alphonce 343 Davis Hall alphonce@buffalo.edu 1
2
cell phones off laptops away name signs out 2
3
Announcements University-wide – no classes prior to 6:00 PM on: –Monday (9/17) – no class, no office hours –Wednesday (9/26) – no class, no office hours Exam #1 on Friday, 9/28 –Bring UB card to exam –No make-up without a valid excuse (medical, family emergency), backed up by written documentation Exam preparation –Sample exam will be posted on Friday next week (9/21) –In-lecture Q&A session on the following Monday (9/24) 3
4
Roadmap Expressions Variables Types Declarations 4
5
Computers don’t understand programs expressed in high- level languages ? Programmer writes a program in a high-level language like Java; for example, the definition of example1.Terrarium is placed in a file named: example1.Terrarium.java
6
Compilation A compiler translates program to an equivalent low-level form that a computer can understand. Result is placed in a file named: example1.Terrarium.class Compiler translates Programmer writes a program in a high-level language like Java; for example, the definition of example1.Terrarium is placed in a file named: example1.Terrarium.java
7
Runtime Runtime refers to the time during which a program is executing, or running. Compiler translates
8
Objects exist only at runtime Objects do not exist while the programmer writes the program, except in their minds. Compiler translates
9
Classes vs. Objects 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 (in.java files) Objects are instances of classes. Classes are instantiated only at runtime.
10
Object communication To put an example1.Caterpillar object inside an example1.Terrarium object, send an “add” message to the example1.Terrarium object. We say we “invoke” (or “call”) the add “method”. > new example1.Terrarium().add(new example1.Caterpillar())
11
We can add a Caterpillar to the Terrarium like this: new example1.Terrarium().add(new example1.Caterpillar()) We can add an Ant to the Terrarium similarly: new example1.Terrarium().add(new example1.Ant()) Can we add a Caterpillar and an Ant to the same Terrarium? Can we write the following? new example1.Terrarium().add(new example1.Caterpillar()) new example1.Terrarium().add(new example1.Ant()) We can write it, but it won’t do what we want. Q: what happens?
12
A: Two example1.Terrarium objects are created. –One contains an example1.Caterpillar –The other contains an example1.Ant When adding the Ant, we cannot refer to the Terrarium we added the Caterpillar to, because: –we have no reference to it after adding the Caterpillar The value of an expression is lost if it is not –used right away, or –remembered
13
We want to write something like this: t. add( c ) t. add( a ) (notice ‘t’ used in two places) To do this, we need a variable
14
Another example: suppose we have a Caterpillar in a Terrarium: new example1.Terrarium().add(new example1.Caterpillar()) How do we make the Caterpillar move? We call “start()” on the Caterpillar. How do we do this? Can we write the following? new example1.Terrarium().add(new example1.Caterpillar()) new example1.Caterpillar().start() We can, but it won’t do what we want. Q: what happens?
15
A: Two example1.Caterpillar objects are created. –One is placed in the example1.Terrarium, and is NOT “started”. –The other is NOT put into the example1.Terrarium, but is “started”. We cannot refer to the Caterpillar we added to the Terrarium, because: –we have no reference to it after adding it. The value of an expression is lost if it is not –used right away, or –remembered.
16
We want to write something like this: t. add( c ) c. start() (notice ‘c’ used in two places) To do this, we need a variable
17
A variable is: (at its most basic) a storage location in memory for example, location 12207: space for a variable 12203 12204 12205 12206 12207 12208 12209 12210 12211
18
A variable has: a name a location a type a value a scope a lifetime in the HLL (Java) in memory representation scheme/size contents We’ll discuss these later
19
Why are types important? Recall the discussion from early in the semester about how to interpret a string like “01001101” – the proper interpretation depends on the encoding scheme (e.g. two’s complement or IEEE754) The type of a variable tells the compiler, among other things, which encoding schemed to use to read/write data from/to the variable. It also tells us what methods we can call.
20
Variable declaration A variable declaration consists of two basic things: –the type of the variable –the name of the variable Java insists that all variables be declared before use (not all languages require this).
21
The variable declaration Consists minimally of: type & name What is a type? A class is a type. –Remember: objects are instantiated from classes. Examples of variable declarations: example1.Terrariumt; example1.Caterpillar c;
22
Demonstrate in Eclipse Show variable declarations.
23
Syntax (a little more formal) variable declarations appear in many places in Java programs a variable declaration in Java –ALWAYS has: type identifer In our example –type identifier ; –semicolon is a terminator
24
We have a variable… … so now what? After we declare a variable, we need to assign a value to it. We do that using an assignment statement. Unlike an expression, a statement has no value.
25
assignment statement variable = expression ; ‘=’ is the ASSIGNMENT OPERATOR Example: t = new example1.Terrarium();
26
Syntax example1.Terrarium t; example1.Caterpillar c; t = new example1.Terrarium(); c = new example1.Caterpillar(); t.add(c); c.start();
27
Demonstrate in Eclipse Show legal and illegal assignments. Show complete example.
28
A bit of review example1.Terrarium t; example1.Caterpillar c; t = new example1.Terrarium(); c = new example1.Caterpillar(); t.add(c); c.start(); What happens in memory?
29
available used available Something like this! example1.Terrarium t; example1.Caterpillar c; t = new example1.Terrarium(); c = new example1.Caterpillar(); 12203 12204 12205 12206 12207 12208 12209 12210 12211 497362 497363 497364 497365 497366 497367 497368 497369 497370
30
497362 497363 497364 497365 497366 497367 497368 497369 497370 available used 12203 12204 12205 12206 12207 12208 12209 12210 12211 used available reserved for variable t available Each declaration is used by the compiler to ensure that memory is set aside for the corresponding variable example1.Terrarium t; example1.Caterpillar c; t = new example1.Terrarium(); c = new example1.Caterpillar();
31
497362 497363 497364 497365 497366 497367 497368 497369 497370 available used 12203 12204 12205 12206 12207 12208 12209 12210 12211 used available reserved for variable t reserved for variable c available Both t and c have space reserved example1.Terrarium t; example1.Caterpillar c; t = new example1.Terrarium(); c = new example1.Caterpillar();
32
497362 497363 497364 497365 497366 497367 497368 497369 497370 available example1.Terrarium object used 12203 12204 12205 12206 12207 12208 12209 12210 12211 used available reserved for variable t reserved for variable c available The value of the new expression is the starting address of the block of memory holding the representation of the newly created object. example1.Terrarium t; example1.Caterpillar c; t = new example1.Terrarium(); c = new example1.Caterpillar();
33
497362 497363 497364 497365 497366 497367 497368 497369 497370 available example1.Terrarium object used 12203 12204 12205 12206 12207 12208 12209 12210 12211 used available 497366 reserved for variable c available The assignment stores that value in the space set aside for the variable t example1.Terrarium t; example1.Caterpillar c; t = new example1.Terrarium(); c = new example1.Caterpillar();
34
497362 497363 497364 497365 497366 497367 497368 497369 497370 Example1.Caterpillar object available example1.Terrarium object used 12203 12204 12205 12206 12207 12208 12209 12210 12211 used available 497366 497362 available The same applies to the creation of a new example1.Caterpillar object, and the assignment of its reference to the variable c example1.Terrarium t; example1.Caterpillar c; t = new example1.Terrarium(); c = new example1.Caterpillar();
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.