• Keine Ergebnisse gefunden

Exercise2RequiredandProvidedInterfaces Exercise1IntrospectionandReflection PracticeSheet3 AdvancedAspectsofObject-OrientedProgramming(SS2012)

N/A
N/A
Protected

Academic year: 2022

Aktie "Exercise2RequiredandProvidedInterfaces Exercise1IntrospectionandReflection PracticeSheet3 AdvancedAspectsofObject-OrientedProgramming(SS2012)"

Copied!
2
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Prof. Dr. A. Poetzsch-Heffter Dipl.-Inform. Kathrin Geilmann

University of Kaiserslautern Department of Computer Science Software Technology Group

Advanced Aspects of Object-Oriented Programming (SS 2012) Practice Sheet 3

Date of Issue: 24.04.12

Deadline:30.04.12 before 12:00 (before the lecture as PDF via E-Mail)

Exercise 1 Introspection and Reflection

With the techniques of introspection and reflection, it is possible to store objects or whole object graphs in a file.

a) Implement the classPersistencyMangagerthat supports writing and reading of arbitrary objects to and from files. Your class should implement the following Interface

interface PersistencyManager {

public void writeObject(Object o, String toFileName);

public Object readObject(String fromFileName);

}

writeObjectwrites the state of the objecto, the states of the objects in the object graph reachable byoand the reference structure to a newly created file with the given filename. readObjectreads an object graph from the file and reconstructs it, the return value is the object, which acted as entry in the graph during the storage.

Hint: Give each object a persistent identifier and use the identifier for storing references.

b) Look at the following code snippet:

IPersistencyManager pm;

Object o, o2;

...

pm.writeObject(o, ’’File’’);

o2 = pm.readObject(’’File’’);

Is the object graph referenced to byoequal to the one referenced byo2? If not, what is the difference?

c) Look into the Java-Documentation, which possibilities are offered for storing and retrieving objects? What are the advantages and disadvantages of the different solutions? Compare them with your solution.

Exercise 2 Required and Provided Interfaces

Download the source for the classObjectOutputStreamfrom the website of the lecture.

a) Which differentprovided interfacesdoes the class have? Give examples for each of them.

b) What is therequired interfaceof anObjectOutputStream-object?

(2)

Exercise 3 Structural vs. Nominal Typing

Type systems for programming languages can be based on the structure or on the names of types. In nominal type systems types are considered to be equal if they have the same name, whereas in structural type systems types are equal if the have the same structure. For this exercise we assume the following relation on types: a type defined by a classS is a subtype of the type defined by a classT (writtenS <:T) if for all attributes/methods ofT, there is an attribute/method with the same type/signature and the same name inS, i.e. S offers at least all “features“ ofT and may have additional attributes and methods.

The following assignment would be legal in structural typed languages, becauseBhas all the attributesAhas plus an additional one, and themis defined in both classes with the same signature. It is of course illegal in nominal type systems.

class A { class B {

int x; int x;

int y; int y;

int z;

T1 m(T2 p) {...} T1 m(T2 p) {...}

}; };

A a = new B();

Most widely used languages use a nominal type system. An example for a structural typed OO-programming language is Go (seehttp://golang.org). C++, Scala and others use a hybrid type system.

a) What is the advantage of structural typed languages?

b) The University Administration System is now implemented in a language with a structural type system and it is extended with two new modules. One for handling the exams and one for the handling of employes.

class Person { class Student { class Professor { class Employee { String name; String name; string name; string name;

void print(){...} int reg_num; string room; int reg_num;

} void print() {...} void print(){...} int salary;

} } void print() {...}

} class ....

public void registerForExam(Student s) {...}

Which kind of errors can occur now?

c) One can think of a structural subtype definition, which is more flexible than the one presented above. Try to find a structural subtype relation betweenAandB, which does not break Liskov’s Substitution Principle but allows the subtype to use different method signatures than the supertype, i.e. find a relation between the return typesT1 and T3 and between the parameter typesT2 andT4, such thatBis a subtype ofAand the following code is valid for all type correct completions.

class A { class B {

int x; int x;

int y; int y;

int z;

T1 m(T2 p) {...} T3 m(T4 p) {...}

}; };

T2 t2 = ...; // return something with static type T1 A a = ...; // return an object with static type A T1 t1 = a.m(t2);

Referenzen

ÄHNLICHE DOKUMENTE

This paper presents an analysis of state-of-the-art detectors with imagery of green borders and proposes to train Mask R-CNN on new training data which captures explic- itly the

Whereas Ridley ’ s task is to expose Augustus ’ complicated relationship with autobiography (having written the lost de vita sua covering the  rst half of his life and the

These shifts in the local conceptions of crime, in the conception of citizenship and in the conception of the legitimacy of state violence are embedded in global

XMLEncoder / XMLDecoder: Stores only the public parts of objects into an xml representation. It has similar restrictions and features as our solution. It was implemented for

c) Serialization API: Pro: can store complete objects, including private fields, can be tuned for each class by im- plementing special methods. Cons: needs the marker

In nominal type systems types are considered to be equal if they have the same name, whereas in structural type systems types are equal if the have the same structure.. attributes

This corresponds to Buring's (2001) findings for German. He concludes that the DAT&gt;ACC order is the only possible order with DO focus in German since it is favoured

The state established for the tax liabilities represented by duties, taxes, rates and other state back finances including matching increase in tax and penalties for overdue