Coruscant programmiert und failt und failt und scheitert

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Coruscant programmiert und failt und failt und scheitert

      So hallo in die Runde,

      ich habe mitlerweile den Part Softwareengeniering mit Java abgeschlossen, aber mehr schlecht als recht. Im Moment habe ich etwas Zeit und vor diese Lücke zu schließen. Ich habe 4 große "Komplexe" die mir Probleme machen.

      1. Sinn der Getter und Setter und Anwendung / Ersatzmöglichkeiten.

      2. Mehrere Klassen in einem Programm, dabei Variablen "verschieben" / übergeben. Beispiel: in Klasse Input werden Werte eingegeben, diese werden an Klasse Rechnen verarbeitet und an Klasse Output übergeben und dort angezeigt.
      Bisher habe ich so etwas immer in einer Klasse erledigt und mehrere Konstruktoren genutzt.

      3. JFrames Aufteilung. Ist es möglich mehrere Layouts ineinander zu verschachteln? Also z.b. in einem Feld des Borderlayouts (z.B. North) ein Gridlayout zu setzen o.Ä.? Wie erfolgt die Ansteuerung?

      4. Die grafische Darstellung von Linien oder Punkten in so einem JFrame. Hier wurde uns ein Quellcode vor die Füße geworfen, aber dessen Inhalt ist nur schwierig nachvollziehbar. (Bei Bedarf Postbar)

      Ich persöhnlich würde mich freuen, wenn sich jemand finden würde, mit dessen Hilfe ich diese 4 Schwerpunkte in einem Projekt / in mehreren Teilprojekten abarbeiten kann. Meine Arbeitsumgebung ist Eclipse falls das wichtig sein sollte.
      Prinzipiell ist noch zu sagen, das ich relativ gut "klassisch" Programmieren kann (Rechenprogramme auf dem Casio schreiben np), jedoch die Objektorientierte Sprache bisher nicht so meins ist.

      Thx im vorauss.

      mfg
      Coruscant
      Kommentar zur Krise xyz:
      Ich hatte mich schon gefragt welche nächste Sau durch's Dorf getrieben
      wird. Was wohl als nächstes kommt. Klimawandel oder vielleicht doch
      wieder Terrorismus ...

      Das der Mond auf die Erde stützt, DASS wäre mal was wirlich neues und
      sicher auch extrem verheerend. Alternativ tut es auch ein großer
      Meteorit.

      Ich kann es mir in Gedanken schon vorstellen. An Schweinegrippe
      erkrankt und vom Meteoriten erschlagen als der Kofferbomber gerade
      einen Block entfernt war ...

      Ja, das sind wahrhaft düstere Zeiten. Ich mach erst mal ein Bier auf ... Das ewige Leben wird sowieso keiner haben.

      Hier gehts lang zu Rätseln der gehobenen Schwierigkeitsklasse!
    • Durch Getter und Setter kann der Zugriff auf die Variablen beschränkt werden und auch noch eine Überprüfung etc. durchgeführt werden.
      So kann z.B. verhindert werden das eine Variable einen ungültigen Wert erhält.

      Am Anfang ist es noch nicht unbedingt nötig solche kleinen Aufgaben auf mehrer Klassen aufzuteilen ist aber zu Übungszwecken nicht schlecht.
      Bei Größeren Projekten teilst du die Klassen auf mehrere Files und Klassen auf da es in einem einfach zu unübersichtlich wird.

      Zu JFrame kann ich leider nichts sagen, kenn ich nicht.
    • Hab am Mittwoch Programmieren Vorlesung und sind gerade bei JFrame und Layout-Managern. Haben dort nichts verschachteltes gemacht werd aber mal nachfragen ob das geht ;-)
      ALTER DER IGEL WOHNT JETZT HIER!

      Was du bist hängt von drei Faktoren ab:
      Was du geerbt hast, was deine Umgebung aus dir machte
      und was du in freier Wahl aus deiner Umgebung und deinem Erbe gemacht hast.
    • Coruscant schrieb:

      1. Sinn der Getter und Setter und Anwendung / Ersatzmöglichkeiten.
      getter/setter benutzt man halt an stelle von direktem zugriff auf die felder eines objekts. vor allem in settern kannst du damit direkt verhindern, dass unzulässige werte hineingeschrieben werden, die für fehler sorgen könnten. dann kriegst du direkt eine klare "setter mit ungültigem wert aufgerufen" fehlermeldung wenn sowas passiert, anstatt dass ein ungültiger wert geschrieben wird und erst viel später für schwer nachvollziehbare fehler sorgt.
    • Hey,

      ich versuche mal, deine Punkte etwas zu erklären

      1. Sinn der Getter und Setter und Anwendung / Ersatzmöglichkeiten.
      Getter und Setter werden dazu verwendet um Werte aus einer eigens geschriebenen Klasse zu holen, bzw. darin zu speichern.
      Beispiel:
      Es gibt ein Kartenspiel. Ein Spiel besteht aus mehreren Karten. Jede Karte hat einen Namen und einen Typ. Mithilfe der getter und setter holst du bzw. setzt du den Typ / Namen einer Karte.


      2. Mehrere Klassen in einem Programm, dabei Variablen "verschieben" / übergeben. Beispiel: in Klasse Input werden Werte eingegeben, diese werden an Klasse Rechnen verarbeitet und an Klasse Output übergeben und dort angezeigt.
      Bisher habe ich so etwas immer in einer Klasse erledigt und mehrere Konstruktoren genutzt.
      Java benutzt das MVC Prinzip. Deshalb sollten diese Dinge in einem größeren Projekt beachtet werden.
      de.wikipedia.org/wiki/Model_View_Controller




      3. JFrames Aufteilung. Ist es möglich mehrere Layouts ineinander zu verschachteln? Also z.b. in einem Feld des Borderlayouts (z.B. North) ein Gridlayout zu setzen o.Ä.? Wie erfolgt die Ansteuerung?
      Ja das ist natürlich möglich. In Swing kannst du für jeden Bereich ein Layout verwendet und in diesem Layout noch Unterlayouts definieren.

      4. Die grafische Darstellung von Linien oder Punkten in so einem JFrame. Hier wurde uns ein Quellcode vor die Füße geworfen, aber dessen Inhalt ist nur schwierig nachvollziehbar. (Bei Bedarf Postbar)

      Um das zu machen, musst du einfach die paint Methode überlagern.
      Hier ein Beispiel:
      public class PaintClass extends JFrame {
      public PaintClass(){
      super();
      }

      public void paint(Graphics g){
      g.drawLine(50,50,200,200);
      }

      public static void main(String[] args){
      PaintClass pc = new PaintClass();
      pc.setSize(400,400);
      pc.setVisible(true);
      }



      Hoffe meine Ausführungen haben dir etwas geholfen.
      }
      :kunkka4: "I WIN""
    • 1: getter/setter dienen halt der modularisierung bzw. Kapselung , sollte man sich schon angewöhnen, obwohl sie bei kleinen Uni/Schul Aufgaben überflüssig erscheinen mögen. blaobject.setblaVar(5) ist halt in eigentlich jedem Fall blaobject.blaVar = 5 vorzuziehen. blaVar sollte meist auch gar nicht public sein.

      2: es werden ja keine Klassen sondern Objekte(instanzen der jeweiligen Klassen) genutzt. Bei so kleinen Popelaufgaben wie ich sie gerade bei dir vermute mag das tatsächlich recht sinnfrei erscheinen wenn es mit einem prozeduralem Ansatz eigentlich in weniger Zeilen zu erledigen wäre. Immer daran denken dass durch stärkere Modularisierung deutlich mehr Übersichtlichkeit/Austauschbarkeit/einfachere Überprüfung erreicht werden kann die ab einem bestimmten Programmumfang wichtig wird. Im übrigen kann man ja durch eine sinnvolle Vererbungsstruktur Codeverdopplung vermeiden.

      3: docs.oracle.com/javase/6/docs/api/javax/swing/JFrame.html; ne ernsthaft, 90% von Java programmieren können besteht dadrin die benötigten APIs zu lesen/verstehen :>, hab grad keine Zeit mich in JFrame einzulesen

      4: poste ruhig

      In welchem Umfeld lernst/programmierst du Java? Die Nutzung der Sprache macht ohne eine gründliche Einführung in die Prinzipien der OOP imho wenig Sinn. Oh fuck, ich geb meinem Prof bei dem ich in 2 mündlichen Nachprüfungen war weil er so nervige ekelklausuren stellt recht :love:
    • zu 2 noch:
      so ne aufteilung ist halt auch ganz praktisch wenn du mal im team arbeitest. da pfuscht ihr nicht alle im selben quellcode rum sondern sondiert das bissle ab. zusammenführen ist dann ja kein act mehr :)
    • Danke erstmal für die Tips und Anmerkungen.
      Leider kommt es Erstens anders und Zweitens als man denkt. Soll heißen ich habe nun doch eher keine Zeit.

      Von daher werde ich die Treadnecromancer-Karte erst in ein paar Monaten spielen und dann meine weiteren Fragen stellen. Bis dahin.

      mfg
      Coruscant
      Kommentar zur Krise xyz:
      Ich hatte mich schon gefragt welche nächste Sau durch's Dorf getrieben
      wird. Was wohl als nächstes kommt. Klimawandel oder vielleicht doch
      wieder Terrorismus ...

      Das der Mond auf die Erde stützt, DASS wäre mal was wirlich neues und
      sicher auch extrem verheerend. Alternativ tut es auch ein großer
      Meteorit.

      Ich kann es mir in Gedanken schon vorstellen. An Schweinegrippe
      erkrankt und vom Meteoriten erschlagen als der Kofferbomber gerade
      einen Block entfernt war ...

      Ja, das sind wahrhaft düstere Zeiten. Ich mach erst mal ein Bier auf ... Das ewige Leben wird sowieso keiner haben.

      Hier gehts lang zu Rätseln der gehobenen Schwierigkeitsklasse!
    • OK Zeit für die angekündigkte Treadnecromancer-Karte

      Es ist etwas ganz simples, ich will nen Kartenserver mit openlayers bauen. Habe also ne datei webclient.html angelegt und ein bissl mit html und javascript vorbereitet.

      Nun muss ich in dem Div-Container der den Kartenbroweser enthalten soll per Javascript ansteuern. Auch kein Problem. Aber sobald ich die von Openlayers gesponsorte Datei als relativen Pfad einbinde, ignoriert er dieses Javascript völlig. Entferne ich den Pfad, durchläuft er diesen Part.

      Die OpenLayers.js liegt in der selben Verzeichnisebene wie die webclient.html

      Also wo das Problem? Habe es auch mit absoluten Pfaden versucht, immer noch fail. Unten der Code und ich wette es ist irgendnen Kleinkram, aber danke im voraus.



      mfg
      Coruscant

      HTML-Quellcode

      1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
      2. <html>
      3. <head>
      4. <title>New Document</title>
      5. <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
      6. <!-- <link href="I:/2.Semester/GIST/35384/wEBCLIENT/style.css" type="text/css" rel="stylesheet"> -->
      7. <link rel="stylesheet" href="http://openlayers.org/en/v3.13.0/css/ol.css" type="text/css">
      8. <!--Html-Fenster-Aufteilung -->
      9. <script type="text/javascript" >
      10. /* <![CDATA[ */
      11. function size() {
      12. var hoch= window.innerHeight;
      13. hoch2= hoch-250;
      14. document.getElementById('inhalt').style.height = hoch2 + "px";
      15. }
      16. function test(){
      17. document.getElementById('inhalt').innerHTML ='test';
      18. }
      19. </script>
      20. <!-- Entfernt man hier das "src-Feld" wird der Testtext ausgegegeben -->
      21. <script type="text/javascript" src="OpenLayers.js" >
      22. /* <![CDATA[ */
      23. <!-- //-->
      24. function kartenaufbau(){
      25. /* var karte, osmlayer, projWGS84, projMerca;
      26. projWGS84 = new OpenLayers.Projection("EPSG:4326");
      27. projMerca = new OpenLayers.Projection("EPSG:3857");
      28. karte = new OpenLayers.Map("inhalt", {
      29. numZoomLevels: 18
      30. }
      31. ); //kartenfeld erzeugen
      32. osmlayer = new OpenLayers.Layer.OSM("OpenStreetMap"); //OSM-Kartenlayer laden
      33. karte.addLayer(osmlayer); // OSM kartenlayer ins kartenfeld laden
      34. var pointMerca = new OpenLayers.LonLat(13.74 ,51.05).transform(projWGS84, projMerca);
      35. karte.setCenter(pointMerca, 10); */
      36. //---------------------
      37. document.getElementById('inhalt').innerHTML ='test222222';
      38. }
      39. </script>
      40. </head>
      41. <body onload="size();test();kartenaufbau();">
      42. <div id="wrapper">
      43. <div id="kopfzeie" style="width=100%;height=150px; background:#CCFFAA; margin:20px; padding:10px">
      44. <p>Web Map Client</p>
      45. </div>
      46. <div id="inhalt" style="width=100%; margin:20px; padding:10px">
      47. </div>
      48. <div id="fusszeile" style="width=100%;height=100px; background:#CCFFAA; margin:20px; padding:10px">
      49. <p></p>
      50. </div>
      51. </div>
      52. </body>
      53. </html>
      Alles anzeigen
      Kommentar zur Krise xyz:
      Ich hatte mich schon gefragt welche nächste Sau durch's Dorf getrieben
      wird. Was wohl als nächstes kommt. Klimawandel oder vielleicht doch
      wieder Terrorismus ...

      Das der Mond auf die Erde stützt, DASS wäre mal was wirlich neues und
      sicher auch extrem verheerend. Alternativ tut es auch ein großer
      Meteorit.

      Ich kann es mir in Gedanken schon vorstellen. An Schweinegrippe
      erkrankt und vom Meteoriten erschlagen als der Kofferbomber gerade
      einen Block entfernt war ...

      Ja, das sind wahrhaft düstere Zeiten. Ich mach erst mal ein Bier auf ... Das ewige Leben wird sowieso keiner haben.

      Hier gehts lang zu Rätseln der gehobenen Schwierigkeitsklasse!
    • du kannst glaub kaum mit dem script tag erst eine externe datei ansprechen und dann innerhalb des tags noch code hinzufügen. hab ich zumindest noch nie gesehen und kann ich mir tbh nicht vorstellen, wäre bescheuert.
      in der mdn doku sagen sie

      MDN schrieb:

      src
      This attribute specifies the URI of an external script; this can be used as an alternative to embedding a script directly within a document. If a script element has a src attribute specified, it should not have a script embedded inside its tags.
      should bedeutet meistens "keine garantie, dass das funktioniert". denke mal das ist dein problem.
      probier mal

      JavaScript-Quellcode

      1. /* <![CDATA[ */
      2. <!-- //-->
      3. function kartenaufbau(){
      4. /* var karte, osmlayer, projWGS84, projMerca;
      5. projWGS84 = new OpenLayers.Projection("EPSG:4326");
      6. projMerca = new OpenLayers.Projection("EPSG:3857");
      7. karte = new OpenLayers.Map("inhalt", {
      8. numZoomLevels: 18
      9. }
      10. ); //kartenfeld erzeugen
      11. osmlayer = new OpenLayers.Layer.OSM("OpenStreetMap"); //OSM-Kartenlayer laden
      12. karte.addLayer(osmlayer); // OSM kartenlayer ins kartenfeld laden
      13. var pointMerca = new OpenLayers.LonLat(13.74 ,51.05).transform(projWGS84, projMerca);
      14. karte.setCenter(pointMerca, 10); */
      15. //---------------------
      16. document.getElementById('inhalt').innerHTML ='test222222';
      17. }
      Alles anzeigen
      in nen eigenen <script> tag zu packen

      und was hat das ganze noch mal mit java zu tun? :D
    • Hi Luke, danke für die Antwort - hat geklappt.

      Falls es jemand gibt der so etwas mal machen muss hier noch ein Tip: die Funktion Kartenaufbau als externe JS Datei dazuholen, denn obwohl der Quellcode identisch ist, zeigt es nur dann die Karte an.
      Oder anders gesagt, alles was nicht mit direkter HTML Veränderung steht (Rechungen, Karten, Mediaplayer, DBs,...) auslagern oder ewig rumärgen (wie ich)

      @Luke: ich weiß ja das Java und Js nur das java gemeinsam haben, deswegen muss ich mal sehen wie man den Treadtitel ändert^^

      mfg
      Coruscant
      Kommentar zur Krise xyz:
      Ich hatte mich schon gefragt welche nächste Sau durch's Dorf getrieben
      wird. Was wohl als nächstes kommt. Klimawandel oder vielleicht doch
      wieder Terrorismus ...

      Das der Mond auf die Erde stützt, DASS wäre mal was wirlich neues und
      sicher auch extrem verheerend. Alternativ tut es auch ein großer
      Meteorit.

      Ich kann es mir in Gedanken schon vorstellen. An Schweinegrippe
      erkrankt und vom Meteoriten erschlagen als der Kofferbomber gerade
      einen Block entfernt war ...

      Ja, das sind wahrhaft düstere Zeiten. Ich mach erst mal ein Bier auf ... Das ewige Leben wird sowieso keiner haben.

      Hier gehts lang zu Rätseln der gehobenen Schwierigkeitsklasse!