Ein paar Fragen zu OOP und Java.

TJava

Bekanntes Mitglied
Hallo ich schreibe bald eine Klausur in OOP und möchte gerne ein paar Fragen stellen.
Im Laufe der Zeit wird dann hier ein Fragenkatalog entstehen

Und hier kommt die erste.

1) Erklären Sie den Unterschied zwischen Kopieren und Klonen.

Kopieren:
Werte werden kopiert, sie besitzen keine Identität.

Klonen:
Objekte werden geklont, sie besitzen eine Identität. Ein geklontes Objekt ist ein Objekt mit anderer Identität, aber mit selben Eigenschaften.

richtig?

MfG
 
Zuletzt bearbeitet:

diggaa1984

Top Contributor
Bei einer Kopie B von Objekt A, hat nach einem Verständnis jede Änderung von B auch identische Auswirkungen auf A.

Beim Klonen ist B ein eigenständiges Objekt, was A in seinen Eigenschaften gleicht. Änderungen an B haben keine Auswirkung auf A.

In Java gilt standardmäßig folgendes bei der Benutzung von Object.clone().

Hier wird zwar das Objekt geklont ABER je nach Typ der Klassenvariablen des Objektes A können Änderungen an Klassenvariablen in B auch auf A Auswirkungen haben. Man spricht von einer flachen Kopie.
[...] this method creates a new instance of the class of this object and initializes all its fields with exactly the contents of the corresponding fields of this object, as if by assignment; the contents of the fields are not themselves cloned. Thus, this method performs a "shallow copy" of this object, not a "deep copy" operation.

Dürfte aber für deine Frage eher unerheblich sein.
 

TJava

Bekanntes Mitglied
Danke!

2) Wie wird versehentliches Überschreiben in Java und C++ verhindert?

Java:
Final

C#:
Sealed

Gruss
 
Zuletzt bearbeitet:

TJava

Bekanntes Mitglied
Was ist der Unterschied zwischen Abstraktion und Spezialisierung?

Abstraktion:
Wird genutzt um konzeptionelle Dinge in einer Oberklasse zusammenzufassen.
Methoden/Operation in Oberklasse sind allen Unterklassen nutzbar.

Sind Methoden nicht in Unterklassen allgemein Nutzbar, kommen sie in der Oberklasse als abstrakte Methoden vor.
In den Unterklassen werden abstrakte Methoden der Oberklasse in ihren unterschiedlichen Ausprägungen implementiert.

Spezialisierung:
Eine Spezialisierung einer Oberklasse bedeutet, dass die Unterklasse die Oberklasse ersetzen kann.
Es geht um Wiederverwendbarkeit der Oberklasse und extra vorgesehene Erweiterungsmöglichkeiten.

Kann mir jemand die Unterschiede etwas genauer erklären?
 

TJava

Bekanntes Mitglied
Leider nein. Ich verstehe auch den wirklichen unterschied nicht.

Abstraktion ist halt das man versucht die Oberklasse mit dingen zu füllen die auch in den Unterklassen verwendet werden. Man geht davon aus das es mehrere Unterklassen gibt.

Spezialisierung geht davon aus das es nur eine Unterklasse gibt und die Unterklasse auch die Oberklasse ersetzen kann soll.
Es werden extra Lücken gelassen um im der speziellen Klasse gefüllt zu werden.
z.b. Thread bietet die run()-Methode an.

Aber hätte gerne eine "offizielle" Erklärung dazu. Das sind halt die Dinge die ich darunter verstehe.
 
F

fisherman

Gast
Spezialisierung geht davon aus das es nur eine Unterklasse gibt und die Unterklasse auch die Oberklasse ersetzen kann soll.
Eine Unterklasse soll eine Oberklasse nicht ersetzen, sondern erweitern. Daher lautet das Schlüsselwort für die Vererbung auch extends.

"Offizielle Erklärungen" zu Java findest du in den Java Specs bei Oracle und den dazugehörigen Dokus bzw. Tutorials.
 

TJava

Bekanntes Mitglied
Aber in ihrer Verwendung ersetzt die speziellere, die allgemeinere Klasse.
Und vor allem kann die Unterklasse das. Subtyping etc.
 
Zuletzt bearbeitet:

kaoZ

Top Contributor
Prinzipiell ist die Sache mit der Abstraktion relativ einfach ,

Stell dir einfach vor es wäre eine Art "Sammelbegriff" für Elemente eines Typs, welche eben konkretisierte Subtypen haben

Hier mal ein Beispiel anhand eines Dokuments :

Java:
public abstract class Dokument{...}

in diesem Fall wäre Dokument die Abstraktion, der Dinge ( oder auch Typen ) die eine is-a beziehung hierzu hätten,

hier erläutert an dem Beispiel der Klasse Zeugnis :

Java:
public class Zeugnis extends Dokument{...}

wie du sehen kannst wird hier das Schlüsselwort
Code:
extends
verwendet , um dementsprechend zu deklarieren das Zeugnis eine Konkretisierung , oder auch Spezialisierung von Dokument ist, und diese Abstraktion um einen Spezialisierten Typ erweitert.

Code:
Zeugnis [COLOR="red"][I]is-a[/I][/COLOR] Dokument
, also
Code:
Zeugnis [B]ist ein[/B] Dokument.

Überall wo du diesen Vergleich anwenden kannst macht Vererbung auch Sinn, ob es dann im Speziellen die beste Lösung ist , ist Situationsabhängig, da man sich einerseits auf Abstraktionen stützen soll und oder möglichst gegen Schnittstellen Programmieren, anderer seits wiederum soll man die Komposition der Vererbung vorziehen.

Was das jetzt für die Flexibilität bedeutet :

Angenommen du hättest eine Methode , die dir ein beliebieges Dokument mit einem Titel versehen soll,

Code:
public void createTitle(String title, Dokument dokument){...}

so ist diese Methode so deklariert, (da hier die Abstraktion als Parameter angegeben ist) das du Ihr jede Art von Typ übergeben kannst , der eine Konkretisierung , bzw. Spezialisierung von Dokument ist.

hättest du jetzt keine Abstrakte Superklasse, und würdest keine Vererbung nutzen , müsstest du für jeden Dokumenttyp eine eigene Methode anbieten

Java:
public void createTitle(String title, Zeugnis zeugnis){...}

public void createTitle(String title, Brief brief){...}

usw. usw.
 
Zuletzt bearbeitet:

TJava

Bekanntes Mitglied
Danke für alles bisher :D

Jetzt kommt etwas was ich in der Anwendung nicht verstehe.
63xf1t.jpg



Wie versteht ihr das und wo ist der Sinn?
Kann mir jemand dazu ein Anwendungsbeispiel nennen?


Java:
public class Kunde {
	public void info(){
	  Vertreter v ;
	  v.abschließen();
	}
}

Java:
public class WiesSollteDieseKlasseHeißen? {
	
	class Versicherung {
		class Agent implements Vertreter {
			@Override
			public void abschließen() {
				System.out.println("test");
			}
		}
	}
}

Java:
public interface Vertreter {	
	void abschliessen();
}
 
Zuletzt bearbeitet:

Natac

Bekanntes Mitglied
Java:
public class Kunde {
	public void info(){
	  Vertreter v ;
	  v.abschließen();
	}
}
Also der Code ist schon mal "falsch"
  1. Gibt es IMMER eine NPE; da
    Code:
    v
    nicht gesetzt ist.
  2. Sind Sonderzeichen wie "ß" in Methoden-, Klassen- oder Variablennamen immer eine schlechte Idee. Nimm lieber a-zA-Z0-9_$, damit kommt jeder Zeichensatz klar.

Könntest du zu dem übrigen Code bitte schreiben, WAS genau du nicht verstehst?
 

TJava

Bekanntes Mitglied
Ohh sorry habe nicht gesehen das der Uplaod nicht geklappt hat.
Ich versuche im allgemeinen diese Folie zu verstehen.

Dort steht Kunden sehen nur den Agenten- nicht das Institut.
?????:L???:L???:L

Die NPE ist mir klar, möchte nur wissen in wie fern der Kunde da nichts sieht.
Verstehe den Zusammengang nicht.
 
Zuletzt bearbeitet:

TJava

Bekanntes Mitglied
Da niemand die Frage beantworten kann oder möchte.

Kommt hier die nächste:

Was bedeutet Record-Typen oder Record-Werte?
veränderliche und unveränderliche Record-Werte/-Typen?
 

ARadauer

Top Contributor
Code:
    public class Versicherung {
        class Agent implements Vertreter {
            @Override
            public void abschließen() {
                System.out.println("test");
            }
        }
    }
so könnte man es machen, und da hast du auch gleich dein Beispiel. Aber ganz ehrlich, ich würde das so nie programmieren.
Das macht evtl Sinn, wenn die innere Klasse ohne der Äußeren so wirklich gar keinen Sinn ergibt.
Aber innere klassen tragen immer start zur Verwirrung bei, gönn dem Agenten doch eine eigene Klasse... auch wenn es keine Agenten ausserhalb von Versicherungen geben kann, ist die extra Datei doch kein Hindernis...
 

TJava

Bekanntes Mitglied
Hallo Montag ist Klausur dann habt ihr auch wieder Ruhe :D

Untertyprelation für Arrays mit unveränderlichen Elementen [ Ind ] of El:
Ind ist der Indextyp, El der Elementtyp.
[ Ind’ ] of El’ <: [ Ind ] of El wenn Ind <: Ind’ (kontravariant) und El’ <: El (kovariant)

Bedeutet das:
T: Object [10] t = new Object();
T': String [10] t'= new String();

Index ist hier bei T Object und bei T' String. Was aber falsch wäre. Ich verstehe nicht was es für eine Rolle spielt, da das Array doch eh nicht verändert wird.

Hätte ich sonst irgendwo ein Object erwartet, würde das mit dem String doch weiterhin klappen.

Object o = t'[0] macht doch keine Probleme? Oder ist es wegen der initialisierung? Denn dort möchte ich das Array vielleicht mit Objects füllen und könnte dies nicht mit T' erreichen?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Java ist / wird kostenpflichtig. Ein paar Fragen Java Basics - Anfänger-Themen 1
Azazel Ein paar Fragen zu Methodenaufrufen(java.awt) Java Basics - Anfänger-Themen 2
K Java Anfänger und paar Fragen=D Java Basics - Anfänger-Themen 7
0x7F800000 Ein paar noob-fragen zu java ME Java Basics - Anfänger-Themen 5
G Ein paar Anfänger Fragen zu StdDraw Java Basics - Anfänger-Themen 4
J Paar Fragen zu Exceptions Java Basics - Anfänger-Themen 16
C Umsteiger hat noch ein paar Fragen Java Basics - Anfänger-Themen 11
StrikeTom Ein paar(2) Fragen zu throws und try + catch Java Basics - Anfänger-Themen 6
T ein paar fragen Java Basics - Anfänger-Themen 10
Antoras Ein paar theoretische Fragen Java Basics - Anfänger-Themen 19
A Primzahlen: ein paar offene Fragen Java Basics - Anfänger-Themen 2
A Paar Fragen zu Applet u.a. Java Basics - Anfänger-Themen 2
G Threads brauche da gilfe für paar fragen Java Basics - Anfänger-Themen 5
S ein paar kleine Fragen Java Basics - Anfänger-Themen 4
N ein paar L&F Fragen Java Basics - Anfänger-Themen 7
S ein paar Fragen - mit KSKB Java Basics - Anfänger-Themen 16
P Erste Schritte Bitte ein paar Erklärungen zu meinem Code Java Basics - Anfänger-Themen 6
S Integer/Value-Paar in Prio-Queue ohne Comparator Java Basics - Anfänger-Themen 5
D Bild für ein paar Sekunden einblenden und wieder ausblenden Java Basics - Anfänger-Themen 1
M Paar Probleme mit 3 Klassen Java Basics - Anfänger-Themen 23
C Array - Ein paar Verständnisfragen Java Basics - Anfänger-Themen 9
K BufferedWriter schreibt die letzten paar Zeilen nicht Java Basics - Anfänger-Themen 5
I Ein paar Kleinigkeiten Java Basics - Anfänger-Themen 11
Luk10 Datentypen Werte-Paar Java Basics - Anfänger-Themen 4
B Paar kleine Grundsatzfragen zu Java Java Basics - Anfänger-Themen 5
Nicer ! Problem nach paar Bierchen erkannt aber nicht gebannt ! Java Basics - Anfänger-Themen 7
I Ein paar Syntaxfragen... Java Basics - Anfänger-Themen 3
D Arrays und paar Möglichkeiten mit denen Java Basics - Anfänger-Themen 3
G Brauche ein paar erklärungen zu Quelltext Java Basics - Anfänger-Themen 5
A paar bilder auf einmal Java Basics - Anfänger-Themen 3
R Strings und dazu ein paar methoden Java Basics - Anfänger-Themen 12
A taschenrechner mit radioButtons aber ein paar problemen Java Basics - Anfänger-Themen 5
V Könnt ihr mal über Paar antworten schauen(Hausaufgaben) Java Basics - Anfänger-Themen 7
G Hoffe jemand kann mir ein paar Tips geben:binärer Suchbaum Java Basics - Anfänger-Themen 3
R Noch ein paar Anfängerfragen. Java Basics - Anfänger-Themen 4
S Ein paar Anfängerfragen Java Basics - Anfänger-Themen 17
M Zeilenausgabe auf ein paar Zeichen begrenzen Java Basics - Anfänger-Themen 2
A Habt ihr ein paar ideen für Programme? Java Basics - Anfänger-Themen 8
G Doppelte (Paar) Werte in einem Vektor finden Java Basics - Anfänger-Themen 6
B Bräuchte ein paar Sachen für mein Clientprogramm! Java Basics - Anfänger-Themen 6
megachucky Suche ein paar gute Tutorials so wie dieses hier. Java Basics - Anfänger-Themen 4
P Bitte um ein paar Tipps! (Threads, Warten auf Ereignisse,.) Java Basics - Anfänger-Themen 2
G Ein paar Definitionsfragen Java Basics - Anfänger-Themen 4
B Paar richtige Anfängerfragen Java Basics - Anfänger-Themen 7
Zrebna Fragen zu einem Klassendiagramm Java Basics - Anfänger-Themen 8
H Fragen zu Wrapperklassen Java Basics - Anfänger-Themen 29
S Best Practice Fragen zu Projektstruktur einer Datenbank-Abfrage-App (MVC) Java Basics - Anfänger-Themen 13
A Bei VierGewinnt fragen ob man gegen CPU oder Menschen spielen will. Java Basics - Anfänger-Themen 7
A Bei VierGewinnt vorher fragen, ob man gegen den Computer spielen möchte oder gegeneinander. Java Basics - Anfänger-Themen 1
A Bei VierGewinnt fragen, ob man gegen den Computer spielen möchte oder gegeneinander Java Basics - Anfänger-Themen 1
sserio Wie kann man nach einer Klasse fragen? Java Basics - Anfänger-Themen 12
G Fragen zu Kompelierfehler in Aufgabe. Java Basics - Anfänger-Themen 25
E Bäume/ allgemeine Fragen Java Basics - Anfänger-Themen 21
O Falsche Antworten zu Fragen Java Basics - Anfänger-Themen 4
S Diverse Fragen vor Schulaufgabe ;) Java Basics - Anfänger-Themen 4
S Fragen zu Ausgabe double und float Java Basics - Anfänger-Themen 3
B fragen zu Aufbau eines UML-Klassendiagramm Java Basics - Anfänger-Themen 1
C 3 Fragen rund um Klassenattribute Java Basics - Anfänger-Themen 8
L Erste Schritte Log4J Fragen Java Basics - Anfänger-Themen 5
NeoLexx Fragen zu diversen Elementen der Javabibliothek Java Basics - Anfänger-Themen 5
D Budget Manager fragen zur Umsetzung Java Basics - Anfänger-Themen 9
N Fragen zur Datenspeicherung Java Basics - Anfänger-Themen 45
T Java Anfänger mit konkreten Fragen Java Basics - Anfänger-Themen 2
CT9288 Fragen zu Java Java Basics - Anfänger-Themen 16
W Fragen zu Generics Java Basics - Anfänger-Themen 14
T ObjectInput/OutputStream Fragen zur Funktionsweise Java Basics - Anfänger-Themen 3
J Fragen zu einer Methode Java Basics - Anfänger-Themen 3
J Fragen zum Code aus dem Buch "Schrödinger programmiert Java 2.te Ausgabe" Java Basics - Anfänger-Themen 6
Z Fragen zu Exception (Throws/throw) Java Basics - Anfänger-Themen 7
J Fragen zu Input/Output Java Basics - Anfänger-Themen 3
J Erste Schritte Oracle Tutorials zu Java 8 - Fragen dazu Java Basics - Anfänger-Themen 1
H Java Quereinsteiger Roadmap und Fragen Java Basics - Anfänger-Themen 29
H fragen Java Basics - Anfänger-Themen 15
M Samelsarium Grundlegender Fragen 2 Java Basics - Anfänger-Themen 9
M Sammelsarium an Grundlagen Grundlagen Fragen Java Basics - Anfänger-Themen 11
J Fragen zu synrchonized und kritischen Abschnitten Java Basics - Anfänger-Themen 5
S Fragen zu einem Rechentrainer Java Basics - Anfänger-Themen 2
B Java Vererbung Fragen (zu Code Beispiel) Java Basics - Anfänger-Themen 3
J Wo kann man Fragen zu ireport stellen. Java Basics - Anfänger-Themen 0
M Fragen zum Anlegen und Benutzen von Listen Java Basics - Anfänger-Themen 9
D Fragen zur Klassen Java Basics - Anfänger-Themen 4
Aprendiendo Zwei Fragen und ein geerbtes "protected"-Attribut Java Basics - Anfänger-Themen 2
J Interface Fragen bezüglich "Sauberkeit" von Code Java Basics - Anfänger-Themen 5
D Objekte-Fragen Java Basics - Anfänger-Themen 1
V Erste Schritte Habe Fragen zu der For und While Schleife als auch Inkrement und Dekrement Java Basics - Anfänger-Themen 4
D Anfänger-Fragen(Parameter einer Methode) Java Basics - Anfänger-Themen 7
K Zwei Fragen zu Graphics/Graphics2D Java Basics - Anfänger-Themen 5
R Fragen über den Konstruktor Java Basics - Anfänger-Themen 0
S Erste Schritte Fragen zur For-Schleife Java Basics - Anfänger-Themen 9
C Interface Fragen zum Interface Java Basics - Anfänger-Themen 7
GreenTeaYT Exception und zur OOP fragen? Java Basics - Anfänger-Themen 3
C Fragen zum Spigot Plugin (1.8) Java Basics - Anfänger-Themen 6
J Fragen zu Exceptions Java Basics - Anfänger-Themen 24
N Quiz- Fragen zufällig anzeigen lassen Java Basics - Anfänger-Themen 7
J Verschieden Fragen über Java Programmierung Java Basics - Anfänger-Themen 3
L Viele Fragen zu den Grundlagen Java Basics - Anfänger-Themen 5
B Fragen zu ZIP-File Java Basics - Anfänger-Themen 9
L fragen zu arrays Java Basics - Anfänger-Themen 8
L Fragen zu selbstgeschriebenem Programm Java Basics - Anfänger-Themen 5
M Fragen zum Auslesen von HTML Seiten Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben