# Javaklassen und vererbung



## Trjavnamen (25. Okt 2017)

Nun beim ersten Lesen über den Umgang mit Klassen und Vererbung werden Beispiele gezeigt mit Warenbestand Schuhbestand Lampenbestand usw. Will man mir erklären das man unter Java ein Warenbestand mit 100 000 Artikeln durch 100000 einzel programmierte Klassen darstellt? Und bei 100000 neuen Artikeln mit neuer Umsatzsteuer 200000 Klassen darstellt? Ist es dann nicht besser ein 20iger Int array und ein 20iger String array zu programmieren was an Buchstaben und Zahlen weniger Platz verbraucht als 200000 einzelne Klassen ?


----------



## Trjavnamen (25. Okt 2017)

Vererbung bei 1000 Warengruppen und 1000 Warenlieferantenkonten sind eher für diese Vererbungsgeschichte geeignet  wobei unter zehn Hauptwarengruppen 100 Untergruppen mit verknüpfung von 100 Lieferanten mit 10 Rabattstufen/Kostenstufen sinnvoller ist.


----------



## JCODA (26. Okt 2017)

Das war wohl einfach nur ein Beispiel. Solche Datenmengen speichert man in einer Datenbank. Hierzu könnte man dann allgemein eine "Produkt" Klasse schreiben, welche für einen Großteil genutzt werden kann. 

Dieses Beispiel könnte man auch gut als Beispiel für Generics benutzen, hier wäre es möglich ein Lager<Schuhe> für ein Schuhlager sowie ein Lager<Lampen> für ein Lampenlager zu erstellen, obwohl es nur eine allgemeine Klasse "Lager<T>" gibt. (Wobei man hierfür wiederum die Produkte als eigene Klassen benötigen würde, aber: es ist ja nur ein Beispiel.)


----------



## marcobehler (26. Okt 2017)

@Trjavnamen 

Ja, das Problem ist hier wirklich, es ist nur ein Beispiel um dir das Konzept zu vermitteln. In der "echten" Welt, hast du eine Datenbank und da sieht das ganze ganz anders aus.

Darf man Fragen was genau du versuchst zu lernen, verstehen?


----------



## JStein52 (26. Okt 2017)

Trjavnamen hat gesagt.:


> Will man mir erklären das man unter Java ein Warenbestand mit 100 000 Artikeln durch 100000 einzel programmierte Klassen darstellt?


Du musst dir als erstes mal den Unterschied zwischen Klassen und Instanzen (Objekten) klarmachen. Wie du schon sagst 100000 Artikel im Warenbestand. Das sind erstmal nur 100000 Instanzen der Klasse Artikel. Und ob die in einer Datenbank oder sonstwo stehen ist für diesen Aspekt egal. Und es gibt da keine "echte" und "unechte" Welt.


----------



## mrBrown (26. Okt 2017)

JStein52 hat gesagt.:


> Du musst dir als erstes mal den Unterschied zwischen Klassen und Instanzen (Objekten) klarmachen. Wie du schon sagst 100000 Artikel im Warenbestand. Das sind erstmal nur 100000 Instanzen der Klasse Artikel.


Nene, in dem Beispiel gibt es eine Klasse pro Artikel - wobei Artikel da die Art des Produkts meint (Schuhe, Lampe, ...).


----------



## Dukel (26. Okt 2017)

Unterschiedliche Klassen braucht man, wenn man unterschiedliche Variablen und Methoden hat. Wenn alle Waren die selben Eigenschaften (z.B. Name, Hersteller, Preis, Typ) braucht man keine unterschiedlichen Klassen.


----------



## JStein52 (26. Okt 2017)

Hääh, seid ihr alle auf Drogen ? Oder ist es ein Beispiel dafür wie man es nicht machen sollte ?


----------



## JStein52 (26. Okt 2017)

Dukel hat gesagt.:


> Wenn alle Waren die selben Eigenschaften (z.B. Name, Hersteller, Preis, Typ) braucht man keine unterschiedlichen Klassen.


eben !


----------



## mrBrown (26. Okt 2017)

JStein52 hat gesagt.:


> Hääh, seid ihr alle auf Drogen ? Oder ist es ein Beispiel dafür wie man es nicht machen sollte ?


Ja, das ist ein (sehr) schlechtes Beispiel - das ist doch eben der Grund für diesen Thread.


----------



## JStein52 (26. Okt 2017)

mrBrown hat gesagt.:


> Ja, das ist ein schlechtes Beispiel


Ich kann mir aber beim besten Willen nicht vorstellen dass das in einem Java-Buch so drin steht:  100000 Artikel ---> man braucht 100000 Klassen um diese Artikel zu verwalten.


----------



## mrBrown (26. Okt 2017)

JStein52 hat gesagt.:


> Ich kann mir aber beim besten Willen nicht vorstellen dass das in einem Java-Buch so drin steht:  100000 Artikel ---> man braucht 100000 Klassen um diese Artikel zu verwalten.


Nein, aber das übliche Beispiel à la `Artikel`, `Schuh extends Artikel`, `Lampe extends Artikel`. Skaliert man das, landet man bei 100_000 Artikel=100_000 Klassen


----------



## mrBrown (26. Okt 2017)

JStein52 hat gesagt.:


> Ich kann mir aber beim besten Willen nicht vorstellen dass das in einem Java-Buch so drin steht:  100000 Artikel ---> man braucht 100000 Klassen um diese Artikel zu verwalten.


Nein, aber das übliche Beispiel à la `Artikel`, `Schuh extends Artikel`, `Lampe extends Artikel`. Skaliert man das, landet man bei 100_000 Artikel=100_000 Klassen


----------



## Trjavnamen (26. Okt 2017)

Ich will natürlich alles verstehen was man zum programmieren Benötigt. Das ist aber in meinen Kopf leider schwer hineinzubekommen. Ich nehme Java, weil es offensichtlich ist das ich mein Programm dann auch noch nächstes Jahr läuft und meine Bemühungen zu lernen unnütz wird. Es ist die suche nach den richtigen Schaltkomponenten. wenn aber Schaltkomponenten nicht mehr zu haben sind, verfällt das Wissen. Die Behauptung der Abwärtskompatbilität ist doch unter uns gesagt eine Lüge. siehe microsoft Office professionell 97. Wenn ein Tutorial mit java 1.6 gezeigt wird kann es passieren das in Java 1.7 nix funktioniert.


----------



## JStein52 (26. Okt 2017)

Trjavnamen hat gesagt.:


> Wenn ein Tutorial mit java 1.6 gezeigt wird kann es passieren das in Java 1.7 nix funktioniert.


Häääh, was hat denn nun dieses Klassen/Vererbungsthema mit den Java-Versionen zu tun ?


Trjavnamen hat gesagt.:


> Die Behauptung der Abwärtskompatbilität ist doch unter uns gesagt eine Lüge.


Häääh, wie kommst du denn darauf ?


----------



## JStein52 (26. Okt 2017)

Trjavnamen hat gesagt.:


> Wenn ein Tutorial mit java 1.6 gezeigt wird kann es passieren das in Java 1.7 nix funktioniert.


Das kenne ich höchstens für Fälle wo interne, nicht dokumentierte Schnittstellen verwendet wurden und dann ist das ein Problem des Tutorials und nicht der Java-Version. Beim Schwimmen kann auch die Badehose nix dafür wenn der Schwimmer ersäuft.


----------



## Trjavnamen (26. Okt 2017)

jaja die Klassen sind eigendlich die Schalter und aber es gibt unzählige Schalter Beispiel: Eine ware wird von unterschiedlichen Herstellern bezogen geht man nun nach den EAN Nummern dann haben wir schon mal eine große menge jeder Hersteller benutzt verschiedene Materialien und Farben die alle einen Preisunterschied macht und jedes Jahr ändern sich auf diesem Grund der Preis. Dann sagt das Finanzamt jetzt wird die Umsatzsteuer erhöht also müssen alle Verkäufe zum Stichtag mit einer höheren MWST. erhöht werden. Die Buchhaltung spiegelt die Gesetze . Ware muß entsprechend dem Lieferantenkonten und beim Verkauf häufig dem Forderungskonten zugeordnet werden. Abschreibungen sind grundsätzlich unterschiedlich . Wann etwas steuerpflichtig wird und wann nicht aberdoch wenn..
Nun das ist also genauso Kompliziert wie das erlernen von Java. ...Ich gehe also grunsätzlich mal davon aus das der Uhrsprung aller Informationen in mehrere Datenbank geschrieben werden muß. Grudsätzlich das Datum und eine Eindeutige Warennummer als index. Datum und Herstellernummer. Datum und Kontennummmer. Und die Eingabemasken die Klassen darstellen mehrere Masken noch mehr Klassen und Untermasken nochmehr Klassen.


----------



## JStein52 (26. Okt 2017)

All das was du da sagst wird man sich natürlich im Design einer Bestandsverwaltung/Buchhaltung etc. überlegen und die Klassen so entwerfen dass man all das damit abbilden kann. Aber bei nichts davon sehe ich einen Grund das auf Vererbung abzuwälzen und zu sagen man braucht für jeden Artikel eine eigene Klasse. Dann macht man halt in der Artikelklasse ein Attribut "hersteller", "material", "farbe", "lieferant", "umsatzsteuermodell", "einkaufspreis", "verkaufspreis" und ... und ... und. Aber es bleibt trotzdem eine einzige Artikelklasse.


----------



## Trjavnamen (26. Okt 2017)

Ok dann wollen wir das mal so Formulieren. Wenn ein Tutorial nicht funktioniert liegt es vieleicht daran das der Moderator eine Klasse erstellt hat die Aufgrund eines Bestimmten Ausdrucks mitcompiliert wird die aus einer früheren Version stammt oder nur auf seinem System existieren. Oder wie das durcharbeiten der Oracle Tutorials bzw. Codebeispiele  die zu keinem Ergebnis führen wenn man nicht explizit den Text durcharbeitet und nicht versteht wann und wo etwas als neue Klasse geschrieben wird und wann ein neues Projekt eröffnet wird und was in diesem Projekt an Unterklassen existieren muß. Somit ein codeschnipsel ins nichts führt oder in Error Anzeigen die für den lernenden nicht nachvollziehbar sind.


----------



## Trjavnamen (26. Okt 2017)

Oder wie versteckte Startparameter in einer Main - Klasse die in Forumsanfragen gerne ausgelassen werden und der ,der das Programm nachvollziehen will zu keinem Ergebnis kommen lässt.


----------



## Trjavnamen (26. Okt 2017)

eine CSV oder SQL oder andere Datenbank vorraussetzt mit bestimmten Feldernamen die vorher erstellt werden müssen und ins Verzeichnis gelegt und und...


----------



## Dukel (26. Okt 2017)

Du solltest Aufpassen, dass du hier nicht unterschiedliche Themen vermischt. Klassen und Vererbung ist ein Konstrukt aus der Objekt Orientierten Programmierung. Wann und wo man das einsetzt ist dem Programmierer überlassen. Eine Warenwirtschaft und Datenhaltung in einer DB sind die Implemtierungen einzelner Anforderungen.

Wenn du am Anfang das Konzept der Klassen lernst machst du dies mit einem allgemeinen Beispiel. Ob du dies dann später in einer Applikation brauchst ist eine andere Frage.

Wofür machst du das ganze. Bist du Am Anfang beim lernen? Willst du etwas neues lernen?


----------



## JStein52 (26. Okt 2017)

Deine Beispiele sind ja etwas weit her geholt. Wenn du irgendein Codeschnipsel bei dir ausführen willst solltest du dir natürlich vorher schon mal anschauen was es denn nun tut, was für Vorraussetzungen erfüllt sein müssen etc.


----------



## mrBrown (26. Okt 2017)

Trjavnamen hat gesagt.:


> jaja die Klassen sind eigendlich die Schalter und aber es gibt unzählige Schalter


Bin ich der einzige der keine Ahnung hat, was du eigentlich meinst?


----------



## SchwarzWeiß (26. Okt 2017)

mrBrown hat gesagt.:


> Bin ich der einzige der keine Ahnung hat, was du eigentlich meinst?


Nein, der ganze Thread ist für mich ein einziges Mysterium.


----------



## Trjavnamen (26. Okt 2017)

Ich gestehe! Ab einen Punkt komme ich nicht weiter!! Ich versuche dann Tips und vorschläge aus verschiedenen Quellen für mein Projekt zu nutzen aber irgendwie will das nicht so. Vieleicht liegt es wirklich daran das Codeschnipsel immer etwas Vorraussetzt was in meinem Projekt nicht vorhanden ist. Sorry für das Durcheinander!!


----------



## Trjavnamen (26. Okt 2017)

Ich bin am Anfang


----------



## mrBrown (26. Okt 2017)

Trjavnamen hat gesagt.:


> Ich gestehe! Ab einen Punkt komme ich nicht weiter!! Ich versuche dann Tips und vorschläge aus verschiedenen Quellen für mein Projekt zu nutzen aber irgendwie will das nicht so. Vieleicht liegt es wirklich daran das Codeschnipsel immer etwas Vorraussetzt was in meinem Projekt nicht vorhanden ist. Sorry für das Durcheinander!!


Wie wäre es, wenn du einfach mal fragst?


----------



## Trjavnamen (28. Okt 2017)

Wenn ich ein neues Javafxprojekt anlege zum probieren und code aus einem früheren Projekt (welches funktioniert)vom alten Fenster ins andere Fenster copiere. Müssen dann alle Button Namen gändert werden (Vererbung?)als auch alle variabelnamen usw.


----------



## mrBrown (28. Okt 2017)

Vielleicht.
Die Benennung muss halt gültig sein, ob du die dafür umbenennen musst, kann man so nicht sagen


----------



## Trjavnamen (28. Okt 2017)

wenn ich ein "MainWindow.fxml" im projekt "FirstProjekt" habe und das selbe MainWindow.fxml im Projekt "SekondProjekt" anlege und von Fenster zu Fenster Inhalt copiere. Dann in Main alles kopiere außer Package und den Classennamen  muß ich dann alles umbenennen?


----------



## mrBrown (28. Okt 2017)

Probier es doch mal aus?


----------



## Trjavnamen (28. Okt 2017)

Sorry aber hatte ich versucht und kam nicht weiter.Plötzlich funktionierte dann aber FirstJavafx und SekondJavaFX nicht. Scenebuilder wollte  fxml Dokument nicht öffnen was es gestern noch tat. Das umbenennen mit refragtor rename auf application2 brachte nichts. Jetzt gerade stelle ich wieder fest das wieder einmal im fxml zackig unterstrichen war. per hand gelöscht und gesaved. Scenebuilder kann wieder fxml Dokument laden. Verknüpfung mit Controller funktioniert. Und berichtigung der ID und ONAktionsfelder überprüft verglichen (Ps Scenebuilder hat unter menu View ein Viev show sampel controller skeleton in dem alle eingerichteten Aktions und FXML Komponenten aufführt und mit copy in das Fenster in eclipse eingefügt werden kann) und übertragen. Nun funktioniert es.


----------

