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