Fondamenti della Programmazione: Metodi Evoluti Prof ...nardelli/fondamenti-programmazione-metodi...

47
Fondamenti della Programmazione: Metodi Evoluti Prof. Enrico Nardelli Lezione 7: References and Assignment

Transcript of Fondamenti della Programmazione: Metodi Evoluti Prof ...nardelli/fondamenti-programmazione-metodi...

Page 1: Fondamenti della Programmazione: Metodi Evoluti Prof ...nardelli/fondamenti-programmazione-metodi … · Object structure (static property) An object is made of fields. Each field

Fondamenti della Programmazione:Metodi Evoluti

Prof. Enrico Nardelli

Lezione 7: References and Assignment

Page 2: Fondamenti della Programmazione: Metodi Evoluti Prof ...nardelli/fondamenti-programmazione-metodi … · Object structure (static property) An object is made of fields. Each field

Classes and objects

In the program text: classes

At run time: objects (software machines)

Each class describes a set of possible run-time objects.

7-RIFERIMENTI Rev. 2.2.1 (2019-20) di Enrico Nardelli (basato su touch.ethz.ch) 2

Page 3: Fondamenti della Programmazione: Metodi Evoluti Prof ...nardelli/fondamenti-programmazione-metodi … · Object structure (static property) An object is made of fields. Each field

Object structure (static property)

An object is made of fieldsEach field is a value, which is either:

A reference to another objectA basic value: integer, character, “real” number...

(known as an expanded value)

(STOP)

station

nextline

(STOP)

(LINE)

upper_left

(STATION )

lower_right

(POSITION)

x

23.5y

-34.9

(POSITION)7-RIFERIMENTI Rev. 2.2.1 (2019-20) di Enrico Nardelli (basato su touch.ethz.ch) 3

Page 4: Fondamenti della Programmazione: Metodi Evoluti Prof ...nardelli/fondamenti-programmazione-metodi … · Object structure (static property) An object is made of fields. Each field

There are two types of values

Reference types: the value is a reference.

b : STATION

Expanded types: the value is an object.

d : E_STATION

b

(STATION )

(E_STATION )

d

refers to

is

A cars has a brand

A cars has an engine

7-RIFERIMENTI Rev. 2.2.1 (2019-20) di Enrico Nardelli (basato su touch.ethz.ch) 4

Page 5: Fondamenti della Programmazione: Metodi Evoluti Prof ...nardelli/fondamenti-programmazione-metodi … · Object structure (static property) An object is made of fields. Each field

Expanded classes

A class may be declared as

expanded class E_STATION

... The rest as in STATION ...

Then any entity declared

d : E_STATION

has the expanded semantics just described:its value is an object.

7-RIFERIMENTI Rev. 2.2.1 (2019-20) di Enrico Nardelli (basato su touch.ethz.ch) 5

Page 6: Fondamenti della Programmazione: Metodi Evoluti Prof ...nardelli/fondamenti-programmazione-metodi … · Object structure (static property) An object is made of fields. Each field

Basic types

So called basic types (BOOLEAN, INTEGER, NATURAL, REAL, CHARACTER, STRING) in Eiffel are classes – just like all other typesMost of them are expanded…

a := b

… and immutable (they do not contain commands to change the state of their instances)…

a := a.plus (b) instead of a.add (b)

5b3a

5a 5b

a + bAnother name for the

same feature7-RIFERIMENTI Rev. 2.2.1 (2019-20) di Enrico Nardelli (basato su touch.ethz.ch) 6

The variable is re-assigned A status changing command

Page 7: Fondamenti della Programmazione: Metodi Evoluti Prof ...nardelli/fondamenti-programmazione-metodi … · Object structure (static property) An object is made of fields. Each field

Basic types as expanded classes

expanded class INTEGER ... (internally: INTEGER_32, INTEGER_64 etc.)

expanded class BOOLEAN ... expanded class CHARACTER ... expanded class REAL ...

(internally: REAL_32, REAL_64 etc.)

n : INTEGER

c : CHARACTER

s : BOOLEAN

7-RIFERIMENTI Rev. 2.2.1 (2019-20) di Enrico Nardelli (basato su touch.ethz.ch) 7

What about strings?

Page 8: Fondamenti della Programmazione: Metodi Evoluti Prof ...nardelli/fondamenti-programmazione-metodi … · Object structure (static property) An object is made of fields. Each field

Strings in Eiffel are not expanded…

s : STRING

… and not immutable

s := “I love Eiffel”s.append (“ very much!”) [compare with a := a+b]

s area

count

Strings are a bit different

I l o v ...e

7-RIFERIMENTI Rev. 2.2.1 (2019-20) di Enrico Nardelli (basato su touch.ethz.ch) 8

13

Page 9: Fondamenti della Programmazione: Metodi Evoluti Prof ...nardelli/fondamenti-programmazione-metodi … · Object structure (static property) An object is made of fields. Each field

Basic types

… their only privilege is to use manifest constants to construct their instances:

b : BOOLEANx : INTEGERc : CHARACTERs : STRING…b := Truex := 5 -- instead of create x.make_fivec := ‘c’ s := “I love Eiffel”

7-RIFERIMENTI Rev. 2.2.1 (2019-20) di Enrico Nardelli (basato su touch.ethz.ch) 9

It's not an expanded class!

Page 10: Fondamenti della Programmazione: Metodi Evoluti Prof ...nardelli/fondamenti-programmazione-metodi … · Object structure (static property) An object is made of fields. Each field

InitializationDefault value of any reference type is VoidDefault values of basic expanded types are:

False for BOOLEAN

0 (zero) for numeric types (INTEGER, NATURAL, REAL) “null” character (its code = 0) for CHARACTER

Default value of an expanded type is an object, whose fields have default values of their types

These rules apply to: Fields (from class attributes), on object creation Local variables, on start of routine execution

(includes Result)

(COUPLE )0

7-RIFERIMENTI Rev. 2.2.1 (2019-20) di Enrico Nardelli (basato su touch.ethz.ch) 10

Page 11: Fondamenti della Programmazione: Metodi Evoluti Prof ...nardelli/fondamenti-programmazione-metodi … · Object structure (static property) An object is made of fields. Each field

Two kinds of types

Reference types: value of any entity is a reference.

Example:

s : STATION

Expanded types: value of an entity is an object.Example:

p : POINT

… … …expanded class POINT

featurex, y : REAL

s

(STATION )

refers

p 0.00.0

(POINT )

7-RIFERIMENTI Rev. 2.2.1 (2019-20) di Enrico Nardelli (basato su touch.ethz.ch) 11

Page 12: Fondamenti della Programmazione: Metodi Evoluti Prof ...nardelli/fondamenti-programmazione-metodi … · Object structure (static property) An object is made of fields. Each field

Objects of reference or expanded types

Objects of reference types: they don’t exist when we declarethem (they are initially Void ).

s : STATION

We need to explicitly create them with a create instruction.create s

Objects of expanded types: they exist by just declaring them (they are never Void )p : POINT

No need to use a create instructionFeature default_create from ANY is implicitly invoked on them

when creating the containing instance

7-RIFERIMENTI Rev. 2.2.1 (2019-20) di Enrico Nardelli (basato su touch.ethz.ch) 12

Page 13: Fondamenti della Programmazione: Metodi Evoluti Prof ...nardelli/fondamenti-programmazione-metodi … · Object structure (static property) An object is made of fields. Each field

How to declare an expanded type

To create an expanded type, declare the class with keyword expanded:

expanded class COUPLE

feature -- Accessman, woman : HUMAN

years_together : INTEGER

end

Any entity of type COUPLE is expanded:adam_and_eve: COUPLE

Reference

Expanded

7-RIFERIMENTI Rev. 2.2.1 (2019-20) di Enrico Nardelli (basato su touch.ethz.ch) 13

VoidVoid

0

A "mixed" expanded class

adam_and_eve

Page 14: Fondamenti della Programmazione: Metodi Evoluti Prof ...nardelli/fondamenti-programmazione-metodi … · Object structure (static property) An object is made of fields. Each field

Object creation

class FAMILY

feature parents : COUPLE

home : HOUSE

phone : STRING

…class CLAN

feature main_family : FAMILY

…create main_family

parents

(FAMILY )

...

...

VoidVoid

0...

7-RIFERIMENTI Rev. 2.2.1 (2019-20) di Enrico Nardelli (basato su touch.ethz.ch) 14

The instance referred to by main_family is created only when this instruction is

executed…

A "mixed" expanded class

A standard reference class

Page 15: Fondamenti della Programmazione: Metodi Evoluti Prof ...nardelli/fondamenti-programmazione-metodi … · Object structure (static property) An object is made of fields. Each field

Object creation

class RECTANGLEfeature

top_left : POINTbottom_right : POINTcost : INTEGERcolor : STRING…

class DRAWINGfeature

rect : RECTANGLE…create rect

top_left

(RECTANGLE )

7-RIFERIMENTI Rev. 2.2.1 (2019-20) di Enrico Nardelli (basato su touch.ethz.ch) 15

...

...

0.00.0...

A "mixed" expanded class

When this is executed…

Page 16: Fondamenti della Programmazione: Metodi Evoluti Prof ...nardelli/fondamenti-programmazione-metodi … · Object structure (static property) An object is made of fields. Each field

Initializationclass SOME_CLASSfeature p : POINT v: VECTOR s: STRINGend

When creating an instance of SOME_CLASS which is the default initial value given to its attributes?

expanded class POINTfeature x, y : REAL end

class VECTOR

feature x, y : REAL end

STRING

0.00.0

(POINT)

x

y

Void

Void

7-RIFERIMENTI Rev. 2.2.1 (2019-20) di Enrico Nardelli (basato su touch.ethz.ch) 16

Page 17: Fondamenti della Programmazione: Metodi Evoluti Prof ...nardelli/fondamenti-programmazione-metodi … · Object structure (static property) An object is made of fields. Each field

Is this correct?

expanded class POINTcreate makefeature x, y : REALfeature make

dox := 5.0y := 5.0

end...

end

REMEMBER: Instances of expanded classes are automatically created when

the object containing them is createdFor x : POINTThere is no need of a create x

7-RIFERIMENTI Rev. 2.2.1 (2019-20) di Enrico Nardelli (basato su touch.ethz.ch) 17

Page 18: Fondamenti della Programmazione: Metodi Evoluti Prof ...nardelli/fondamenti-programmazione-metodi … · Object structure (static property) An object is made of fields. Each field

Custom initialization for expanded types?

Expanded classes can be created only in the default way

i.e. using default_create, possibly redefining it, if needed for a proper initialization

expanded class POINTinherit ANY

redefine default_createfeature

default_createdo

x := 5.0; y := 5.0 end

end7-RIFERIMENTI Rev. 2.2.1 (2019-20) di Enrico Nardelli (basato su touch.ethz.ch) 18

Page 19: Fondamenti della Programmazione: Metodi Evoluti Prof ...nardelli/fondamenti-programmazione-metodi … · Object structure (static property) An object is made of fields. Each field

Do you remember this expanded class?

expanded class COUPLE

feature -- Accessman, woman : HUMAN

years_together : INTEGER

end

Assume there is SOME_CLASS definition with this declaration:

adam_and_eve: COUPLE

7-RIFERIMENTI Rev. 2.2.1 (2019-20) di Enrico Nardelli (basato su touch.ethz.ch) 19

Page 20: Fondamenti della Programmazione: Metodi Evoluti Prof ...nardelli/fondamenti-programmazione-metodi … · Object structure (static property) An object is made of fields. Each field

Can expanded types contain reference types?

An instance of reference type (SOME_CLASS ) contains an instance of expanded types (COUPLE) which contain instances of a reference type (HUMAN )

adam_and_eve

(COUPLE )

(HUMAN)

(HUMAN)10...

...

7-RIFERIMENTI Rev. 2.2.1 (2019-20) di Enrico Nardelli (basato su touch.ethz.ch) 20

(SOME_CLASS )

...

...

...

Page 21: Fondamenti della Programmazione: Metodi Evoluti Prof ...nardelli/fondamenti-programmazione-metodi … · Object structure (static property) An object is made of fields. Each field

Who can reference what?

Objects of expanded types can contain references to other objects…

… but they cannot be referenced by other objects!

c

(COUPLE )

(HUMAN)

(HUMAN)10

7-RIFERIMENTI Rev. 2.2.1 (2019-20) di Enrico Nardelli (basato su touch.ethz.ch) 21

s

Page 22: Fondamenti della Programmazione: Metodi Evoluti Prof ...nardelli/fondamenti-programmazione-metodi … · Object structure (static property) An object is made of fields. Each field

target := source

source is an expression and may be: Call to a query:

• position• upper_left position

Arithmetic or boolean expression:• a + (b ∗ c)• (a < b) and (c = d )

target is a variable entity and may be: An attribute Result in a function A “local variable” of a routine

Semantics after the assignment source equals target the value of source is not changed by the assignment

Changing variable values: assignment

7-RIFERIMENTI Rev. 2.2.1 (2019-20) di Enrico Nardelli (basato su touch.ethz.ch) 22

Page 23: Fondamenti della Programmazione: Metodi Evoluti Prof ...nardelli/fondamenti-programmazione-metodi … · Object structure (static property) An object is made of fields. Each field

Assignment to attributes

GENERAL RULE: Direct assignment to an attribute is only allowed if an attribute is called in an unqualified way (i.e., by the object itself). Are the following allowed?

y := 5

x.y := 5

Current.y := 5

7-RIFERIMENTI Rev. 2.2.1 (2019-20) di Enrico Nardelli (basato su touch.ethz.ch) 23

There are two main reasons for the general rule:1. An other client may not be aware of the restrictions put on

the attribute value and interdependencies with other attributes => class invariant violation

2. The uniform access principle (client access independent from the implementation (memory/computation))

OK

Error

?Error

Page 24: Fondamenti della Programmazione: Metodi Evoluti Prof ...nardelli/fondamenti-programmazione-metodi … · Object structure (static property) An object is made of fields. Each field

Effect of an assignment (1)

Reference type: value of any entity is a reference.b, c : STATION

c := b

Expanded type: value of an entity is an objectd, e : E_STATION

e := d

Assignment: copy the reference

Assignment: copy the object

7-RIFERIMENTI Rev. 2.2.1 (2019-20) di Enrico Nardelli (basato su touch.ethz.ch) 24

Page 25: Fondamenti della Programmazione: Metodi Evoluti Prof ...nardelli/fondamenti-programmazione-metodi … · Object structure (static property) An object is made of fields. Each field

Effect of an assignment (2)

Reference type: value of any entity is a reference.

b, c : STATION

Expanded type: value of an entity is an object

d, e : E_STATION

b

(STATION )

(E_STATION )

d

Assignment: copy the referencec := b

c

Assignment: copy the objecte := d

(E_STATION )

e

7-RIFERIMENTI Rev. 2.2.1 (2019-20) di Enrico Nardelli (basato su touch.ethz.ch) 25

Page 26: Fondamenti della Programmazione: Metodi Evoluti Prof ...nardelli/fondamenti-programmazione-metodi … · Object structure (static property) An object is made of fields. Each field

Reference assignment

1.02.0

(VECTOR )

a0.0-1.0

(VECTOR )

b

a := b

a references the same object as b :a = b

7-RIFERIMENTI Rev. 2.2.1 (2019-20) di Enrico Nardelli (basato su touch.ethz.ch) 26

Page 27: Fondamenti della Programmazione: Metodi Evoluti Prof ...nardelli/fondamenti-programmazione-metodi … · Object structure (static property) An object is made of fields. Each field

Expanded assignment

a 1.25.0

(POINT )

b -2.07.8

(POINT )

a := b

The value of b is copied into a, and again:a = b

-2.07.8

7-RIFERIMENTI Rev. 2.2.1 (2019-20) di Enrico Nardelli (basato su touch.ethz.ch) 27

Page 28: Fondamenti della Programmazione: Metodi Evoluti Prof ...nardelli/fondamenti-programmazione-metodi … · Object structure (static property) An object is made of fields. Each field

Assignment

Explain graphically the effect of an assignment:

(HUMAN)

32„John“

(HUMAN)

a

30„Jane“

(HUMAN)

25„Dan“

(HUMAN)

24„Lisa“

(COUPLE )10

a := b

b

(COUPLE )44

Here COUPLE is an expanded class, HUMAN is a reference class

7-RIFERIMENTI Rev. 2.2.1 (2019-20) di Enrico Nardelli (basato su touch.ethz.ch) 28

Page 29: Fondamenti della Programmazione: Metodi Evoluti Prof ...nardelli/fondamenti-programmazione-metodi … · Object structure (static property) An object is made of fields. Each field

What to do with unreachable objects

Reference assignments maymake some objects useless

Two possible approaches: Manual “free” (C++, Pascal) Automatic garbage collection (Eiffel, Oberon, Java, .NET)

“Almaviva”name

landlordloved_one

aO1

“Figaro”O2

“Susanna”O3

7-RIFERIMENTI Rev. 2.2.1 (2019-20) di Enrico Nardelli (basato su touch.ethz.ch) 29

Page 30: Fondamenti della Programmazione: Metodi Evoluti Prof ...nardelli/fondamenti-programmazione-metodi … · Object structure (static property) An object is made of fields. Each field

Arguments for automatic collection

Manual reclamation is dangerous for reliability.

Wrong “frees” are among the most difficult bugs to detect and correct.

Manual reclamation is tedious.

Modern garbage collectors have acceptable performance overhead.

GC is tunable: disabling, activation, parameterization....

7-RIFERIMENTI Rev. 2.2.1 (2019-20) di Enrico Nardelli (basato su touch.ethz.ch) 30

Page 31: Fondamenti della Programmazione: Metodi Evoluti Prof ...nardelli/fondamenti-programmazione-metodi … · Object structure (static property) An object is made of fields. Each field

Properties of a garbage collector (GC)

Consistency (never reclaim a reachable object). Completeness (reclaim every unreachable object –eventually).

Consistency (also called safety) is an absolute requirement. Better no GC than an unsafe GC.

But: safe automatic garbage collection is hard in C-based languages.

7-RIFERIMENTI Rev. 2.2.1 (2019-20) di Enrico Nardelli (basato su touch.ethz.ch) 31

Page 32: Fondamenti della Programmazione: Metodi Evoluti Prof ...nardelli/fondamenti-programmazione-metodi … · Object structure (static property) An object is made of fields. Each field

Do not confuse assignment with equalityInstruction

(prescriptive and destructive)

Expression (descriptive)

7-RIFERIMENTI Rev. 2.2.1 (2019-20) di Enrico Nardelli (basato su touch.ethz.ch) 32

Expression (descriptive)

x := y

if x = y then...

if x = Current then...

Page 33: Fondamenti della Programmazione: Metodi Evoluti Prof ...nardelli/fondamenti-programmazione-metodi … · Object structure (static property) An object is made of fields. Each field

Equality testing (1)

Let a and b be variable of a reference type

To test equality of their values (which are references) use the instruction for reference equality

a = b

To test equality of their referenced objects, i.e. of items referenced by their values (even if the references themselves may be different), use the instruction for object equality

a ~ bwhich is implemented by testing that all attributes are “object equal ”

N.B.: a recursive definition7-RIFERIMENTI Rev. 2.2.1 (2019-20) di Enrico Nardelli (basato su touch.ethz.ch) 33

Page 34: Fondamenti della Programmazione: Metodi Evoluti Prof ...nardelli/fondamenti-programmazione-metodi … · Object structure (static property) An object is made of fields. Each field

Referenced entities equality

7-RIFERIMENTI Rev. 2.2.1 (2019-20) di Enrico Nardelli (basato su touch.ethz.ch) 34

a = b ?

a = b ?

1.02.0

(VECTOR )

a b

1.02.0

(VECTOR )

1.02.0

(VECTOR )

ba

a ~ b ?

Page 35: Fondamenti della Programmazione: Metodi Evoluti Prof ...nardelli/fondamenti-programmazione-metodi … · Object structure (static property) An object is made of fields. Each field

Equality testing (2)

Note:a = b implies a ~ b

while when a ~ b it can be a /= b

For variables of "pure" expanded type both tests always provide the same result!An expanded type is "pure" if it is "basic" or all subtypes composing it are "pure"But for variables of "mixed" expanded types the two tests can have different results

7-RIFERIMENTI Rev. 2.2.1 (2019-20) di Enrico Nardelli (basato su touch.ethz.ch) 35

Page 36: Fondamenti della Programmazione: Metodi Evoluti Prof ...nardelli/fondamenti-programmazione-metodi … · Object structure (static property) An object is made of fields. Each field

Remember

expanded class POINTfeature x, y : REALend

class VECTOR

feature x, y : REAL

end

0.00.0

(POINT)

x

y

7-RIFERIMENTI Rev. 2.2.1 (2019-20) di Enrico Nardelli (basato su touch.ethz.ch) 36

v 0.00.0

x

y

(VECTOR)

p

Page 37: Fondamenti della Programmazione: Metodi Evoluti Prof ...nardelli/fondamenti-programmazione-metodi … · Object structure (static property) An object is made of fields. Each field

Object equality (reference types)

a ~ b ?

a ~ b ?

1.02.0

(VECTOR )

a b

1.02.0

(VECTOR )

1.02.0

(VECTOR )

ba

7-RIFERIMENTI Rev. 2.2.1 (2019-20) di Enrico Nardelli (basato su touch.ethz.ch) 37

a = b ?

a = b ?

Page 38: Fondamenti della Programmazione: Metodi Evoluti Prof ...nardelli/fondamenti-programmazione-metodi … · Object structure (static property) An object is made of fields. Each field

Object equality (expanded types)

Entities of expanded types are compared by value!POINT is a "pure" expanded type: for such a type, reference equality and object equality always provide the same result!

a ~ b ?

a 1.25.0

(POINT )

b 1.25.0

(POINT )

7-RIFERIMENTI Rev. 2.2.1 (2019-20) di Enrico Nardelli (basato su touch.ethz.ch) 38

a = b ?

Page 39: Fondamenti della Programmazione: Metodi Evoluti Prof ...nardelli/fondamenti-programmazione-metodi … · Object structure (static property) An object is made of fields. Each field

Object comparison: = versus ~

s1: STRING = “Teddy”s2: STRING = “Teddy”…s1 = s2 ???

s1 ~ s2 ???…

Now you know what to do if interested in comparing the content of two strings

7-RIFERIMENTI Rev. 2.2.1 (2019-20) di Enrico Nardelli (basato su touch.ethz.ch) 39

reference comparison on different objects

object comparison

Page 40: Fondamenti della Programmazione: Metodi Evoluti Prof ...nardelli/fondamenti-programmazione-metodi … · Object structure (static property) An object is made of fields. Each field

Remember

expanded class COUPLE

feature -- Accessman, woman : HUMAN

years_together : INTEGER

end

Any entities of type COUPLE is automatically an expanded entity:

adam_and_eve: COUPLEExpanded

Reference

7-RIFERIMENTI Rev. 2.2.1 (2019-20) di Enrico Nardelli (basato su touch.ethz.ch) 40

Page 41: Fondamenti della Programmazione: Metodi Evoluti Prof ...nardelli/fondamenti-programmazione-metodi … · Object structure (static property) An object is made of fields. Each field

Expanded entities equality

(HUMAN)32

„John“

(HUMAN)

a

30„Jane“

a ~ b ?

(COUPLE )10

7-RIFERIMENTI Rev. 2.2.1 (2019-20) di Enrico Nardelli (basato su touch.ethz.ch) 41

(HUMAN)32

„John“

(HUMAN)

b

30„Jane“

(COUPLE )10

COUPLE is NOT a "pure" expanded type: for such a type reference equality and object equality do not always provide the same result!

a = b ?

Page 42: Fondamenti della Programmazione: Metodi Evoluti Prof ...nardelli/fondamenti-programmazione-metodi … · Object structure (static property) An object is made of fields. Each field

Expanded entities equality

(HUMAN)

32„John“a

(COUPLE )10

7-RIFERIMENTI Rev. 2.2.1 (2019-20) di Enrico Nardelli (basato su touch.ethz.ch) 42

(HUMAN)

b

30„Jane“

(COUPLE )10

a ~ b ? a = b ?

COUPLE is NOT a "pure" expanded type, but in this case both equality tests give the same result!

Page 43: Fondamenti della Programmazione: Metodi Evoluti Prof ...nardelli/fondamenti-programmazione-metodi … · Object structure (static property) An object is made of fields. Each field

Attachment

Is a more general term than assignment Includes:

Assignmenta := b

Passing arguments to a routinef (a: SOME_TYPE)

do … end… … …f (b)

Same semantics

7-RIFERIMENTI Rev. 2.2.1 (2019-20) di Enrico Nardelli (basato su touch.ethz.ch) 43

Page 44: Fondamenti della Programmazione: Metodi Evoluti Prof ...nardelli/fondamenti-programmazione-metodi … · Object structure (static property) An object is made of fields. Each field

Dynamic aliasing

a, b: VECTOR

…create b.make (1.0, 0.0)a := b

now a and b reference the same object (are two names or aliases of the same object) any change to the object attached to a will be reflected, when accessing it using b any change to the object attached to b will be reflected, when accessing it using a

1.00.0

(VECTOR )

a

bx

y

7-RIFERIMENTI Rev. 2.2.1 (2019-20) di Enrico Nardelli (basato su touch.ethz.ch) 44

Page 45: Fondamenti della Programmazione: Metodi Evoluti Prof ...nardelli/fondamenti-programmazione-metodi … · Object structure (static property) An object is made of fields. Each field

What are the values of a.x, a.y, b.x and b.y after executing each instruction 1 to 3?

a, b: VECTOR

…create a.make (-1.0, 2.0)create b.make (3.0, 0.0)

1 a := b2 b.set_x (5.0)3 a.set_y (-10.0)

Dynamic aliasing (1)

5.0-10.0

(VECTOR )

a

bx

y

7-RIFERIMENTI Rev. 2.2.1 (2019-20) di Enrico Nardelli (basato su touch.ethz.ch) 45

3.00.0

(VECTOR )

a

bx

y

-1.02.0

x

y

Page 46: Fondamenti della Programmazione: Metodi Evoluti Prof ...nardelli/fondamenti-programmazione-metodi … · Object structure (static property) An object is made of fields. Each field

Dynamic aliasing (2)

What are the values of a.x, a.y, b.x and b.y after executing each instruction 1-3?Now assume VECTOR is an expanded class

a, b: VECTOR

…create a.make (-1.0, 2.0)create b.make (3.0, 0.0)

1 a := b2 b.set_x (5.0)3 a.set_y (-10.0)

7-RIFERIMENTI Rev. 2.2.1 (2019-20) di Enrico Nardelli (basato su touch.ethz.ch) 46

3.0-10.0

(VECTOR )

a b

x

y

5.00.0

(VECTOR )

x

y

-1.02.0

(VECTOR )

a b

x

y

3.00.0

(VECTOR )

x

y

Page 47: Fondamenti della Programmazione: Metodi Evoluti Prof ...nardelli/fondamenti-programmazione-metodi … · Object structure (static property) An object is made of fields. Each field

Compare the final result

VECTOR defined asreference type

VECTOR defined asexpanded type

7-RIFERIMENTI Rev. 2.2.1 (2019-20) di Enrico Nardelli (basato su touch.ethz.ch) 47

5.0-10.0

(VECTOR )

a

bx

y

3.0-10.0

(VECTOR )

a b

x

y

5.00.0

(VECTOR )

x

y