Vergleich verschiedener OO-Programmiersprachen
Transcrição
Vergleich verschiedener OO-Programmiersprachen
Programmiersprachen Programmbeispiel in Visual C++, C#, Java und C++ Vergleich verschiedener OO-Programmiersprachen - Schnellumstieg in 15 Minuten - C++ Visual C++ Java C# Programmbeispiel in Visual C++, C#, Java und C++ Dr. Ehlert, Juni 2012 1 Programmiersprachen Programmbeispiel in Visual C++, C#, Java und C++ 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 Programmiersprachen Programmbeispiel in Visual C++, C#, Java und C++ 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: 0..1 hat Ehepartner 0..1 Mensch - name: String - ehepartner: Mensch - anzahlFahrraeder: int - fahrraeder: Fahrrad[] 0..1 + Mensch() + Mensch(String) + setName(String): void + getName(): String + getAnzahlFahrraeder(): int + heirate(Mensch): void + kaufe(Fahrrad): void + getEhepartner(): Mensch + getFahrrad(int): Fahrrad Fahrrad 0..n - farbe: String + Fahrrad() + Fahrrad(String) + setFarbe(String): void + getFarbe(): String 3 besitzt Programmiersprachen Programmbeispiel in Visual C++, C#, Java und C++ 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 Programmiersprachen Programmbeispiel in Visual C++, C#, Java und C++ // Mensch.h #include "Fahrrad.h" using namespace System; ref class Mensch { private: String^ name; Mensch^ ehepartner; int anzahlFahrraeder; array<Fahrrad^>^ fahrraeder; public: 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 Programmiersprachen Programmbeispiel in Visual C++, C#, Java und C++ // Fahrrad.h #pragma once using namespace System; ref class Fahrrad { private: String^ farbe; public: Fahrrad() { this->farbe = ("unbekannt"); } Fahrrad(String^ farbe) { this->farbe = farbe; } void SetFarbe(String^ farbe) { this->farbe = farbe; } String^ GetFarbe() { return this->farbe; } }; 6 Programmiersprachen Programmbeispiel in Visual C++, C#, Java und C++ 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 Programmiersprachen Programmbeispiel in Visual C++, C#, Java und C++ // Mensch.cs using System; namespace MenschFahrradCS { class Mensch { private private private private String name; Mensch ehepartner; int anzahlFahrraeder; 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 Programmiersprachen Programmbeispiel in Visual C++, C#, Java und C++ // 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 Programmiersprachen Programmbeispiel in Visual C++, C#, Java und C++ 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 Mensch Mensch Mensch ersterMensch zweiterMensch dritterMensch vierterMensch = = = = new new new new Mensch("Klaus"); Mensch(); Mensch(); 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 Programmiersprachen Programmbeispiel in Visual C++, C#, Java und C++ // Mensch.java public class Mensch { private private private private String name; Mensch ehepartner; int anzahlFahrraeder; 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 Programmiersprachen Programmbeispiel in Visual C++, C#, Java und C++ // 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 Programmiersprachen Programmbeispiel in Visual C++, C#, Java und C++ 5. Programmbeispiel in C++ // Dr. Ehlert / Juni 2012 // main.cpp // mit Dev-C++ (bzw. Visual Studio 2010) #include #include #include #include <cstdlib> <iostream> "Mensch.h" "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 Programmiersprachen Programmbeispiel in Visual C++, C#, Java und C++ // 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 Programmiersprachen Programmbeispiel in Visual C++, C#, Java und C++ // 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 Programmiersprachen Programmbeispiel in Visual C++, C#, Java und C++ // 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