Vergleich verschiedener OO-Programmiersprachen



Ähnliche Dokumente
Kurzeinführung in C/C++ Informationsquellen: - Webseite zur Vorlesung, Abschnitt Informationen zu C und C++ Einleitung

4. Objektorientierte Programmierung mit C++

Programmieren II Abstrakte Klassen / Virtuelle Methoden. Programmieren II Abstrakte Klassen / Virtuelle Methoden

Themen. Formatierte und unformatierte Eingabe Bedingungsoperator Namespaces Kommandozeilenargumente

Beispiel 2a Die eigenen ersten Schritte mit dem Gnu-Debugger GDB für Remote-Debugging

Aufgabe11. Methode test1. import java.util.hashmap; import java.util.arraylist; public class Aufgabe11 {

1.2 Attribute und Methoden Aufbau einer Java-Klasse:

Klausur in Programmieren

8a. Exkurs.NET. 8a.1.NET Architektur

Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Gute Lösung:

Programmieren in C/C++ und MATLAB

Delegatesund Ereignisse

Informatik I (D-MAVT)

TCP/IP Programmierung. C# TimeServer Java6 TimeClient

7.2 Dynamischer Speicher in Objekten/Kopierkonstruktor

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2014/2015 Wirtschaftsingenieur Bachelor 4. Aufgabe Datenstruktur, Dateieingabe und -ausgabe

Methoden. von Objekten definiert werden, Methoden,, Zugriffsmethoden und Read-Only

2. Semester, 2. Prüfung, Lösung

Versuchsziele Kenntnisse in der Anwendung von: Sortieren mit Klassen Benutzung von generischen Klassen o Definition o Sortierung.

Ein kleiner Blick auf die generische Programmierung

Aufgabe 5: Die Paderbox

Java: Vererbung. Teil 3: super()

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung)

Polymorphismus 179. Function.h. #include <string>

S7ComRaspi. Schönberger Thomas 2016 Schönberger Thomas

Zeiger, Arrays und Strings in C und C++

Vererbung I. Kfz Eigenschaften und Methoden der Klasse Kfz Lkw. Pkw. Eigenschaften und Methoden der Klasse Kfz

Lösung der OOP-Prüfung WS12/13

Objektorientierte Programmierung mit C++ SS 2007

Programmieren in C/C++ und MATLAB

Problemstellung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 24: Reflection 1. IDE und automatische Tests.

Einführung in die Programmierung (EPR)

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005

Aufgabe 1. Universität Duisburg-Essen Fachbereich Mathematik Dr. O. Rheinbach

Lösungsvorschlag zum Übungsblatt 1 zur Vorlesung Informatik II / WS2001/02

Angewandte Mathematik und Programmierung

Klausur: Programmieren II

Musterlösungen zur Klausur Informatik 3

Bildverarbeitung mit C++

Vorlesungsprüfung Programmiersprache 1

Angewandte Mathematik und Programmierung

Einführung in die Programmierung

Einführung in die STL anhand eines ausgewählten Beispiels

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

DAP2-Programmierpraktikum Einführung in C++ (Teil 1)

Delegates. «Delegierter» Methoden Schablone Funktionszeiger. Dr. Beatrice Amrhein

Programmieren in C/C++ und MATLAB

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2015/2016 Wirtschaftsingenieur Bachelor 5. Aufgabe Datenstruktur, Dateieingabe und -ausgabe

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 16

Bildverarbeitung mit C++

Der Goopax Compiler GPU-Programmierung in C++ ZKI AK-Supercomputing, Münster, , Ingo Josopait

Prof. Dr. Uwe Schmidt. 21. August Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252)

Ziel, Inhalt. Programmieren in C++ Wir lernen wie man Funktionen oder Klassen einmal schreibt, so dass sie für verschiedene Datentypen verwendbar sind

GUI Programmierung mit Qt

Grundlagen C und C++ Einheit 03: Grundlagen in C++ Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme

Javakurs für Anfänger

Java Einführung Methoden in Klassen

Der C++ Crashkurs v1.0

Software Entwicklung II (SS12)

Von Java nach C++ Dr. Frank Weichert Lehrstuhl Informatik VII Technische Universität Dortmund

Musterlösung zur 6. Übung

Kapitel 7: Rekursion. Inhalt. Rekursion: Technik Rekursion vs. Iteration

Algorithmen und Datenstrukturen

Abend 4 Übung : Erweitern von Klassen durch Vererbung

Spezifikation DPD und primetime WebService Shopfinder Gültig für Paketversender in Österreich. Version 3.3.0

Betriebssysteme: Konzepte, Dienste, Schnittstellen (Betriebssysteme und betriebssystemnahe Programmierung)

C++ Notnagel. Ziel, Inhalt. Programmieren in C++

Von Java nach C++ Frank Weichert, Heinrich Müller Informatik VII Universität Dortmund

Tipps und Hinweise zum Bezug der Beitragssatzdatei V5.0

Fakultät IV Elektrotechnik/Informatik

Vorlesung Objektorientierte Programmierung Probeklausur

3. Semester : 1. Prüfung

CORBA Implementierung von Client und Server

C# 2000 Expression Beispielcodes für Konsolen- und Formularanwendung

12. Vererbung. Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04)

C++ - Funktionen und mehr. Kerstin Gößner und Ralf Wondratschek

Praxisorientierte Einführung in C++ (Variadische Funktionen)

Java Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7

Java-Schulung Grundlagen

3D Programmierpraktikum: Einführung in C++ - Teil 1

Ausnahmebehandlung. (exceptionhandling) in C++

Transkript:

Vergleich verschiedener OO-Programmiersprachen - Schnellumstieg in 15 Minuten - C++ Java Visual C++ C# Programmbeispiel in Visual C++, C#, Java und C++ Dr. Ehlert, Juni 2012 1

Inhaltsverzeichnis 1. Problemstellung bzw. Datenmodellierung... 2 2. Programmbeispiel in Visual C++ (C++/CLI)... 4 3. Programmbeispiel in C#... 7 4. Programmbeispiel in Java... 10 5. Programmbeispiel in C++... 13 Quelle: http://bilder.mzibo.net/tag/fahrrad/ 2

1. Problemstellung bzw. Datenmodellierung Problemstellung: Ein Mensch (mit einem bestimmten Namen) kann viele Fahrräder besitzen. Ein Fahrrad (mit einer bestimmten Farbe) hat keinen oder genau einen Besitzer. Ein Mensch kann verheiratet sein. Datenmodellierung: hat Ehepartner 0..1 Mensch 0..1 - name: String - ehepartner: Mensch - anzahlfahrraeder: int - fahrraeder: Fahrrad[] + Mensch() + Mensch(String) + setname(string): void + getname(): String + getanzahlfahrraeder(): int + heirate(mensch): void + kaufe(fahrrad): void + getehepartner(): Mensch + getfahrrad(int): Fahrrad - farbe: String Fahrrad + Fahrrad() + Fahrrad(String) + setfarbe(string): void + getfarbe(): String 0..1 besitzt 0..n 3

2. Programmbeispiel in Visual C++ (C++/CLI) // Dr. Ehlert / Juni 2012 // MenschFahrradVisualCPP.cpp: Hauptprojektdatei. // Visual Studio 2010 #include "stdafx.h" #include "Mensch.h" #include "Fahrrad.h" using namespace System; int main(array<system::string ^> ^args) Mensch^ erstermensch = gcnew Mensch("Klaus"); Mensch^ zweitermensch = gcnew Mensch(); Mensch^ drittermensch = gcnew Mensch(); Mensch^ viertermensch = gcnew Mensch(); zweitermensch->setname("harald"); drittermensch->setname("susi"); Fahrrad^ erstesfahrrad = gcnew Fahrrad("rot"); Fahrrad^ zweitesfahrrad = gcnew Fahrrad(); Fahrrad^ drittesfahrrad = gcnew Fahrrad("blau"); erstermensch->kaufe(zweitesfahrrad); drittermensch->kaufe(erstesfahrrad); drittermensch->kaufe(drittesfahrrad); zweitermensch->heirate(drittermensch); drittermensch->heirate(zweitermensch); zweitesfahrrad->setfarbe("gruen"); drittesfahrrad->setfarbe("gelb"); Console::WriteLine(ersterMensch->GetName()); Console::WriteLine(zweiterMensch->GetEhepartner()->GetName()); int anzahl = drittermensch->getanzahlfahrraeder(); for (int i = 0; i < anzahl; i++) Console::WriteLine(i+1 + ". Fahrrad: " + drittermensch->getfahrrad(i)->getfarbe()); Console::WriteLine(vierterMensch->GetName()); Console::ReadLine(); return 0; 4

// Mensch.h #include "Fahrrad.h" using namespace System; ref class Mensch private: public: String^ name; Mensch^ ehepartner; int anzahlfahrraeder; array<fahrrad^>^ fahrraeder; Mensch() this->name = "Janine"; this->anzahlfahrraeder = 0; fahrraeder = gcnew array<fahrrad^>(100); Mensch(String^ name) this->name = name; this->anzahlfahrraeder = 0; fahrraeder = gcnew array<fahrrad^>(100); void SetName(String^ name) this->name = name; String^ GetName() return this->name; int GetAnzahlFahrraeder() return this->anzahlfahrraeder; void Heirate(Mensch^ einmensch) this->ehepartner = einmensch; void Kaufe(Fahrrad^ einfahrrad) this->fahrraeder[anzahlfahrraeder] = einfahrrad; this->anzahlfahrraeder++; Mensch^ GetEhepartner() return this->ehepartner; Fahrrad^ GetFahrrad(int i) return fahrraeder[i]; ; 5

// Fahrrad.h #pragma once using namespace System; ref class Fahrrad private: public: ; String^ farbe; Fahrrad() this->farbe = ("unbekannt"); Fahrrad(String^ farbe) this->farbe = farbe; void SetFarbe(String^ farbe) this->farbe = farbe; String^ GetFarbe() return this->farbe; 6

3. Programmbeispiel in C# // Dr. Ehlert / Juni 2012 // MenschFahrradTest.cs // Visual Studio 2010 using System; namespace MenschFahrradCS class MenschFahrradTest static void Main(string[] args) Mensch erstermensch = new Mensch("Klaus"); Mensch zweitermensch = new Mensch(); Mensch drittermensch = new Mensch(); Mensch viertermensch = new Mensch(); zweitermensch.setname("harald"); drittermensch.setname("susi"); Fahrrad erstesfahrrad = new Fahrrad("rot"); Fahrrad zweitesfahrrad = new Fahrrad(); Fahrrad drittesfahrrad = new Fahrrad("blau"); erstermensch.kaufe(zweitesfahrrad); drittermensch.kaufe(erstesfahrrad); drittermensch.kaufe(drittesfahrrad); zweitermensch.heirate(drittermensch); drittermensch.heirate(zweitermensch); zweitesfahrrad.setfarbe("gruen"); drittesfahrrad.setfarbe("gelb"); Console.WriteLine(ersterMensch.GetName()); Console.WriteLine(zweiterMensch.GetEhepartner().GetName()); int anzahl = drittermensch.getanzahlfahrraeder(); for (int i = 0; i < anzahl; i++) Console.WriteLine(i+1 + ". Fahrrad: " + drittermensch.getfahrrad(i).getfarbe()); Console.WriteLine(vierterMensch.GetName()); Console.ReadLine(); 7

// Mensch.cs using System; namespace MenschFahrradCS class Mensch private String name; private Mensch ehepartner; private int anzahlfahrraeder; private Fahrrad[] fahrraeder; public Mensch() this.name = "Janine"; this.anzahlfahrraeder = 0; fahrraeder = new Fahrrad[100]; public Mensch(String name) this.name = name; this.anzahlfahrraeder = 0; fahrraeder = new Fahrrad[100]; public void SetName(String name) this.name = name; public String GetName() return this.name; public int GetAnzahlFahrraeder() return this.anzahlfahrraeder; public void Heirate(Mensch einmensch) this.ehepartner = einmensch; public void Kaufe(Fahrrad einfahrrad) this.fahrraeder[anzahlfahrraeder] = einfahrrad; this.anzahlfahrraeder++; public Mensch GetEhepartner() return this.ehepartner; public Fahrrad GetFahrrad(int i) return fahrraeder[i]; 8

// Fahrrad.cs using System; namespace MenschFahrradCS class Fahrrad private String farbe; public Fahrrad() this.farbe = ("unbekannt"); public Fahrrad(String farbe) this.farbe = farbe; public void SetFarbe(String farbe) this.farbe = farbe; public String GetFarbe() return this.farbe; 9

4. Programmbeispiel in Java /** * Programm in Java mit JavaEditor (bzw. Eclipse) / MenschFahrradTest.java * @version 1.0 vom 06.06.2012 * @author Dr. Ehlert */ public class MenschFahrradTest public static void main(string[] args) Mensch erstermensch = new Mensch("Klaus"); Mensch zweitermensch = new Mensch(); Mensch drittermensch = new Mensch(); Mensch viertermensch = new Mensch(); zweitermensch.setname("harald"); drittermensch.setname("susi"); Fahrrad erstesfahrrad = new Fahrrad("rot"); Fahrrad zweitesfahrrad = new Fahrrad(); Fahrrad drittesfahrrad = new Fahrrad("blau"); erstermensch.kaufe(zweitesfahrrad); drittermensch.kaufe(erstesfahrrad); drittermensch.kaufe(drittesfahrrad); zweitermensch.heirate(drittermensch); drittermensch.heirate(zweitermensch); zweitesfahrrad.setfarbe("gruen"); drittesfahrrad.setfarbe("gelb"); System.out.println(ersterMensch.getName()); System.out.println(zweiterMensch.getEhepartner().getName()); int anzahl = drittermensch.getanzahlfahrraeder(); for (int i = 0; i < anzahl; i++) System.out.println(i+1 + ". Fahrrad: " + drittermensch.getfahrrad(i).getfarbe()); System.out.println(vierterMensch.getName()); 10

// Mensch.java public class Mensch private String name; private Mensch ehepartner; private int anzahlfahrraeder; private Fahrrad[] fahrraeder; public Mensch() this("janine"); public Mensch(String name) this.name = name; this.anzahlfahrraeder = 0; fahrraeder = new Fahrrad[100]; public void setname(string name) this.name = name; public String getname() return this.name; public int getanzahlfahrraeder() return this.anzahlfahrraeder; public void heirate(mensch einmensch) this.ehepartner = einmensch; public void kaufe(fahrrad einfahrrad) this.fahrraeder[anzahlfahrraeder] = einfahrrad; this.anzahlfahrraeder++; public Mensch getehepartner() return this.ehepartner; public Fahrrad getfahrrad(int i) return fahrraeder[i]; 11

// Fahrrad.java public class Fahrrad private String farbe; public Fahrrad() this.farbe = ("unbekannt"); public Fahrrad(String farbe) this.farbe = farbe; public void setfarbe(string farbe) this.farbe = farbe; public String getfarbe() return this.farbe; 12

5. Programmbeispiel in C++ // Dr. Ehlert / Juni 2012 // main.cpp // mit Dev-C++ (bzw. Visual Studio 2010) #include <cstdlib> #include <iostream> #include "Mensch.h" #include "Fahrrad.h" using namespace std; int main(int argc, char *argv[]) Mensch* erstermensch = new Mensch("Klaus"); Mensch* zweitermensch = new Mensch(); Mensch* drittermensch = new Mensch(); Mensch* viertermensch = new Mensch(); zweitermensch->setname("harald"); drittermensch->setname("susi"); Fahrrad* erstesfahrrad = new Fahrrad("rot"); Fahrrad* zweitesfahrrad = new Fahrrad(); Fahrrad* drittesfahrrad = new Fahrrad("blau"); erstermensch->kaufe(zweitesfahrrad); drittermensch->kaufe(erstesfahrrad); drittermensch->kaufe(drittesfahrrad); zweitermensch->heirate(drittermensch); drittermensch->heirate(zweitermensch); zweitesfahrrad->setfarbe("gruen"); drittesfahrrad->setfarbe("gelb"); cout << erstermensch->getname() << endl; cout << zweitermensch->getehepartner()->getname() << endl; int anzahl = drittermensch->getanzahlfahrraeder(); for (int i = 0; i < anzahl; i++) cout << i+1 << ". Fahrrad: " << drittermensch->getfahrrad(i)->getfarbe() << endl; cout << viertermensch->getname(); cin.get(); return EXIT_SUCCESS; 13

// Mensch.h #pragma once #include <string> #include "Fahrrad.h" using namespace std; class Mensch private: string name; Mensch* ehepartner; int anzahlfahrraeder; Fahrrad *fahrraeder[100]; public: Mensch(); Mensch(string name); void setname(string name); string getname(); int getanzahlfahrraeder(); void heirate(mensch* einmensch); void kaufe(fahrrad* einfahrrad); Mensch* getehepartner(); Fahrrad* getfahrrad(int i); ; 14

// Mensch.cpp #include <string> #include "Mensch.h" using namespace std; Mensch::Mensch() this->name = "Janine"; this->anzahlfahrraeder = 0; Mensch::Mensch(string name) this->name = name; this->anzahlfahrraeder = 0; void Mensch::setName(string name) this->name = name; string Mensch::getName() return this->name; int Mensch::getAnzahlFahrraeder() return this->anzahlfahrraeder; void Mensch::heirate(Mensch* einmensch) this->ehepartner = einmensch; void Mensch::kaufe(Fahrrad* einfahrrad) this->fahrraeder[anzahlfahrraeder] = einfahrrad; this->anzahlfahrraeder++; Mensch* Mensch::getEhepartner() return this->ehepartner; Fahrrad* Mensch::getFahrrad(int i) return fahrraeder[i]; 15

// Fahrrad.h #pragma once #include <string> using namespace std; class Fahrrad private: string farbe; public: Fahrrad(); Fahrrad(string farbe); void setfarbe(string farbe); string getfarbe(); ; // Fahrrad.cpp #include <string> #include "Fahrrad.h" using namespace std; Fahrrad::Fahrrad() this->farbe = ("unbekannt"); Fahrrad::Fahrrad(string farbe) this->farbe = farbe; void Fahrrad::setFarbe(string farbe) this->farbe = farbe; string Fahrrad::getFarbe() return this->farbe; 16