Hausaufgabe 06 loesung PDF

Title Hausaufgabe 06 loesung
Course Einführung in die Informatik
Institution Technische Universität Berlin
Pages 5
File Size 163.4 KB
File Type PDF
Total Downloads 84
Total Views 134

Summary

Hausaufgabenblatt mit Lösungen...


Description

Einführung in die Informatik - WS 2017/18 Technische Universität Berlin

Computer Vision & Remote Sensing

Übungsblatt 6 (Block 2) Prof. Dr. Olaf Hellwich und Mitarbeiter Objekte, Attribute, Arrays allgemeiner Datentypen Verfügbar ab: Abgabe bis:

27.11.17 04.12.17-08.12.17

Nochmal der Hinweis: Aufgaben, bei der die Beantwortung mit einem Text erforderlich ist, sind nur als PDF abzugeben. Aufgabe 1: Übergabe von primitiven- und Referenzdatentypen

2.5 Punkte

Betrachten Sie folgende drei Klassen: 1 2 3 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

public class Value{ public int x; } public class ValueChanger{ public static void passPrimitiveType(int f){ f=5; } public static void passReferenceType(Value f){ f.x=5; } } public class TestValueChanger{ public static void main(String [] args){ int x = 7; int b = x; b=6; ValueChanger.passPrimitiveType(x); System.out.println(x); Value v = new Value(); Value k = v; v.x=7; ValueChanger.passReferenceType(v); System.out.println(v.x); System.out.println(k.x);

weitere Informationen unter https://isis.tu-berlin.de/course/view.php?id=10881

1

InfTech 19 20 21 22 23

WS 2017/18

Übungsblatt 6 (Block 2)

k.x = 77; System.out.println(v.x); System.out.println(k.x); } }

Was wird auf der Konsole ausgegeben? Begründen Sie Ihre Antwort kurz. Geben Sie weiter an, wieviele Objekte der Klasse Value nach der Zeile 15 im Arbeitsspeicher abgebildet werden. Musterlösung: Zeile 9 gibt 7 aus, da x primitiver Datentyp ist -> Zuweisungen/Methodenaufrufe übergeben nur den Wert der Variablen. Da Value ein komplexer Datentyp ist, werden die Variablen v und k nach der Zuweisung in Zeile 12 die gleiche Referenz (siehe dazu den Hinweis) haben (Zuweisungen übergeben Referenz). Die Methode passReferenceType bekommt auch diese Referenz übergeben und setzt dort das Attribut auf 5. Daher wird in Zeilen 16,17 die 5 ausgegeben. Zeilen 20,21 geben jeweils 77 aus, da v und k immernoch auf dasselbe Objekt zeigen dessen Attribut in Zeile 19 verändert wurde. Es wird nach Zeile 15 nur ein Objekt im Speicher abgebildet, weil alle Referenzen in diesem Beispiel auf dasselbe Objekt verweisen. Hinweis: Es sei an dieser Stelle zusätzlich für Interessierte angemerkt, dass Java nur das Prinzip Call-By-Value beherrscht und kein Call-By-Reference. Im Gegensatz dazu stehen die Sprachen C/C++, in welchen mit Pointern gearbeitet wird. Hier ist auch Call-By-Reference möglich. Das Wort Reference aus Call-By-Reference ist dabei nicht zu verwechseln mit der üblichen Java-Referenz, dem komplexen Datentyp. Aufgabe 2: Vehikel Verwaltung

3.5 Punkte

Gegeben ist eine Klasste Auto mit vier öffentlichen Attributen: 1 2 3 4 5 6

public class Auto { public int baujahr; public String inhaber; public double tankfuellstand; //in Liter public boolean zulassung; }

Implementieren Sie eine Klasse AutoVerwaltung mit folgenden Anweisungen in der main-Methode: • Deklarieren Sie die Variablen trabant und zaporozhets, beide vom Typ Auto. • Erzeugen Sie in seperaten Codezeilen zwei Objekte der Klasse Auto mit dem new-Operator. Weisen Sie jeweils ein Objekt den Variablen trabant und zaporozhets zu. • Weisen Sie den Attributen der Auto-Objekte trabant und zaporozhets Werte gemäß unten angegebener Tabelle zu. • Ded Moroz macht eine Spritztour und verliert die Zulassung. Verringern Sie den Tankfüllstand von zaporozhets um 12.5 Liter und setzten Sie die Zulassung auf false. • Geben Sie die Werte der Attribute baujahr, inhaber und tankfuellstand von zaporozhets und trabant auf der Konsole aus.

weitere Informationen unter https://isis.tu-berlin.de/course/view.php?id=10881

2

InfTech

WS 2017/18 Auto Trabant Zaporozhets

Baujahr 1963 1960

Inhaber Tankfüllstand in l Rainer Zufall 24 Ded Moroz 40

Übungsblatt 6 (Block 2) Zulassung Ja Ja

Die Ausgabe Ihres Programmes könnte z.B. so aussehen: Der Trabant ist vom Baujahr 1963 ist auf 24 Liter getankt und wird von Rainer Zufall gefahren. Der Zapo ist vom Baujahr 1960 ist auf 27.5 Liter getankt und wird von Ded Moroz gefahren. Beantworten Sie die folgende Frage: • Wie lauten die Werte der Attribute baujahr, inhaber, tankfuellstand und zulassung der Objekte trabant bzw. zaporozhets direkt nach der Erzeugung mit dem new-Operator?

Musterlösung: • Attribute eines Objektes werden durch Erzeugung mit new auf die Standard-Werte des jeweiligen Datentypes gesetzt - soweit nicht anders spezifiziert (im Konstruktor). Speziell bedeutet das, dass für beide Objekte trabant und zaporozhets nach den Zeilen 8 und 9 gilt: baujahr hat den Wert 0 (Standard von int), tankfuellstand hat den Wert 0.0 (Standard von double), inhaber hat den Wert null (Standard von jedem Referenzdatentyp wie String) und zulassung hat den Wert false (Standard von boolean). 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26

public class AutoVerwaltung { public static void main(String[] args) { // deklariere zwei Variablen vom Typ Auto Auto trabant; Auto zaporozhets; // erzeuge zwei Objekte der Klasse Auto trabant = new Auto(); zaporozhets = new Auto(); // weise den Attributen der zwei Objekte Werte zu gemaess der gegebenen Tabelle trabant.baujahr = 1963; trabant.inhaber = "Rainer Zufall"; trabant.tankfuellstand = 24; trabant.zulassung = true; zaporozhets.baujahr = 1960; zaporozhets.inhaber = "Ded Moroz"; zaporozhets.tankfuellstand = 40; zaporozhets.zulassung = true; // Ded Moroz macht eine Spritztour und baut einen Unfall zaporozhets.tankfuellstand −=12.5; zaporozhets.zulassung = false; // Ausgabe der Attributwerte der Objekte

weitere Informationen unter https://isis.tu-berlin.de/course/view.php?id=10881

3

InfTech

WS 2017/18

27

System.out.println("Der Trabant ist vom Baujahr "+ trabant.baujahr + " ist auf " + trabant.tankfuellstand + " Liter getankt und wird von " + trabant.inhaber + " gefahren." ); System.out.println("Der Zapo ist vom Baujahr "+ zaporozhets. baujahr + " ist auf " + zaporozhets.tankfuellstand + " Liter getankt und wird von " + zaporozhets.inhaber +" gefahren." );

28

29 30

Übungsblatt 6 (Block 2)

} }

Aufgabe 3: Filme Bibliothek

4 Punkte

Implementieren Sie eine Klasse Film. Fügen Sie die Attribute Name vom Typ String und Erscheinungsjahr vom Typ int hinzu. In dieser Aufgabe sollen die Attribute von außen sichtbar sein. Testen Sie nun diese Klasse, indem Sie eine weitere Klasse Bib schreiben, die über eine main-Methode verfügt. Gehen Sie dazu wie folgt vor: • Definieren Sie eine Variable m, welche die Anzahl der Filme in einem Array repräsentiert. m soll über die Terminal-Klasse eingelesen werden (public static int askInt()). • Definieren Sie ein Array vom Typ Film[] mit der Länge m. • Initialisieren Sie nun in einer geeigneten Schleife die Filme im Array. Die Attribute eines jeden Filmes sollen mithilfe von Benutzereingaben initialisiert werden. Benutzen Sie auch dafür die Terminal-Klasse. Führen Sie den Benutzer durch das Programm mithilfe von Konsolenausgaben. • Geben Sie anschließend die Daten aller Filme mithilfe einer weiteren Schleife auf der Konsole aus. Beispielausgabe auf der Konsole: Bitte geben Sie 2 Bitte geben Sie Matrix Bitte geben Sie 1999 Bitte geben Sie Pulp Fiction Bitte geben Sie 1994

die Anzahl der Filme ein! den Namen des 1ten Films ein: das Erscheinungsjahr des 1ten Films ein: den Namen des 2ten Films ein: das Erscheinungsjahr des 2ten Films ein:

Ausgabe aller Filme 1ter Film: Name:Matrix Erscheinungsjahr:1999 2ter Film: Name:Pulp Fiction Erscheinungsjahr:1994

Musterlösung:

weitere Informationen unter https://isis.tu-berlin.de/course/view.php?id=10881

4

InfTech

1 2 3 4 5 1 2 3 4 5 6 7 8 9 10 11 12 13

WS 2017/18

public class Film { // Attribute public String name; public int erscheinungsjahr; } public class Bib { public static void main(String[] args){ System.out.println("Bitte geben Sie die Anzahl der Filme ein! "); int m = Terminal.readInt(); Film[] filme = new Film[m]; // filme−Array sinnvoll befuellen for (int i = 0;i...


Similar Free PDFs