Inhaltsverzeichnis. 1 Einleitung 1. 2 Einordnung Geschichte und Entwicklung der Sprache Vorgängersprachen Paradigmen...

Größe: px
Ab Seite anzeigen:

Download "Inhaltsverzeichnis. 1 Einleitung 1. 2 Einordnung 2 2.1 Geschichte und Entwicklung der Sprache... 2 2.2 Vorgängersprachen... 3 2.3 Paradigmen..."

Transkript

1 Arbeitsgruppe Programmiersprachen und Übersetzerkonstruktion Institut für Informatik Christian-Albrechts-Universität zu Kiel Seminararbeit C# - Die.NET Sprache Thoren Horstmann WS 2012/2013 Betreuer: Fabian Reck

2 Inhaltsverzeichnis 1 Einleitung 1 2 Einordnung Geschichte und Entwicklung der Sprache Vorgängersprachen Paradigmen Das.NET-Framework 4 4 Technische Unterstützung 6 5 Konzepte und Struktur Sprachbeschreibung Konzepte Operator Overloading Generics Reection Anonyme Funktionen LINQ Zusammenfassung und Fazit 16 ii

3 1 Einleitung C# hat es in kürzester Zeit geschat, eine der weltweit meist benutzten Programmiersprachen zu werden. Doch wieso eigentlich? Nun zum einem, weil Microsoft es so wollte. C# wurde geschaen um Software für Windows zu schreiben und alle, die das machen, werden sich auf jeden Fall mit C# auseinandersetzen müssen. Zum anderen ist der Übergang von Java oder C++ so einfach, dass man ohne viel Eingewöhnungszeit in C# einsteigen und anfangen zu programmieren kann. In der folgenden Arbeit werde ich C# und dessen Laufzeitumgebung, das.net Framework vorstellen und deren verschiedene Aspekte näher erläutern. Dafür gehe ich zuerst auf die Entstehung und Einordnung der Sprache C# ein, gefolgt von einer Einführung in das.net Framework. Es wird klar werden, wieso C# die wichtigste.net Sprache ist und wieso das.net Framework heutzutage für so viele Anwendungen auf Windows benutzt wird. Im folgenden zeige ich auch noch einmal eine Alternative zu.net, nämlich das Open-Source Projekt Mono. Als letztes, groÿes Kapitel wird die Sprache C# in ihrer Syntax und Struktur vorgestellt und es wird klar werden, wieso der Übergang zu C# so einfach ist. Zudem werden verschiedene wichtige Features von C# mit Beispielen erklärt. Zum Schluss kommt noch einmal eine kleine Zusammenfassung und ein Fazit meinerseits. 1

4 2 Einordnung 2.1 Geschichte und Entwicklung der Sprache C# ist eine Objekt-orientierte Programmiersprache und wurde in den späten 1990er im Zuge der.net-framework Entwicklung von Microsoft entwickelt. Leiter des Entwicklungsteams ist Anders Heijlsberg, der unter anderem in den 1980er turbopascal und später Delphi mitentwickelte. Abbildung 2.1: Anders Heijlsberg C# wurde ausschlieÿlich für das.net-framework konzipiert, wobei versucht wurde, das Beste aus bereits etablierten Sprachen wie Java, C++ und C zu kombinieren, ohne die Nachteile zu übernehmen. Die erste alpha Version wurde Mitte 2000 vorgestellt und zur Normierung bei der Ecma International (Ecma), einer privaten Normungsorganisation mit Sitz in Genf, eingereicht. Im Januar 2002 wurde C# 1.0 von Microsoft veröentlicht und im gleichen Jahr im Dezember von der Ecma genormt folgte die Normierung durch die ISO/IEC. C# 2.0, im September 2005 veröentlicht, brachte viele Neuerungen, wie z.b. Generics und Anonyme Methoden, das sind Methoden, die nur eine Referenz aber keinen Namen haben. Die Version 2.0 wurde im Juni bzw. September von der Ecma, ISO/IEC genormt. Im November 2007 kam dann die Version 3.0, die wichtige 2

5 2 Einordnung Neuerungen, wie zum Beispiel Lambda Ausdrücke und LINQ (Language-integrated query) brachte. Lambda Ausdrücke sind eine neue Form von anonymen Methoden, die eine funktionale Programmierung ermöglichen. Mit LINQ können Anfragen in SQL ähnlicher Syntax ausgeführt werden. Genauere Beispiele folgen im Kapitel Konzepte. Die neuere Versionen 4.0 (April 2010) und 5.0 (August 2012) brachten im Gegensatz zu den vorherigen Versionsschritten nur wenige Neuerungen, darunter Dynamische Operationen (4.0), Optionale Parameter (4.0) und asynchrone Methoden (5.0). Zu jeder neuen Version von C# wird auch eine neue Version des.net Frameworks und von Visual Studio, der von Microsoft herausgegebenen C++/C# IDE, herausgegeben. 2.2 Vorgängersprachen Wenn man sich C# einmal anguckt erkennt man sehr deutlich die Ähnlichkeiten zu Java, weshalb C# in der Anfangszeit auch oft als Java-Klon bezeichnet wurde. Dennoch sieht Anders Heijlsberg eher C++ und damit auch C als direkter Vorgänger an, von denen die Syntax, viele Schlüsselwörter, Operatoren und das Objekt-Modell übernommen wurde. Java wird eher als entfernter Verwandter mit den gleichen Wurzeln angesehen. Zudem kamen mit fortschreitenden Versionen viele Neuerungen hinzu, die C# von Java weiter abgrenzen. Im allgemeinen ist C# so konzipiert das Java oder C++ Programmierer einen einfachen und schnellen Einstig haben. 2.3 Paradigmen C# ist eine Multi-Paradigmen Programmiersprache und unterstützt unter anderem Objektorientierte, imperative, generische und funktionale Programmierung. Das Objektmodell gleicht dem von C++ und Java. Objekte werden durch Klassen beschrieben. Diese haben Eigenschaften und bieten Methoden zur Veränderung dieser Eigenschaften an. Zugleich kann durch bestimmte Schlüsselwörter die Sichtbarkeit der Klasseninhalte beschränkt werden, um eine Kapselung der internen Daten zu erreichen. Anders als in C++ gibt es keine Mehrfachvererbung, allerdings gibt es dafür Interfaces wie in Java. C# unterstützt seit Version 2.0 auch die Generische Programmierung, die syntaktisch wie in Java benutzt wird, jedoch vom Compiler anders behandelt wird. Dazu folgt auch ein Beispiel im Kapitel Konzepte. Seit der Version 3.0 enthält C# auch funktionale Programmieraspekte, wie zum Beispiel Lambda Ausdrücke. Zudem ist C# natürlich auch eine imperative Sprache, in der der Programmablauf schrittweise im Quellcode festgelegt wird. 3

6 3 Das.NET-Framework Wie schon im vorherigen Kapitel erwähnt wurde C# ausschlieÿlich für das.net-framework konzipiert. Das.NET-Framework ist eine von Microsoft entwickelte Plattform für viele Programmiersprachen und primär zur Programmierung von Windows Anwendungen gedacht. Das Framework selbst ist zum gröÿten Teil in C# geschrieben. Die wichtigsten Komponenten von.net sind die Common Language Specication (CLS) das Common Type System (CTS) die Common Language Runtime (CLR) die.net-klassenbibliotheken diverse Compiler für die.net-sprachen Die Common Language Specication beschreibt dabei eine Reihe von Eigenschaften, die eine.net Sprache erfüllen muss. Das Common Type System deniert, welche Typen (Klassen, Interfaces und Datentypen) von der Common Language Runtime unterstützt werden. Früher musste man zum Beispiel aufpassen, wenn man mit Visual Basic eine C Bibliothek benutzen wollte, da diese unterschiedlich implementierte Datentypen haben..net-programmiersprachen können nun dank der CLS und der CTS in die Common Intermediate Language (CIL) übersetzt werden, ähnlich wie Java in Bytecode übersetzt wird. Das Prinzip wird nochmal in der Abbildung 3.1b veranschaulicht. Es gibt mittlerweile zu vielen Programmiersprachen eine.net Variante, manche können auch ohne Anpassungen kompiliert werden..net Programmiersprachen sind unter anderem C#, Visual C++, VB.NET, Eiel, Haskell, DotLisp oder Prolog.NET. Der generierte CIL- Code kann dann von der Common Language Runtime zur Laufzeit ausgeführt werden. Die Common Language Runtime, die Laufzeitumgebung des.net-frameworks, bietet zudem Garbage Collector, ClassLoader, Just-in-Time-Compiler und weiter Dienste an. Da nur der Just-in-Time(JIT)-Compiler hardwareabhängig ist, kann der Code theoretisch auf allen Plattformen, für die so ein JIT-Compiler existiert, ausgeführt werden. 4

7 3 Das.NET-Framework Praktisch gibt es jedoch das vollständige und aktuellste.net-framework nur von Microsoft auf Windows, da viele.net Bibliotheken speziell für Windows sind. Es gibt aber auch Projekte, die versuchen, zumindest Teile des.net Frameworks für verschiedenste Plattformen zu implementieren. Das wohl bekannteste und umfangreichste, das Mono Projekt wird im Kapitel technische Unterstützung vorgestellt. Mit Hilfe des.net Frameworks und C# können alle Arten von Windows Anwendungen geschrieben werden. Dazu stehen viele verschiedene Bibliotheken zu Verfügung, welche wir auf der Abbildung 3.1a sehen, wie zum Beispiel seit.net Version 2.0 die WinForms, ASP.NET und ADO.NET Bibliotheken. Diese gehören mittlerweile zu der Standard Bibliothek von.net und bieten Unterstützung zur GUI Programmierung (WinForms), Datenbankanbindung (ADO.NET) und Entwicklung Webbasierter Anwendungen (ASP.NET). Auch zum Beispiel Apps für Windows Phone und Windows 8 werden in C# geschrieben. (a) Das gesamte.net-framework (b) Das CLR-Prinzip 5

8 4 Technische Unterstützung Microsoft veröentlicht zu jeder neuen Version von C# und dem.net Framework eine neue Edition von Visual Studio. Visual Studio ist quasi die einzige existierende IDE zur Entwicklung von.net basierenden Windows Programmen. Sie beinhaltet unter anderem einen Code Editor mit Syntax-Highlighting und Code Vervollständigung, einen Debugger, verschiedene Designer und Anbindungen an Microsoft Serversysteme oder Datenbanken. Zudem kann Visual Studio durch verschiedenste Plug-ins erweitert werden. Von Haus aus enthalten sind Compiler für C#, Visual C++ und Visual Basic. Visual Studio ist generell kostenpichtig. Microsoft biete jedoch auch eine Express Version mit geringerem Umfang an, in der zum Beispiel keine Plug-ins unterstützt werden und keine x64 Compiler enthalten sind. Eine Alternative bietet zur Zeit nur das Mono Projekt, das versucht, eine Open-Source Version des.net-frameworks zu implementieren. Dieses bietet die IDE MonoDevelop, welche auf viele Plattformen, wie Windows, Mac und Linux, läuft. Das Mono Framework bietet jedoch noch nicht alle Funktionen, die das.net Framework zurzeit beinhaltet, deshalb kann man nicht immer ein C# Projekt ohne weiteres auf Mono portieren. Dies liegt daran, dass Microsoft viele Bibliotheken patentiert hat und diese bei Mono nun von Grund auf, und vor allem plattformunabhängig, selbst implementiert werden müssen. 6

9 5 Konzepte und Struktur Wie man in den folgenden Code Beispielen 5.1 und 5.2 sieht, ist die Struktur und Syntax von C# und Java nahezu identisch. 1 using System ; 2 class HelloWorld 3 { 4 static void Main () 5 { 6 Console. WriteLine (" Hello world!"); 7 } 8 } Code Beispiel 5.1: C-Sharp Hello World 1 class HelloWorld { 2 public static void main ( String [] args ) { 3 System. out. println (" Hello World!"); 4 } 5 } Code Beispiel 5.2: Java Hello World Klassen werden mit dem Schlüsselwort class deklariert und groÿ geschrieben, der Startpunkt eines Programms ist die Main Methode, Codeblöcke werden in geschweifte Klammern gefasst und Anweisungen werden mit einem Semikolon abgeschlossen. All das ist schon aus Java bekannt und wird deshalb in den folgenden Abschnitten als bekannt vorausgesetzt. Deshalb werden im nächsten Abschnitt nur kurz ein Paar Syntaktische Unterschiede zwischen C# und Java hervorgehoben, der gröÿte Teil dieses Kapitels widmet sich jedoch verschiedenen C# -Features. 7

10 5 Konzepte und Struktur 5.1 Sprachbeschreibung Die gängigsten Schlüsselwörter sind in C# und Java identisch. So gibt es die primitiven Datentypen char, int, float, Sichtbarkeitsmodikatoren wie public, private, protected oder Kontrollstrukturen wie if, while oder for. Kleine Unterschiede gibt es jedoch, zum Beispiel heiÿt der Boolean Datentyp wie in C++ bool und nicht wie in Java boolean, anstatt mit super() den Konstruktor der Oberklasse aufzurufen, geschieht dies mit base() und um externe Bibliotheken einzubinden, verwendet man using, nicht import. Primitive Datentypen in C# sind übrigens auch Objekte mit Methoden, das heiÿt eigentlich nicht primitiv. Dann gibt es natürlich noch Schlüsselwörter für Funktionen, die Java nicht unterstützt. Es können unter Anderem mit dem Schlüsselwort partial partielle Klassen erstellt werden. Damit kann der Quellcode einer Klasse auf verschiedene Dateien auf gesplittet werden. Dies wird zum Beispiel von Visual Studio benutzt, indem der vom Designer generierte Code vom Code des Entwicklers getrennt wird, um die Übersichtlichkeit zu steigern. Dazu müssen nur beide Klassen in der verschiedenen Dateien gleich heiÿen und als partial deklariert sein. Der Compiler fügt dann beide Klassenteile zu einer Klasse zusammen. Methoden sind in C#, anders als in Java, standardmäÿig non-virtual. Das heiÿt, dass Methoden in Elternklassen nicht einfach in deren Kindklassen überschrieben werden dürfen. Somit ist garantiert, dass nicht einfach eine neue Methode deniert werden kann, die sich eventuell nicht wie erwünscht verhält. Möchte man jedoch eine Methode überschreibbar machen, kann man das Schlüsselwort virtual benutzen. Überschreibende Methoden müssen dann das Schlüsselwort override verwenden. 8

11 5 Konzepte und Struktur 5.2 Konzepte Operator Overloading In C# kann man, wie in C++, Operatoren überladen, dass heiÿt bekannte Operatoren wie +, - oder * für eigene Klassen zu implementieren, sodass diese inx benutzt werden können. Im folgenden Beispiel wird die Klasse MyComplex implementiert, welche eine Komplexe Zahl, bestehend aus Real und Imaginärteil, enthält. 1 using System ; 2 namespace test 3 { 4 public class MyComplex 5 { 6 private int real ; 7 private int imag ; 8 9 // Konstruktoren 10 // Getter und Setter // Operator Overloading 13 public static MyComplex operator +( MyComplex myc1, 14 { MyComplex myc2 ) 15 MyComplex result = new MyComplex ( myc1. Real + myc2. Real, 16 return result ; 17 } myc1. Imag + myc2. Imag ); 18 // tostring mit Rueckgabe { real } + { imag } i 19 } 20 } Code Beispiel 5.3: Operator overloading Anders als in Java können wir eine Methode implementieren, die es uns ermöglicht, später MyComplex Objekte inx mit Hilfe des + Operators zu addieren. Die Methode muss dabei static deklariert sein, um den Operator später unabhängig von instantiierten MyComplex Objekten benutzen zu können. 9

12 5 Konzepte und Struktur Zudem muss das Schlüsselwort operator vor dem zu überladenen Symbol stehen. 1 using test ; 2 class OperatorTest 3 { 4 static void Main () 5 { 6 MyComplex myc1 = new MyComplex (1,1) ; 7 MyComplex myc2 = new MyComplex (1,1) ; 8 MyComplex result = myc1 + myc2 ; 9 System. Console. WriteLine ( result ); 10 } 11 } 12 // Ausgabe : i Code Beispiel 5.4: Operator overloading Main Die dazugehörige Testklasse im obigen Beispiel 5.4 kann nun ganz einfach zwei MyComplex Objekte addieren Generics Generics wurden 2005 mit der C# Version 2.0 eingeführt. Die Syntax gleicht der von Java. 1 using System ; 2 3 class Gen <T > { 4 T ob ; 5 6 public Gen (T o) { 7 ob = o; 8 } 9 public void ShowType () { 10 Console. WriteLine (" Type of T is " + typeof (T)); 11 } 12 } Code Beispiel 5.5: Generics 10

13 5 Konzepte und Struktur Jedoch werden Generics in C# vom Compiler und der Common Language Runtime anders behandelt. In Java werden alle generischen Typen vom Compiler aufgelöst, die Java Virtual Machine hat kein Wissen über Generics. In C# sind Generics kein Sprach- sondern ein.net-feature und werden vom Compiler nur auf Korrektheit überprüft. Die Common Language Runtime löst diese dann Just in Time auf Reection Reection ist ein mächtiges Werkzeug in C#, mit deren Hilfe man zur Laufzeit alle Arten von Eigenschaften von Objekten herausnden kann. Dazu muss man wissen, dass wenn man ein C# Programm oder eine Bibliothek kompiliert, automatisch ein Assembly erzeugt wird. Dieses Assembly ist eine Datei, die das in Common Intermediate Language kompilierte Programm und zusätzliche Metadaten enthält. Ein Assembly besteht aus vier Teilen. Zum einem aus dem Manifest, das Daten über das Assembly selbst enthält, wie Name und Version. Dann gibt es den Abschnitt Metadaten, in dem Daten über die enthaltenen Klassen und Datentypen enthalten sind. Als Drittes folgt der Programmcode in Common Intermediate Language und zuletzt die benötigten Ressourcen. Assemblys können dynamisch zur Laufzeit geladen werden und mit Hilfe von Reection kann jetzt herausgefunden werden, welche Klassen in diesem Assembly enthalten sind und was deren Attribute und Methoden sind. Dazu ein sehr stark gekürztes Beispiel, das einige Methoden vorstellt : 1 using System ; 2 using. System. Reflection ; 3 class ReflectAssemblyDemo { 4 static void Main () { 5 // Assembly laden 6 Assembly asm = Assembly. LoadFrom (" Test. exe "); 7 8 // herausfinden was fuer Types Test. exe enthaelt 9 Type [] alltypes = asm. GetTypes () ; Type t = alltypes [ 0]; 12 // bestimme die Konstruktoren des Types t 13 ConstructorInfo [] ci = t. GetConstructors () ;

14 5 Konzepte und Struktur 16 // konstruiere das Objekt mit Hilfe eines moeglichen Konstruktors, in unserem Fall dem Standardkonstruktor 17 object reflectob = ci [ 0]. Invoke () // bestimme die Methoden von t 20 MethodInfo [] mi = t. GetMethods () ; // benutze eine Methode des des Objektes mit den Parametern args 23 mi [0]. Invoke ( reflectob, args ); 24 } 25 } Code Beispiel 5.6: Reection Zunächst wird das Assembly geladen. Nun können wir die enthaltenen Types herausnden. Ein Type Objekt enthält alle Informationen über einen bestimmten Klassen-Typ. Mithilfe des Types können wir nun Namen und Parameter der Konstruktoren und Methoden herausnden. Nun kann ein Objekt erzeugt werden, das einer Klasse aus dem Assembly entspricht, ohne dass diese vorher bekannt war Anonyme Funktionen Anonyme Funktionen in C# sind unterteilt in anonyme Methoden und Lambda Ausdrücke. Anonyme Methoden werden mithilfe des Schlüsselwortes delegate erstellt. 1 using System ; 2 delegate void CountIt ( int end ); 3 class AnonMethodDemo { 4 static void Main () { 5 CountIt count = delegate ( int end ) { for ( int i =0; i <= end ;i ++) 6 Console. WriteLine (i); 7 }; 8 count (5) ; 9 } 10 } Code Beispiel 5.7: anonyme Methode 12

15 5 Konzepte und Struktur Ein delegate Objekt enthält eine Referenz auf eine Methode, vergleichbar mit Funktionspointern in C/C++. Ein delegate kann, wie im oberen Beispiel mit einer anonymen Methode instantiiert werden jedoch auch mit jeder Methode einer Instanz oder statischen Methode einer Klasse, solange die Signatur und der return Typ stimmt. Eine weitaus hübschere Art anonyme Methoden zu erstellen bieten sogenannte Lambda Ausdrücke. Diese benutzen den sogenannten Lambda Operator =>, der den Ausdruck zweiteilt. Auf der linken Seite werden die Eingabe Parameter speziziert und auf der rechen Seite ist der sogenannte Lambda Rumpf. Lambda Ausdrücke werden wiederum in zwei Arten unterteilt. Das eine sind die Ausdruckslambdas, deren Rumpf nur aus einem Ausdruck besteht. Also zum Beispiel : (x,y) => x==y. Diese Syntax ist vergleichbar mit der in Haskell wo der Lambda Ausdruck wie folgt aussehen würde : \x y -> x == y. Alle Lambda Ausdrücke die über mehrere Zeilen gehen werden mit geschweiften Klammern umschlossen und heiÿen Anweisungslambdas. Lambda Ausdrücke werden wie anonyme Methoden von delegates benutzt, bieten jedoch meistens eine hübschere Syntax. So können wir das delegate Beispiel wie folgt überarbeiten : 1 using System ; 2 delegate void CountIt ( int end ); 3 class AnonMethodLambdaDemo { 4 static void Main () { 5 CountIt count = end => { for ( int i =0; i <= end ;i ++) 6 Console. WriteLine (i); 7 }; 8 count (5) ; 9 } 10 } Code Beispiel 5.8: Lambda Ausdruck 13

16 5 Konzepte und Struktur LINQ Language Integrated Query (LINQ) erweitert C# um die Möglichkeit SQL ähnliche Abfragen an verschiedenste Objekte zu stellen. Im folgenden sind dies Collections/Auflistungen, welche das IEnumerable-Interface implementieren. Dies nennt sich LINQ to Objects. Es gibt jedoch noch weiter LINQ Implementierungen, zum Beispiel LINQ to SQL (Zugri auf SQL Datenbanken), LINQ to XML (Zugri auf XML Strukturen) oder LINQ to DataSet. Mit der Einführung von LINQ gehen zweit weitere Neuerungen einher, nämlich anonyme Typen und Erweiterungsmethoden. Anonyme Typen sind vom Compiler automatisch erzeugte anonyme Klassen, die nur aus privaten Attribute und deren Gettern/Settern bestehen. Die Deklaration geschieht wie folgt : var person = new Vorname = "Max", Nachname = "Muster", Alter = 42 ; Zu dieser Deklaration existiert nur die deklarierten Instanz, welche ausschlieÿlich lokal benutzt werden kann. Gleich deklarierte anonyme Typen erkennt der Compiler und benutzt die zuvor erzeugte Klasse. Erweiterungsmethoden erlauben einem, Methoden einer vorhanden Klasse hinzuzufügen. Die Methoden werden als statische Methoden in einer neuen statischen Klasse implementiert und können dann wie eine normale Methode des erweiterten Datentyps aufgerufen werden. Eine Erweiterungsmethode ist so deklariert, dass vor dem ersten Parameter ein this steht und der Parameter vom Typ der zu erweiternden Klasse ist. Benutzt werden die Erweiterungsmethoden dann wie normale Methoden. Dies wird im Beipiel 5.9 verdeutlicht. Zuerst wird eine Klasse IntExtension deklariert, die die int Klasse um die Methode mult erweitert. Nun kann auf jeder int Variable die Methode.mult(int x) aufgerufen werden. Die LINQ Abfrageoperatoren sind als Erweiterungsmethoden deniert und auf Objekte, die das IEnumrable Interface implementieren, anwendbar. 1 public static class IntExtension { 2 3 public static int mult [ this int instanz, int faktor ) { 4 return instanz * faktor ; 5 } 6 } 7 /* Benutzung : 8 * int zahl = 42; 9 * int ergebnis = zahl. mult (2) ; //82 10 */ Code Beispiel 5.9: Erweiterungsmethode 14

17 5 Konzepte und Struktur LINQ ermöglicht es jetzt, Abfragen an Objekte zu stellen zu stellen. Dazu gibt es zum einen die Abfrage-Syntax, welche sehr an SQL erinnert und zum anderen die Erweiterungsmethoden-Syntax, welche Erweiterungsmethoden und Lambda Ausdrücke benutzt. Die Abfrage-Syntax ist zugunsten besserer Lesbarkeit zu bevorzugen, wir jedoch im Endeekt vom Compiler auch in eine Erweiterungsmethoden-Syntax übersetzt. 1 using System ; 2 using System. Linq ; 3 public class LINQDemo { 4 5 string [] monate = {" Januar "," Februar "," Maerz "," April "," Mai " 6," Juni "," Juli "," August "," September "," Oktober "," November "," Dezember " }; 7 // Abfrage - Syntax 8 var expr = from s in monate 9 where s. Length == 6 10 orderby s 11 select s. ToUpper () ; // Erweiterungsmethoden - Syntax 14 var expr = monate. where (s => s. Length == 6). OrderBy (s => s) 15 }. Select ( s => s. ToUpper () ); Code Beispiel 5.10: LINQ Abfragen in Abfragen-Syntax fangen grundsätzlich mit from an. Das from iteriert dann über eine Liste von Daten, im obigen Beispiel über monate. Als nächstes folgen bekannte SQL Operatoren wie where zur Filterung, orderby zur Sortierung, groupby zur Gruppierung und zum Schluss das select zur Auswahl oder Projektion der abgefragten Elemente. 15

18 6 Zusammenfassung und Fazit Alles in allem muss man sagen, dass C# nicht einfach nur irgendein Java Klon ist. C# ist ein von Microsoft an seine Bedürfnisse angepasste Sprache, die ihre Funktion erfüllt, nämlich mit dem.net Framework zusammen zu arbeiten, und zudem simpel und einfach zu verstehen ist. Da Java bekannt und denitiv einfacher als C++ war, wurde eben sehr viel Syntax übernommen. Es gibt jedoch viele praktische Eigenschaften, wie LINQ oder Reection, die C# zu einer mächtigen Sprache machen und diese Arbeit kann leider nur einen groben Überblick geben, was alles mit C# möglich ist. Leider gibt es das komplette.net Framework zurzeit nur unter Windows, was die Benutzung von C# wohl auch nur für Windows Entwickler interessant macht. Eine Honung bleibt das Mono Projekt, das eine plattformunabhängige Open-Source Alternative zum.net Framework bietet, jedoch noch nicht alle Funktionen unterstützt. C# an sich ist aber eine schöne, für mich als Java Kenner, intuitiv erlernbare Sprache, die viele wichtige Programmierparadigmen unterstützt und deshalb gut und vielseitig zu benutzen ist. 16

19 Literaturverzeichnis [DG09] Doberenz, Walter ; Gewinnus, Thomas: Der Visual-C# -Programmierer - Visual C# lernen : professionell anwenden ; Lösungen nutzen. München, Wien : Carl Hanser, ISBN [Sch08] Schildt, Herbert: C# 3.0 THE COMPLETE REFERENCE 3/E -. Madison : McGraw Hill Professional, ISBN [Sch10] Schulten, Lars: Was ist neu in C# 4.0? 2010 [Tan12] Tang, Fahao: An Introduction to New Features in C# [Wik12a] Wikipedia: C-Sharp Wikipedia, Die freie Enzyklopädie [Wik12b] Wikipedia: Liste von.net-sprachen Wikipedia, Die freie Enzyklopädie [Wik13a] Wikipedia: Microsoft Visual Studio Wikipedia, The Free Encyclopedia [Wik13b] Wikipedia: Mono (software) Wikipedia, The Free Encyclopedia

Java: Vererbung. Teil 3: super() www.informatikzentrale.de

Java: Vererbung. Teil 3: super() www.informatikzentrale.de Java: Vererbung Teil 3: super() Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und IMMER zuerst den Konstruktor der Elternklasse auf! Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und

Mehr

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Übung 1 mit C# 6.0 MATTHIAS RONCORONI Übung 1 mit C# 6.0 MATTHIAS RONCORONI Inhalt 2 1. Überblick über C# 2. Lösung der Übung 1 3. Code 4. Demo C# allgemein 3 aktuell: C# 6.0 mit.net-framework 4.6: Multiparadigmatisch (Strukturiert, Objektorientiert,

Mehr

Grundlagen von Python

Grundlagen von Python Einführung in Python Grundlagen von Python Felix Döring, Felix Wittwer November 17, 2015 Scriptcharakter Programmierparadigmen Imperatives Programmieren Das Scoping Problem Objektorientiertes Programmieren

Mehr

Einführung in die Java- Programmierung

Einführung in die Java- Programmierung Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113

Mehr

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Objektorientierte Programmierung für Anfänger am Beispiel PHP Objektorientierte Programmierung für Anfänger am Beispiel PHP Johannes Mittendorfer http://jmittendorfer.hostingsociety.com 19. August 2012 Abstract Dieses Dokument soll die Vorteile der objektorientierten

Mehr

Vererbung & Schnittstellen in C#

Vererbung & Schnittstellen in C# Vererbung & Schnittstellen in C# Inhaltsübersicht - Vorüberlegung - Vererbung - Schnittstellenklassen - Zusammenfassung 1 Vorüberlegung Wozu benötigt man Vererbung überhaubt? 1.Um Zeit zu sparen! Verwendung

Mehr

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {... PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum

Mehr

C# im Vergleich zu Java

C# im Vergleich zu Java C# im Vergleich zu Java Serhad Ilgün Seminar Universität Dortmund SS 03 Gliederung Entstehung von C# und Java Überblick von C# und Java Unterschiede und Gemeinsamkeiten Zusammenfassung und Ausblick Entstehung

Mehr

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren Lineargleichungssysteme: Additions-/ Subtraktionsverfahren W. Kippels 22. Februar 2014 Inhaltsverzeichnis 1 Einleitung 2 2 Lineargleichungssysteme zweiten Grades 2 3 Lineargleichungssysteme höheren als

Mehr

Java Kurs für Anfänger Einheit 5 Methoden

Java Kurs für Anfänger Einheit 5 Methoden Java Kurs für Anfänger Einheit 5 Methoden Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 22. Juni 2009 Inhaltsverzeichnis Methoden

Mehr

Prinzipien Objektorientierter Programmierung

Prinzipien Objektorientierter Programmierung Prinzipien Objektorientierter Programmierung Valerian Wintner Inhaltsverzeichnis 1 Vorwort 1 2 Kapselung 1 3 Polymorphie 2 3.1 Dynamische Polymorphie...................... 2 3.2 Statische Polymorphie........................

Mehr

Objektorientierte Programmierung. Kapitel 12: Interfaces

Objektorientierte Programmierung. Kapitel 12: Interfaces 12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/

Mehr

Zählen von Objekten einer bestimmten Klasse

Zählen von Objekten einer bestimmten Klasse Zählen von Objekten einer bestimmten Klasse Ziel, Inhalt Zur Übung versuchen wir eine Klasse zu schreiben, mit der es möglich ist Objekte einer bestimmten Klasse zu zählen. Wir werden den ++ und den --

Mehr

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Java Kurs für Anfänger Einheit 4 Klassen und Objekte Java Kurs für Anfänger Einheit 4 Klassen und Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 13. Juni 2009 Inhaltsverzeichnis klasse

Mehr

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java Willkommen zur Vorlesung Objektorientierte Programmierung Vertiefung - Java Zum Dozenten Mein Name: Andreas Berndt Diplom-Informatiker (TU Darmstadt) Derzeit Software-Entwickler für Web- Applikationen

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können

Mehr

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6 Gudrun Fischer Sascha Kriewel programmierung@is.informatik.uni-duisburg.de Anmeldung zur Klausur! Übungsblatt Nr. 6 Um an der Klausur teilzunehmen, müssen sich Studierende der angewandten Informatik in

Mehr

Arbeiten mit UMLed und Delphi

Arbeiten mit UMLed und Delphi Arbeiten mit UMLed und Delphi Diese Anleitung soll zeigen, wie man Klassen mit dem UML ( Unified Modeling Language ) Editor UMLed erstellt, in Delphi exportiert und dort so einbindet, dass diese (bis auf

Mehr

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005 Einführung in die objektorientierte Programmierung mit Java Klausur am 19. Oktober 2005 Matrikelnummer: Nachname: Vorname: Semesteranzahl: Die Klausur besteht aus drei Frageblöcken zu den Inhalten der

Mehr

SEMINAR Modifikation für die Nutzung des Community Builders

SEMINAR Modifikation für die Nutzung des Community Builders 20.04.2010 SEMINAR Modifikation für die Nutzung des Community Builders Step by Step Anleitung ecktion SEMINAR Modifikation für die Nutzung des Community Builders Step by Step Anleitung Bevor Sie loslegen

Mehr

Innere Klassen in Java

Innere Klassen in Java Innere Klassen in Java SS 2012 Prof. Dr. Margarita Esponda Innere Klassen Klassen- oder Interfacedefinitionen können zur besseren Strukturierung von Programmen verschachtelt werden Eine "Inner Class" wird

Mehr

Zeichen bei Zahlen entschlüsseln

Zeichen bei Zahlen entschlüsseln Zeichen bei Zahlen entschlüsseln In diesem Kapitel... Verwendung des Zahlenstrahls Absolut richtige Bestimmung von absoluten Werten Operationen bei Zahlen mit Vorzeichen: Addieren, Subtrahieren, Multiplizieren

Mehr

Software-Engineering und Optimierungsanwendungen in der Thermodynamik

Software-Engineering und Optimierungsanwendungen in der Thermodynamik Software-Engineering und Optimierungsanwendungen in der Thermodynamik Software-Engineering 5 Programmentwicklung und Debuggen mit IDE und CASE-Tools Übungen Prof. Dr. Rolf Dornberger OPTSWE_SWE: 5 Programmentwicklung

Mehr

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

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005 Einführung in Java PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005 Gliederung 1. Was ist Java / Geschichte von Java 2. Prinzip der Plattformunabhängigkeit 3. Wie kommt man vom Quellcode zum Programm

Mehr

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag Ludwig-Maximilians-Universität München WS 2015/16 Institut für Informatik Übungsblatt 9 Prof. Dr. R. Hennicker, A. Klarl Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung:

Mehr

Programmieren was ist das genau?

Programmieren was ist das genau? Programmieren was ist das genau? Programmieren heisst Computerprogramme herstellen (von griechisch programma für Vorschrift). Ein Computerprogramm ist Teil der Software eines Computers. Als Software bezeichnet

Mehr

Informationen zur Verwendung von Visual Studio und cmake

Informationen zur Verwendung von Visual Studio und cmake Inhaltsverzeichnis Informationen zur Verwendung von Visual Studio und cmake... 2 Erste Schritte mit Visual Studio... 2 Einstellungen für Visual Studio 2013... 2 Nutzung von cmake... 6 Installation von

Mehr

Ein Blick voraus. des Autors von C++: Bjarne Stroustrup. 04.06.2005 Conrad Kobsch

Ein Blick voraus. des Autors von C++: Bjarne Stroustrup. 04.06.2005 Conrad Kobsch Ein Blick voraus des Autors von C++: Bjarne Stroustrup 04.06.2005 Conrad Kobsch Inhalt Einleitung Rückblick Nur eine Übergangslösung? Was würde C++ effektiver machen? Quelle 2 Einleitung Wo steht C++,

Mehr

Die Programmiersprache Java. Dr. Wolfgang Süß Thorsten Schlachter

Die Programmiersprache Java. Dr. Wolfgang Süß Thorsten Schlachter Die Programmiersprache Java Dr. Wolfgang Süß Thorsten Schlachter Eigenschaften von Java Java ist eine von der Firma Sun Microsystems entwickelte objektorientierte Programmiersprache. Java ist......a simple,

Mehr

Robot Karol für Delphi

Robot Karol für Delphi Robot Karol für Delphi Reinhard Nitzsche, OSZ Handel I Version 0.1 vom 24. Januar 2003 Zusammenfassung Nach der Einführung in die (variablenfreie) Programmierung mit Robot Karol von Freiberger und Krško

Mehr

Informatik 12 Datenbanken SQL-Einführung

Informatik 12 Datenbanken SQL-Einführung Informatik 12 Datenbanken SQL-Einführung Gierhardt Vorbemerkungen Bisher haben wir Datenbanken nur über einzelne Tabellen kennen gelernt. Stehen mehrere Tabellen in gewissen Beziehungen zur Beschreibung

Mehr

Starthilfe für C# Inhaltsverzeichnis. Medien- und Kommunikationsinformatik (B.Sc.) Alexander Paharukov. Informatik 3 Praktikum

Starthilfe für C# Inhaltsverzeichnis. Medien- und Kommunikationsinformatik (B.Sc.) Alexander Paharukov. Informatik 3 Praktikum Starthilfe für C# Inhaltsverzeichnis Allgemeines... 2 Bezugsquellen... 2 SharpDevelop... 2.NET Runtime... 2.NET SDK... 2 Installation... 2 Reihenfolge... 2 Vorschlag für eine Ordnerstruktur... 3 Arbeit

Mehr

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders

Mehr

Vorkurs Informatik WiSe 15/16

Vorkurs Informatik WiSe 15/16 Java 1 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 12.10.2015 Technische Universität Braunschweig, IPS Überblick Organisatorisches Arbeitsablauf Hello! 12.10.2015 Dr. Werner Struckmann / Stephan

Mehr

Einführung zum Arbeiten mit Microsoft Visual C++ 2010 Express Edition

Einführung zum Arbeiten mit Microsoft Visual C++ 2010 Express Edition In den nachfolgenden Schritten finden Sie beschrieben, wie Sie in der Entwicklungsumgebung Microsoft Visual Studio 2010 eine Projektmappe, ein Projekt und einen ersten Quellcode erstellen, diesen kompilieren,

Mehr

2. Einrichtung der ODBC-Schnittstelle aus orgamax (für 32-bit-Anwendungen)

2. Einrichtung der ODBC-Schnittstelle aus orgamax (für 32-bit-Anwendungen) 1. Einführung: Über den ODBC-Zugriff können Sie bestimmte Daten aus Ihren orgamax-mandanten in anderen Anwendungen (beispielsweise Microsoft Excel oder Microsoft Access) einlesen. Dies bietet sich beispielsweise

Mehr

Vorkurs C++ Programmierung

Vorkurs C++ Programmierung Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:

Mehr

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

Suche schlecht beschriftete Bilder mit Eigenen Abfragen Suche schlecht beschriftete Bilder mit Eigenen Abfragen Ist die Bilderdatenbank über einen längeren Zeitraum in Benutzung, so steigt die Wahrscheinlichkeit für schlecht beschriftete Bilder 1. Insbesondere

Mehr

Installation und Inbetriebnahme von Microsoft Visual C++ 2010 Express

Installation und Inbetriebnahme von Microsoft Visual C++ 2010 Express Howto Installation und Inbetriebnahme von Microsoft Visual C++ 2010 Express Peter Bitterlich Markus Langer 12. Oktober 2012 Zusammenfassung Dieses Dokument erklärt Schritt für Schritt die Installation

Mehr

Bilder Schärfen und Rauschen entfernen

Bilder Schärfen und Rauschen entfernen Bilder Schärfen und Rauschen entfernen Um alte Bilder, so wie die von der Olympus Camedia 840 L noch dazu zu bewegen, Farben froh und frisch daherzukommen, bedarf es einiger Arbeit und die habe ich hier

Mehr

4 Vererbung, Polymorphie

4 Vererbung, Polymorphie 4 Vererbung, Polymorphie Jörn Loviscach Versionsstand: 21. März 2014, 22:57 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen beim Ansehen der Videos: http://www.j3l7h.de/videos.html This work

Mehr

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek Programmieren I Dr. Klaus Höppner Hochschule Darmstadt Wintersemester 2008/2009 1 / 22 2 / 22 Strategie zum Entwurf von Klassen Beispiele Objektorientierte Sichtweise: Mit welchen Objekten habe ich es

Mehr

schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG mitp/bhv

schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG mitp/bhv Roboter programmieren mit NXC für Lego Mindstorms NXT 1. Auflage Roboter programmieren mit NXC für Lego Mindstorms NXT schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG mitp/bhv Verlag

Mehr

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3 Handbuch Fischertechnik-Einzelteiltabelle V3.7.3 von Markus Mack Stand: Samstag, 17. April 2004 Inhaltsverzeichnis 1. Systemvorraussetzungen...3 2. Installation und Start...3 3. Anpassen der Tabelle...3

Mehr

Übungen zur Vorlesung Einführung in die Informatik Wintersemester 2010/11

Übungen zur Vorlesung Einführung in die Informatik Wintersemester 2010/11 Übungen zur Vorlesung Einführung in die Informatik Wintersemester 2010/11 Fakultät für Informatik Lehrstuhl 1 Dr. Lars Hildebrand Carla Delgado-Battenfeld Fatih Gedikli Tobias Marschall Benjamin Schowe

Mehr

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java Objektorientierte Programmierung mit Java Eine praxisnahe Einführung mit BlueJ Klassenentwurf Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? 1.0 Zentrale Konzepte

Mehr

Unterprogramme. Funktionen. Bedeutung von Funktionen in C++ Definition einer Funktion. Definition einer Prozedur

Unterprogramme. Funktionen. Bedeutung von Funktionen in C++ Definition einer Funktion. Definition einer Prozedur Unterprogramme Unterprogramme sind abgekapselte Programmfragmente, welche es erlauben, bestimmte Aufgaben in wiederverwendbarer Art umzusetzen. Man unterscheidet zwischen Unterprogrammen mit Rückgabewert

Mehr

Javakurs 2013 Objektorientierung

Javakurs 2013 Objektorientierung Javakurs 2013 Objektorientierung Objektorientierte Programmierung I Armelle Vérité 7 März 2013 Technische Universität Berlin This work is licensed under the Creative Commons Attribution-ShareAlike 3.0

Mehr

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank In den ersten beiden Abschnitten (rbanken1.pdf und rbanken2.pdf) haben wir uns mit am Ende mysql beschäftigt und kennengelernt, wie man

Mehr

Step by Step Webserver unter Windows Server 2003. von Christian Bartl

Step by Step Webserver unter Windows Server 2003. von Christian Bartl Step by Step Webserver unter Windows Server 2003 von Webserver unter Windows Server 2003 Um den WWW-Server-Dienst IIS (Internet Information Service) zu nutzen muss dieser zunächst installiert werden (wird

Mehr

Anleitung über den Umgang mit Schildern

Anleitung über den Umgang mit Schildern Anleitung über den Umgang mit Schildern -Vorwort -Wo bekommt man Schilder? -Wo und wie speichert man die Schilder? -Wie füge ich die Schilder in meinen Track ein? -Welche Bauteile kann man noch für Schilder

Mehr

.htaccess HOWTO. zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage

.htaccess HOWTO. zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage .htaccess HOWTO zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage Stand: 21.06.2015 Inhaltsverzeichnis 1. Vorwort...3 2. Verwendung...4 2.1 Allgemeines...4 2.1 Das Aussehen der.htaccess

Mehr

Kapitel 4 Die Datenbank Kuchenbestellung Seite 1

Kapitel 4 Die Datenbank Kuchenbestellung Seite 1 Kapitel 4 Die Datenbank Kuchenbestellung Seite 1 4 Die Datenbank Kuchenbestellung In diesem Kapitel werde ich die Theorie aus Kapitel 2 Die Datenbank Buchausleihe an Hand einer weiteren Datenbank Kuchenbestellung

Mehr

Übung: Verwendung von Java-Threads

Übung: Verwendung von Java-Threads Übung: Verwendung von Java-Threads Ziel der Übung: Diese Übung dient dazu, den Umgang mit Threads in der Programmiersprache Java kennenzulernen. Ein einfaches Java-Programm, das Threads nutzt, soll zum

Mehr

C++11 C++14 Kapitel Doppelseite Übungen Musterlösungen Anhang

C++11 C++14 Kapitel Doppelseite Übungen Musterlösungen Anhang Einleitung Dieses Buch wendet sich an jeden Leser, der die Programmiersprache C++ neu lernen oder vertiefen möchte, egal ob Anfänger oder fortgeschrittener C++-Programmierer. C++ ist eine weitgehend plattformunabhängige

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein. Schritt 1: Installation des Javacompilers JDK. Der erste Start mit Eclipse Bevor Sie den Java-Compiler installieren sollten Sie sich vergewissern, ob er eventuell schon installiert ist. Gehen sie wie folgt

Mehr

Übungen zur Softwaretechnik

Übungen zur Softwaretechnik Technische Universität München Fakultät für Informatik Lehrstuhl IV: Software & Systems Engineering Markus Pister, Dr. Bernhard Rumpe WS 2002/2003 Lösungsblatt 9 17. Dezember 2002 www4.in.tum.de/~rumpe/se

Mehr

! " # $ " % & Nicki Wruck worldwidewruck 08.02.2006

!  # $  % & Nicki Wruck worldwidewruck 08.02.2006 !"# $ " %& Nicki Wruck worldwidewruck 08.02.2006 Wer kennt die Problematik nicht? Die.pst Datei von Outlook wird unübersichtlich groß, das Starten und Beenden dauert immer länger. Hat man dann noch die.pst

Mehr

Diplomarbeit. Konzeption und Implementierung einer automatisierten Testumgebung. Thomas Wehrspann. 10. Dezember 2008

Diplomarbeit. Konzeption und Implementierung einer automatisierten Testumgebung. Thomas Wehrspann. 10. Dezember 2008 Konzeption und Implementierung einer automatisierten Testumgebung, 10. Dezember 2008 1 Gliederung Einleitung Softwaretests Beispiel Konzeption Zusammenfassung 2 Einleitung Komplexität von Softwaresystemen

Mehr

4D Server v12 64-bit Version BETA VERSION

4D Server v12 64-bit Version BETA VERSION 4D Server v12 64-bit Version BETA VERSION 4D Server v12 unterstützt jetzt das Windows 64-bit Betriebssystem. Hauptvorteil der 64-bit Technologie ist die rundum verbesserte Performance der Anwendungen und

Mehr

Einführung in Eclipse und Java

Einführung in Eclipse und Java Universität Bayreuth Lehrstuhl für Angewandte Informatik IV Datenbanken und Informationssysteme Prof. Dr.-Ing. Jablonski Einführung in Eclipse und Java Dipl.Inf. Manuel Götz Lehrstuhl für Angewandte Informatik

Mehr

SEP 114. Design by Contract

SEP 114. Design by Contract Design by Contract SEP 114 Design by Contract Teile das zu entwickelnde Programm in kleine Einheiten (Klassen, Methoden), die unabhängig voneinander entwickelt und überprüft werden können. Einheiten mit

Mehr

Einführung in die Programmierung

Einführung in die Programmierung : Inhalt Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund - mit / ohne Parameter - mit / ohne Rückgabewerte

Mehr

Software Engineering Klassendiagramme Assoziationen

Software Engineering Klassendiagramme Assoziationen Software Engineering Klassendiagramme Assoziationen Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Lesen von Multiplizitäten (1) Multiplizitäten werden folgendermaßen

Mehr

Informatik 2 Labor 2 Programmieren in MATLAB Georg Richter

Informatik 2 Labor 2 Programmieren in MATLAB Georg Richter Informatik 2 Labor 2 Programmieren in MATLAB Georg Richter Aufgabe 3: Konto Um Geldbeträge korrekt zu verwalten, sind zwecks Vermeidung von Rundungsfehlern entweder alle Beträge in Cents umzuwandeln und

Mehr

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java: Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen

Mehr

Softwaretests in Visual Studio 2010 Ultimate Vergleich mit Java-Testwerkzeugen. Alexander Schunk Marcel Teuber Henry Trobisch

Softwaretests in Visual Studio 2010 Ultimate Vergleich mit Java-Testwerkzeugen. Alexander Schunk Marcel Teuber Henry Trobisch Softwaretests in Visual Studio 2010 Ultimate Vergleich mit Java-Testwerkzeugen Alexander Schunk Henry Trobisch Inhalt 1. Vergleich der Unit-Tests... 2 2. Vergleich der Codeabdeckungs-Tests... 2 3. Vergleich

Mehr

Flyer, Sharepics usw. mit LibreOffice oder OpenOffice erstellen

Flyer, Sharepics usw. mit LibreOffice oder OpenOffice erstellen Flyer, Sharepics usw. mit LibreOffice oder OpenOffice erstellen Wir wollen, dass ihr einfach für eure Ideen und Vorschläge werben könnt. Egal ob in ausgedruckten Flyern, oder in sozialen Netzwerken und

Mehr

Meet the Germans. Lerntipp zur Schulung der Fertigkeit des Sprechens. Lerntipp und Redemittel zur Präsentation oder einen Vortrag halten

Meet the Germans. Lerntipp zur Schulung der Fertigkeit des Sprechens. Lerntipp und Redemittel zur Präsentation oder einen Vortrag halten Meet the Germans Lerntipp zur Schulung der Fertigkeit des Sprechens Lerntipp und Redemittel zur Präsentation oder einen Vortrag halten Handreichungen für die Kursleitung Seite 2, Meet the Germans 2. Lerntipp

Mehr

5. Tutorium zu Programmieren

5. Tutorium zu Programmieren 5. Tutorium zu Programmieren Dennis Ewert Gruppe 6 Universität Karlsruhe Institut für Programmstrukturen und Datenorganisation (IPD) Lehrstuhl Programmierparadigmen WS 2008/2009 c 2008 by IPD Snelting

Mehr

Einführung in das Microsoft.NET-Framework. Programmiersprache C# 02: Visual Studio / Hello World. Boris Hülsmann

Einführung in das Microsoft.NET-Framework. Programmiersprache C# 02: Visual Studio / Hello World. Boris Hülsmann Einführung in das Microsoft.NET-Framework Programmiersprache C# 02: Visual Studio / Hello World Boris Hülsmann 23.09.2010 1 In dieser Einführung bekommen Sie einen kurzen Einstieg in das.net-framework

Mehr

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

8a. Exkurs.NET. 8a.1.NET Architektur 8a. Exkurs.NET Inhalt: 8a.1.NET Architektur 8a.2 Kooperation von Anwendungen über ADO -.NET 8a.3 Unterschiede gegenüber gewöhnlicher WIN32- Programmierung 1 8a.1.NET Architektur Bislang wurden die C/C++

Mehr

Datensicherung. Beschreibung der Datensicherung

Datensicherung. Beschreibung der Datensicherung Datensicherung Mit dem Datensicherungsprogramm können Sie Ihre persönlichen Daten problemlos Sichern. Es ist möglich eine komplette Datensicherung durchzuführen, aber auch nur die neuen und geänderten

Mehr

Handbuch ECDL 2003 Basic Modul 5: Datenbank Grundlagen von relationalen Datenbanken

Handbuch ECDL 2003 Basic Modul 5: Datenbank Grundlagen von relationalen Datenbanken Handbuch ECDL 2003 Basic Modul 5: Datenbank Grundlagen von relationalen Datenbanken Dateiname: ecdl5_01_00_documentation_standard.doc Speicherdatum: 14.02.2005 ECDL 2003 Basic Modul 5 Datenbank - Grundlagen

Mehr

.NET Code schützen. Projekt.NET. Version 1.0

.NET Code schützen. Projekt.NET. Version 1.0 .NET Code schützen Projekt.NET Informationsmaterial zum Schützen des.net Codes Version 1.0 Autor: Status: Ablage: Empfänger: Seiten: D. Hoyer 1 / 6 Verteiler : Dokument1 Seite 1 von 1 Änderungsprotokoll

Mehr

Vermeiden Sie es sich bei einer deutlich erfahreneren Person "dranzuhängen", Sie sind persönlich verantwortlich für Ihren Lernerfolg.

Vermeiden Sie es sich bei einer deutlich erfahreneren Person dranzuhängen, Sie sind persönlich verantwortlich für Ihren Lernerfolg. 1 2 3 4 Vermeiden Sie es sich bei einer deutlich erfahreneren Person "dranzuhängen", Sie sind persönlich verantwortlich für Ihren Lernerfolg. Gerade beim Einstig in der Programmierung muss kontinuierlich

Mehr

In 12 Schritten zum mobilen PC mit Paragon Drive Copy 11 und Microsoft Windows Virtual PC

In 12 Schritten zum mobilen PC mit Paragon Drive Copy 11 und Microsoft Windows Virtual PC PARAGON Technologie GmbH, Systemprogrammierung Heinrich-von-Stephan-Str. 5c 79100 Freiburg, Germany Tel. +49 (0) 761 59018201 Fax +49 (0) 761 59018130 Internet www.paragon-software.com Email sales@paragon-software.com

Mehr

Visual Basic Express Debugging

Visual Basic Express Debugging Inhalt Dokument Beschreibung... 1 Projekt vorbereiten... 1 Verknüpfung zu Autocad/ProStructures einstellen... 2 Debugging... 4 Autocad/ProSteel Beispiel... 5 Dokument Beschreibung Debuggen nennt man das

Mehr

Typumwandlungen bei Referenztypen

Typumwandlungen bei Referenztypen Typumwandlungen bei Referenztypen Genau wie es bei einfachen Typen Typumwandlungen gibt, gibt es auch bei Referenztypen Umwandlungen von einem Referenztypen in einen anderen Referenztypen, die wie bei

Mehr

Tutorium Informatik 1. Aufgabe 2: Formatierte Ein- und Ausgabe

Tutorium Informatik 1. Aufgabe 2: Formatierte Ein- und Ausgabe Tutorium Informatik 1 Aufgabe 2: Formatierte Ein- und Ausgabe Fachbereich: Elektrotechnik Inhaltsverzeichnis 1 Aufgabe 1 2 Benötigte Funktionen und Schlüsselwörter 2 Robert Halas / FH Regensburg - 2003

Mehr

Technische Dokumentation SilentStatistikTool

Technische Dokumentation SilentStatistikTool Technische Dokumentation SilentStatistikTool Version 1.0 Marko Schröder 1115063 Inhalt Einleitung... 3 Klasse Program... 3 Klasse ArgumentHandler... 3 Bereitgestellte Variablen... 3 Bereitgestellte Methoden...

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung Kapitel 6 Vererbung Vererbung 1 Ziele Das Vererbungsprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen

Mehr

impact ordering Info Produktkonfigurator

impact ordering Info Produktkonfigurator impact ordering Info Copyright Copyright 2013 veenion GmbH Alle Rechte vorbehalten. Kein Teil der Dokumentation darf in irgendeiner Form ohne schriftliche Genehmigung der veenion GmbH reproduziert, verändert

Mehr

Qt-Projekte mit Visual Studio 2005

Qt-Projekte mit Visual Studio 2005 Qt-Projekte mit Visual Studio 2005 Benötigte Programme: Visual Studio 2005 Vollversion, Microsoft Qt 4 Open Source s. Qt 4-Installationsanleitung Tabelle 1: Benötigte Programme für die Qt-Programmierung

Mehr

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

Problemstellung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 24: Reflection 1. IDE und automatische Tests. Universität Osnabrück 1 Problemstellung 3 - Objektorientierte Programmierung in Java Vorlesung 24: Reflection 1 SS 2006 Prof. Dr. Frank M. Thiesing, FH Osnabrück Um ein Objekt anzulegen, eine seiner Methoden

Mehr

GetName(), GetName(), GetGeschlecht() und AelterWerden().

GetName(), GetName(), GetGeschlecht() und AelterWerden(). 11. Vererbung Vererbung ist eine der mächtigsten Funktionalitäten der objektorientierten Programmiersprachen. Man versteht unter Vererbung die Tatsache, dass eine Klasse alle Methoden und Variablen einer

Mehr

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 22

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 22 Kapitel 19 Vererbung, UML Seite 1 von 22 Vererbung - Neben der Datenabstraktion und der Datenkapselung ist die Vererbung ein weiteres Merkmal der OOP. - Durch Vererbung werden die Methoden und die Eigenschaften

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen

Mehr

Einführung in PHP. (mit Aufgaben)

Einführung in PHP. (mit Aufgaben) Einführung in PHP (mit Aufgaben) Dynamische Inhalte mit PHP? 2 Aus der Wikipedia (verkürzt): PHP wird auf etwa 244 Millionen Websites eingesetzt (Stand: Januar 2013) und wird auf etwa 80 % aller Websites

Mehr

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE 2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE 2.1 Die Einrichtung der Benutzeroberfläche Das Einrichten einer Android-Eclipse-Entwicklungsumgebung zur Android-Entwicklung ist grundsätzlich nicht

Mehr

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015 Software Engineering Zur Architektur der Applikation Data Repository Franz-Josef Elmer, Universität Basel, HS 2015 Software Engineering: Mit acht bewährten Praktiken zu gutem Code 2 Schichtarchitektur

Mehr

13 OOP MIT DELPHI. Records und Klassen Ein Vergleich

13 OOP MIT DELPHI. Records und Klassen Ein Vergleich 13 OOP MIT DELPHI Delphi war früher "Object Pascal". Dieser Name impliziert eine Funktionalität, welche in der Welt der Programmierung nicht mehr wegzudenken ist: die objektorientierte Programmierung,

Mehr

Artikel Schnittstelle über CSV

Artikel Schnittstelle über CSV Artikel Schnittstelle über CSV Sie können Artikeldaten aus Ihrem EDV System in das NCFOX importieren, dies geschieht durch eine CSV Schnittstelle. Dies hat mehrere Vorteile: Zeitersparnis, die Karteikarte

Mehr

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

Prof. Dr. Uwe Schmidt. 21. August 2007. Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252) Prof. Dr. Uwe Schmidt 21. August 2007 Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252) Zeit: 75 Minuten erlaubte Hilfsmittel: keine Bitte tragen Sie Ihre Antworten und fertigen

Mehr

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag Ludwig-Maximilians-Universität München WS 2015/16 Institut für Informatik Übungsblatt 13 Prof. Dr. R. Hennicker, A. Klarl Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung:

Mehr

Programmieren Tutorium

Programmieren Tutorium Programmieren Tutorium Tom Schildhauer Tutorium 12 Universität Karlsruhe (TH) Institut für Programmstrukturen und Datenorganisation (IPD) Lehrstuhl Programmierparadigmen WS 2008/2009 c 2008 by Tom Schildhauer,

Mehr

Berechnungen in Access Teil I

Berechnungen in Access Teil I in Access Teil I Viele Daten müssen in eine Datenbank nicht eingetragen werden, weil sie sich aus anderen Daten berechnen lassen. Zum Beispiel lässt sich die Mehrwertsteuer oder der Bruttopreis in einer

Mehr

1. Einführung. 2. Die Abschlagsdefinition

1. Einführung. 2. Die Abschlagsdefinition 1. Einführung orgamax bietet die Möglichkeit, Abschlagszahlungen (oder auch Akontozahlungen) zu erstellen. Die Erstellung der Abschlagsrechnung beginnt dabei immer im Auftrag, in dem Höhe und Anzahl der

Mehr