Java als Ergänzung zu C++?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Java als Ergänzung zu C++?

    Gute Nacht Leute,

    Ich bin momentan beim lernen von C++ und habe schon einen großen Teil der Grundlagen gelernt.Allerdings stoße ich immerwieder auf kleine und große Probleme und versteh das ein oder andere beim besten Willen nicht. (C++ ist ja auch nicht die einfachste Sprache)

    Nun habe ich schon des öfteren gehört, dass Java gewisse Ähnlichkeiten zu C++ haben soll, was den Code betrifft.Deswegen habe ich mir überlegt nebenbei/vorher ein bisschen Java zu lernen(ist ja keine schlechte Sprache für die ein oder andere Webapplikation...Wäre ein gute Ergänzung zu meinem PHP-Wissen ).Ich wollte fragen, ob das Sinn machen würde.Insbesondere bei Klassen tue ich mich noch schwer und das soll ja eine Stärke von Java sein.

    Also: Kann man mit Java auch was für C++ lernen, oder ist der Lerneffekt eher gering, d.h. eher erstmal bei C++ bleiben (weil das ja mein Hauptziel ist)?

    MfG,
    Sven

  • #2
    Hallo,
    Java hat wirklich eine ähnlichkeit mit C++
    Allerdings muss man auch sagen das bei Java die Mehrfachvererbung nicht geht. Der Syntax ist ebenfalls anderster. Desweiteren ist Java eine rein Objektorientierte Programmiersprache. Ich persönlich möchte in Zukunft mich auf C++ und Java spezialisieren.
    Hier mal ein kleines Beispiel für ein JavaProgramm:
    Code:
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.io.*;
    
    public class SpruecheSpeichern extends JFrame implements ActionListener
    {
    	// Variable deklarieren
    	JButton btnNeuerSpruch;
    	JButton btnNeuEinlesen;
    	JButton btnEnde;
    	JLabel lblText;
    	JTextArea txtdisplay;
    	
    	SpruecheSpeichern()
    	{
    		super("Sprüche");
    		setBounds(100,100,600,400);
    		
    		// Listener hinzufügen
    		setDefaultCloseOperation(EXIT_ON_CLOSE);
    		
    		// Neues Panel erstellen (MainPanel)
    		JPanel MainPanel = new JPanel();
    		MainPanel.setLayout(new BorderLayout());
    		
    		// Label erstellen + zentrieren
    		lblText = new JLabel("Der Volksmund spricht",JLabel.CENTER);
    		
    		// TextArea erstellen
    		txtdisplay = new JTextArea(15,43);
    		
    		// Neuen Button erstellen
    		btnEnde = new JButton("Ende");
    		
    		// Neues SubPanel erstellen + Layout setzen
    		JPanel ButtonPanel = new JPanel();
    		ButtonPanel.setLayout(new GridLayout(2,1));
    		
    		// Neuen Button erstellen
    		btnNeuerSpruch = new JButton("Neuer Spruch");
    		btnNeuEinlesen = new JButton("Neu Einlesen");
    		
    		// Buttons dem SubPanel zuweisen
    		ButtonPanel.add(btnNeuerSpruch);
    		ButtonPanel.add(btnNeuEinlesen);	
    				
    		// Textfield 60
    		// Listener der Buttons
    		btnNeuerSpruch.addActionListener(this);
    		btnNeuEinlesen.addActionListener(this);
    		btnEnde.addActionListener(this);
    		
    		// Elemente dem MainPanel hinzufügen
    		MainPanel.add(lblText,BorderLayout.NORTH);
    		MainPanel.add(ButtonPanel,BorderLayout.EAST);
    		MainPanel.add(txtdisplay,BorderLayout.WEST);
    		MainPanel.add(btnEnde,BorderLayout.SOUTH);		
    		
    		// Aktuelles Panel setzen
    		setContentPane(MainPanel);
    		
    		ReadFile();	// Datei einlesen
    		
    		setVisible(true);	// Frame anzeigen
    	}
    	
    	// Funktionen für die Button
    	public void actionPerformed(ActionEvent e)
    	{
    		if(e.getSource() == btnEnde)
    			System.exit(0);		// Programm beenden
    		if(e.getSource() == btnNeuerSpruch)
    			new NeuerSpruch();	// Neues Fenster aufrufen
    		if(e.getSource() == btnNeuEinlesen)
    		{	
    			ReadFile();
    		}
    	}
    	
    	public void ReadFile()
    	{
    		// Variable deklarieren
    		String Zeile;
    		
    		try
    		{
    			txtdisplay.setText("");
    			
    			BufferedReader reader = new BufferedReader(new FileReader("C:/Sprueche.dat"));
    			
    			while((Zeile = reader.readLine()) != null)
    				txtdisplay.append(Zeile + "\n");
    					
    			reader.close();
    		}
    			
    		catch(IOException err)
    		{
    			System.out.println("Fehler: " + err.toString());
    		}
    	}
    	
    	public static void main(String args[])
    	{
    		new SpruecheSpeichern();
    	}
    }
    
    
    class NeuerSpruch extends JFrame implements ActionListener
    {
    	// Variable deklarieren
    	JButton btnSpeichern;
    	JButton btnAbbrechen;
    	JTextField txtSpruch;
    	JLabel lblText;
    	
    	NeuerSpruch()
    	{
    		super("Neuer Spruch erfassen");
    		setBounds(100,100,400,150);
    		
    		setDefaultCloseOperation(EXIT_ON_CLOSE);
    		
    		// Neues Label erstellen + Positionierung
    		lblText = new JLabel("Bitte geben Sie ihren neuen Spruch ein:");
    		
    		// Neues Panel erstellen + Layout erstellen
    		JPanel MainPanel = new JPanel();
    		MainPanel.setLayout(new FlowLayout());
    		
    		// Neues TextFeld erstellen
    		txtSpruch = new JTextField(30);
    		
    		// Neuen Button erstellen
    		btnSpeichern = new JButton("Speichern");
    		btnAbbrechen = new JButton("Abbrechen");
    		btnSpeichern.addActionListener(this);
    		btnAbbrechen.addActionListener(this);
    		
    		
    		
    		// Dem Panel was hinzufügen
    		MainPanel.add(lblText);
    		MainPanel.add(txtSpruch);
    		MainPanel.add(btnSpeichern);
    		MainPanel.add(btnAbbrechen);
    
    		setContentPane(MainPanel);
    		
    		setVisible(true);
    	}
    	
    	// funktion für die Buttons
    	public void actionPerformed(ActionEvent e)
    	{
    		if(e.getSource() == btnAbbrechen)
    			this.dispose();
    		if(e.getSource() == btnSpeichern)
    		{
    			try
    			{
    				FileWriter writer = new FileWriter("C:/Sprueche.dat",true);
    				writer.write(txtSpruch.getText());
    				writer.write("\r\n");
    				
    				writer.close();		
    				
    				txtSpruch.setText("");	
    				this.dispose();
    			}
    			
    			catch(IOException err)
    			{
    				System.out.println("Fehler: " + err.toString());
    			}
    		}
    	}
    }
    mfg
    Günni


    Praxis: Jeder kann´s, aber keiner weiß wie´s geht...
    Theorie: Jeder weiß wie´s geht, aber keiner kann´s ...
    Microsoft vereint Praxis und Theorie: Nix geht und keiner weiß warum
    City-Tiger - Online durch die Straßen tigern...

    Kommentar


    • #3
      Original geschrieben von Günni
      Ich persönlich möchte in Zukunft mich auf C++ und Java spezialisieren.
      dann schlage ich vor, dass du dich mit der deutschen Benamsungen abgewöhnst. Ich bekomme immer graue Haare, wenn ich so was sehe Alles was in Source Code gehören, müssen in englisch sein. Denk daran, dass du eventuell in einem Projekt arbeitet, das nicht nur von deutschen Programmierern geschrieben wird, sondern auch von ausländischen Kollegen (z.B. in ausländischen Niederlassungen, etc.), was dann Ich vertrete die Meinung, dass alles in englisch sein muss, von Variablen, Funktionen, Klassen ... bishin zu den Code-Kommentaren. . Nicht weil ich Ausländer bin (ich kann sogar Deutsch besser als Englisch ), aber es gehört sich so.

      Kommentar


      • #4
        Wenn ich was für mich selbst Code, dann mache ich alles ausser URI Parameter in Deutsch, URI in englisch, weil actio=löschen irgendwie schlecht kommt (ö).

        Ich arbeite eigentlich nur mit Kollegen aus der Schweiz und aus Österreich, und die kommentieren auch auf deutsch.

        Das wichtigste ist doch, dass man seinen eigenen Code versteht.

        Das mag nicht professionell sein, aber besser als sich dauernd englische Ausdrücke auszudenken wo man später vielleicht nicht mal mehr weiss was die überhaupt bedeuten.

        Aber ich bin ja auch kein Profi und meine Quellcodes werden sicher nie von einem internationalem team gelesen (zum Glück )


        An mich bitte keine unaufgeforderten E-Mails senden (ausser ihr seid bereit geld zu zahlen, dann gerne )

        Kommentar


        • #5
          Java eignet recht gut als Grundlage für C++. Vorallem lernt man eines bei Java gut - oo Programmierung.

          Ein großer Vorteil ist, dass Du nicht gleich mit komplexen Themen wie Zeiger und Templates konfrontiert wirst.

          Grüssle

          Kommentar


          • #6
            @asp2php
            Bei den Beispielen die wir hier machen, reicht das vollkommen. Später sollte dies wirklich in englischer Sprache sein.
            mfg
            Günni


            Praxis: Jeder kann´s, aber keiner weiß wie´s geht...
            Theorie: Jeder weiß wie´s geht, aber keiner kann´s ...
            Microsoft vereint Praxis und Theorie: Nix geht und keiner weiß warum
            City-Tiger - Online durch die Straßen tigern...

            Kommentar


            • #7
              @flolle:
              Keine Zeiger?Keine Templates?
              Ich glaub ich guck mir Java mal genauer an...
              Und gerade wegen OOP scheint Java ja eine gute Sprache zu sein.
              Schade das Klassen bei C++ nicht mehr so simpel sind wie bei PHP.Bei C++ sehe ich manchmal nicht den Sinn eine Klasse einzusetzen, weil das grade für einen Anfänger eher viel Aufwand ist.

              @Günni:
              Danke, guter Beispielcode.Sieht gar nicht so schwer aus, eher leicht verständlich(jedenfalls im Gegensatz zu C++).

              Kommentar


              • #8
                Man bedenke den Unterschied, dass C++ ein Compiler ist, Java dagegen ein Interpreter (JavaVM ist von nöten!)
                Allerdings ist Java platformübergreifend

                Auch wenn die Syntax ähnlich ist, sind die Einsatzgebiete der Sprachen verschiedene.
                [COLOR=royalblue]Ein großes DANKE an alle, die sich auf selbstlose Weise im Forum einbringen.[/COLOR]

                [COLOR=silver]btw: REAL PROGRAMMERs aren't afraid to use GOTOs![/COLOR]

                [color=indigo]Etwas ernster, aber auch nicht weiter tragisch, sieht die Situation bei Software-Patenten aus. Software-Patente sind eine amerikanische Erfindung und stehen auf dem selben Blatt wie genveränderte Babynahrung, die im Supermarkt nicht mehr als solche gekennzeichnet werden soll, um die Hersteller nicht gegenüber denen natürlicher Produkte zu diskriminieren ...[/color]
                (from here)

                Kommentar


                • #9
                  Das mit den Einsatzgebieten ist mir klar.Aber was ist ein Interpreter?Name schon gehört, aber ich weiss nicht genau wo der Unterschied zu einem Compiler liegt...

                  Kommentar


                  • #10
                    Original geschrieben von V 9 1 9 V
                    Das mit den Einsatzgebieten ist mir klar.Aber was ist ein Interpreter?Name schon gehört, aber ich weiss nicht genau wo der Unterschied zu einem Compiler liegt...
                    Compiler: Übersetzt Quelltext in einem Stück in den Maschinencode.

                    Interpreter: Übersetzt Zeilenweise Quelltext in den Maschinencode.

                    Dadurch ist im Endeffekt ein Interpreter langsamer als ein Compiler.
                    Zuletzt geändert von Payne_of_Death; 07.07.2004, 17:25.
                    [color=blue]MfG Payne_of_Death[/color]

                    [color=red]Manual(s):[/color] <-| PHP | MySQL | SELFHTML |->
                    [color=red]Merke:[/color]
                    [color=blue]Du brauchst das Rad nicht neu erfinden ! [/color]<-ForumSuche rettet Leben-> || <-Schau in den Codeschnippsels->

                    Murphy`s Importanst LAWS
                    Jede Lösung bringt nur neue Probleme
                    Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht.
                    In jedem kleinen Problem steckt ein großes, das gern raus moechte.

                    Kommentar


                    • #11
                      Mit einem Compiler wird eine Exe erstellt, die dann ohne zusätzliche Programme lauffähig ist.

                      Ein Interpreter erstellt eine Datei z.B. "*.class" in der sich P-Code befindet.
                      Die Datei wird dann zur Laufzeit in Maschinencode übersetzt.
                      Dieser Übersetzter ist die Java-Virtual-Machine, von der gibts ne Variante für Win, Linux, Mac, ... - d.h. der P-Code ist platformunabhängig und wird von jeder VM eben unterschiedlich übersetzt.
                      [COLOR=royalblue]Ein großes DANKE an alle, die sich auf selbstlose Weise im Forum einbringen.[/COLOR]

                      [COLOR=silver]btw: REAL PROGRAMMERs aren't afraid to use GOTOs![/COLOR]

                      [color=indigo]Etwas ernster, aber auch nicht weiter tragisch, sieht die Situation bei Software-Patenten aus. Software-Patente sind eine amerikanische Erfindung und stehen auf dem selben Blatt wie genveränderte Babynahrung, die im Supermarkt nicht mehr als solche gekennzeichnet werden soll, um die Hersteller nicht gegenüber denen natürlicher Produkte zu diskriminieren ...[/color]
                      (from here)

                      Kommentar


                      • #12
                        Original geschrieben von Meillo
                        Mit einem Compiler wird eine Exe erstellt, die dann ohne zusätzliche Programme lauffähig ist.
                        <besserwisser>Nicht ganz... Ein Compiler erstellt Binärdateien... </besserwisser>

                        @V 9 1 9 V: Java hat zwar auch Zeiger, aber nur intern. Objekte werden immer per Referenz übergeben. (Referenzen sind Zeiger, nur können sie nicht NULL sein).

                        Grüssle

                        Kommentar


                        • #13
                          Zeiger sind am Anfang ein bisschen Schwer zu verstehen, aber wenn man den trick mal heraus hat sind diese ganz nützlich und vor allem sind diese in C++ auch sehr mächtig
                          mfg
                          Günni


                          Praxis: Jeder kann´s, aber keiner weiß wie´s geht...
                          Theorie: Jeder weiß wie´s geht, aber keiner kann´s ...
                          Microsoft vereint Praxis und Theorie: Nix geht und keiner weiß warum
                          City-Tiger - Online durch die Straßen tigern...

                          Kommentar


                          • #14
                            Ja, dass mit den Zeigern ist noch ein großes Problem für mich.Ich habe letztens ein Problem sehr umständlich mit ziemlich vielen Zeilen Code gelöst, danach habe ich Hilfe in einem Forum geholt...Ich hatte nur einen Zeiger gebraucht...lol

                            Kommentar


                            • #15
                              Da muss man damit üben. Das kommt alles mit der Zeit...
                              mfg
                              Günni


                              Praxis: Jeder kann´s, aber keiner weiß wie´s geht...
                              Theorie: Jeder weiß wie´s geht, aber keiner kann´s ...
                              Microsoft vereint Praxis und Theorie: Nix geht und keiner weiß warum
                              City-Tiger - Online durch die Straßen tigern...

                              Kommentar

                              Lädt...
                              X