Upgrade to Pro — share decks privately, control downloads, hide ads and more …

WS12/13 -- Basisinformationstechnologie I | 10: Programmiersprachen II

Jan Wieners
January 08, 2013

WS12/13 -- Basisinformationstechnologie I | 10: Programmiersprachen II

Jan Wieners

January 08, 2013
Tweet

More Decks by Jan Wieners

Other Decks in Education

Transcript

  1. Universität zu Köln. Historisch-Kulturwissenschaftliche Informationsverarbeitung Jan G. Wieners // [email protected]

    Basisinformationstechnologie I Wintersemester 2012/13 07. Januar 2013 – Programmiersprachen II
  2.  Drei-Schichten Architektur / MVC  Programmiersprachen – Konzepte 

    Variablen  Arrays  Auswahlanweisungen  Kontrollstrukturen  Objektorientierte Programmierung  Objekt  Kapselung / Information Hiding / Geheimnisprinzip  Identität vs. Gleichheit  Notation von Klassen  Vererbung Themenüberblick „Programmiersprachen II“
  3. …Auf dem Weg zur Spezifikation: Use-Case • Nach Jacobson (u.a.

    1987) • Spezifiziert eine Sequenz von Aktionen, einschließlich möglicher Varianten, die das System in Interaktion mit Akteuren ausführt • Beschreibt das extern wahrnehmbare Verhalten, ohne auf die interne Struktur oder Details der Realisierung einzugehen (Balzert, Heide: Lehrbuch der Objektmodellierung. Heidelberg, 2005.)
  4.  Interpretiert vs. compiliert  Typisierung: statisch, dynamisch, etc. 

    Paradigmen:  Funktional  Imperativ  Prozedural  Objektorientiert  Grundlegende Konzepte: Variablen, Arrays, Kontrollstrukturen, Funktionen, Objekte  Das Rad nicht neu erfinden: Design Patterns / Entwurfsmuster, Strukturierungsmuster: MVC (u.a.)  Modellierung Programmiersprachen
  5. Drei-Schichten-Architektur  GUI-Schicht  Fachkonzeptschicht  Datenhaltungsschicht GUI-Schicht: Realisiert die

    Benutzungsoberfläche einer Anwendung – Präsentation der Daten, Interaktion mit Benutzer / Benutzerin Fachkonzeptschicht: Modelliert den funktionalen Kern der Anwendung; Zugriff auf Datenhaltungsschicht Datenhaltungsschicht: Form der Datenspeicherung, z.B. relationale DB Schichten-Architektur
  6. MVC – Model View Controller (Modell, Präsentation, Steuerung) 1972 im

    Kontext von „Smalltalk“ (objektorientierte Programmiersprache) vorgestellt
  7. Model! Spielfeld: 3 x 3 Felder Auf jedem Feld wird

    die ID des Spielers abgelegt, der / die das Feld angeklickt hat var gameBoard = [][];
  8. Arrays und Variablen Variable: Benannte Speicherstelle Charakteristika:  Variablenname 

    Wert  (Datentyp)  (Adresse der Speicherzelle) JavaScript: // Deklaration var meineVariable; // Initialisierung meineVariable = 23; C++: // Deklaration int meineVariable; // Initialisierung meineVariable = 23;
  9. Datentypen (C++) Einfache Datentypen in C++:  bool  Wahrheitswerte

     int  ganze Zahlen  unsigned int  Natürliche Zahlen  float  Fließkommazahlen  double  Fließkommazahlen, doppelte Genauigkeit  char  Zeichen Zusammengesetzte Datentypen (in C++):  String  Zeichenketten  Array  Sammlung von Daten eines Datentyps
  10. Arrays Array  Sammlung von Datenwerten Jeder Wert in einem

    Array wird über den Index adressiert; gezählt wird ab 0: meinArray[index] // Deklaration var lottoZahlen = []; // Initialisierung lottoZahlen[0] = 23; lottoZahlen[1] = 15; lottoZahlen[2] = 3; lottoZahlen[3] = 42; lottoZahlen[4] = 7; lottoZahlen[5] = 8; // Ausgabe document.write( lottoZahlen[0] + “, “ + lottoZahlen[1] );
  11. ??? 1. var cellContent = gameBoard[ 0 ] [ 1

    ]; 2. var cellContent = gameBoard[ 2 ] [ 2 ]; 3. var cellContent = gameBoard[ 3 ] [ 1 ];
  12. Präsentation und Interaktion – die Spielschleife SOLANGE kein Spieler /

    keine Spielerin das Spiel gewonnen hat, VERFAHRE WIE FOLGEND: WENN ein leeres Spielfeld angeklickt wurde: lege die aktuelle SpielerID im zweidimensionalen Array „gameGrid“ ab und stelle das Spielersymbol dar IM ANDEREN FALLE: tue nichts Prüfe die Gewinnbedingung
  13. Gewinn- und Abbruchbedingung Ein Spieler / eine Spielerin hat das

    Spiel gewonnen, WENN: der Spieler drei seiner Symbole in (unmittelbarer) horizontaler Reihenfolge abgelegt hat ODER der Spieler drei Symbole in diagonaler Reihenfolge abgelegt hat
  14. Unterscheidung von Kontrollstrukturen in:  Auswahlanweisungen  if  if

    else  (switch)  Wiederholungsanweisungen  while  for  do while  Sprunganweisungen  return  break  continue Kontrollstrukturen
  15. if (ausdruck) { anweisung1 anweisung2 anweisung3 ... } ausdruck 

    variable1 OPERATOR variable2 Auswahlanweisungen: if
  16. C++, JavaScript & Co.: (Vergleichs)Operatoren Operator Operation Beispiel > Größer

    als („ist Wert1 größer als Wert2?“) Wert1 > Wert2 < Kleiner als („ist Wert 1 kleiner als Wert2?“) Wert1 < Wert2 >= Größer gleich („ist Wert1 kleiner oder gleich Wert2?“) Wert1 >= Wert2 <= Kleiner gleich („ist Wert1 kleiner oder gleich Wert2?“) Wert1 <= Wert2 == Auf Gleichheit prüfen variable1 == variable2 != Auf Ungleichheit prüfen variable1 != variable2 && Logisches UND: Zwei Bedingungen prüfen if( (a==b) && (b==c) ) || Logisches ODER if( (a==b) || (b==c) )
  17. Beispiel: Zu prüfen ist, ob der Wert von variableZwei größer

    ist als der Wert von variableEins. Wenn ja, soll eine entsprechende Nachricht ausgegeben werden: int variableEins = 5; int variableZwei = 8; if(variableZwei > variableEins) { cout << “Variable Zwei ist größer als Variable Eins.“; } Auswahlanweisungen: if
  18. if (ausdruck) { anweisung } else if (ausdruck) { anweisung

    } else { anweisung } Auswahlanweisungen: if else
  19. Die switch-Anweisung realisiert eine Auswahl zwischen beliebig vielen Alternativen und

    ist insofern mit einer geschachtelten if else-Anweisung vergleichbar  Mehrfach-Auswahl Auswahlanweisungen: switch
  20. Gewinn- und Abbruchbedingung Ein Spieler / eine Spielerin hat das

    Spiel gewonnen, WENN (IF): der Spieler drei seiner Symbole in (unmittelbarer) horizontaler Reihenfolge abgelegt hat ODER (II) der Spieler drei Symbole in diagonaler Reihenfolge abgelegt hat
  21. Übung 1 Interaktion  Prüfen I: Wurde ein leeres Spielfeld

    angeklickt? Gewinnbedingung Prüfen I: Hat ein Spieler / eine Spielerin drei ihrer Symbole in (unmittelbarer) horizontaler Reihenfolge abgelegt? Prüfen II: Finden sich drei Symbole eines Spielers in diagonaler Folge?
  22. Präsentation und Interaktion – die Spielschleife SOLANGE kein Spieler /

    keine Spielerin das Spiel gewonnen hat, VERFAHRE WIE FOLGEND: WENN ein leeres Spielfeld angeklickt wurde: lege die aktuelle SpielerID im zweidimensionalen Array „gameGrid“ ab und stelle das Spielersymbol dar IM ANDEREN FALLE: tue nichts Prüfe die Gewinnbedingung
  23. Wiederholungsanweisungen (i.e. while, for, do while) machen‘s möglich, bestimmte Verarbeitungsschritte

    unter bestimmten Umständen zu wiederholen Beispiele:  while  for  do while Wiederholungsanweisungen
  24. while (ausdruck){ anweisung1 anweisung2 anweisung3 }  „Führe anweisung1 und

    anweisung2 und anweisung3 so lange aus, wie die Bedingung „ausdruck“ WAHR (TRUE) ist.“ Wiederholungsanweisungen: while
  25. Übung 2 SOLANGE kein Spieler / keine Spielerin das Spiel

    gewonnen hat, VERFAHRE WIE FOLGEND: WENN ein leeres Spielfeld angeklickt wurde: lege die aktuelle SpielerID im zweidimensionalen Array „gameGrid“ ab und stelle das Spielersymbol dar IM ANDEREN FALLE: tue nichts Prüfe die Gewinnbedingung
  26.  Drei-Schichten Architektur / MVC  Programmiersprachen – Konzepte 

    Variablen  Arrays  Auswahlanweisungen  Kontrollstrukturen  Objektorientierte Programmierung  Objekt  Kapselung / Information Hiding / Geheimnisprinzip  Identität vs. Gleichheit  Notation von Klassen  Vererbung Themenüberblick „Programmiersprachen II“
  27. Zentrales Konzept: Objekt  Verfügt über einen bestimmten Zustand 

    Reagiert mit einem definierten Verhalten auf Anforderungen / seine Umgebung  Besitzt eine Identität, die es von anderen Objekten unterscheidet.  Kann mit anderen Objekten verbunden sein: Objektbeziehungen Objekt
  28. Objektzustand umfasst die Attribute und jeweilige Verbindungen zu anderen Objekten

    Attribute: unveränderliche Merkmale des Objekts; die Attributwerte können Änderungen unterliegen Verhalten eines Objekts wird durch eine Menge von Operationen beschrieben; Änderung oder Abfrage des Zustandes ausschließlich durch Operationen Objektorientierte Programmierung Objekt = Daten + Methoden / Operationen
  29. „Änderung oder Abfrage des Zustandes ausschließlich durch Operationen“ ??? 

    Kapselung, Information Hiding, Geheimnisprinzip Objektorientierte Programmierung Abb.: Balzert, Heide: Lehrbuch der Objektmodellierung. Heidelberg, 2005.
  30. var game = { name : '', setName : function(

    gameName ) { this.name = gameName; }, state : '', getGameState : function() { return this.state; }, setGameState : function( gameState ) { this.state = gameState; }, […] }; Objektorientierte Programmierung
  31. Identität  Kann sich nicht ändern  Keine zwei Objekte

    können dieselbe Identität besitzen  Besitzen zwei Objekte dieselben Attributwerte, so sind sie gleich Beispiel nach Balzert: Michael und Susi haben beide ein Kind (Daniel)  Gleichheit. Michael und Janine sind Eltern desselben Kindes (Daniel)  Identität. Objekt Abb.: Balzert, Heide: Lehrbuch der Objektmodellierung. Heidelberg, 2005.
  32. Gleichartige Objekte (Objekte mit denselben Operationen und gleichen Attributen) gehören

    zur gleichen Klasse. Abstrakt vs. konkret: Jedes Objekt ist Exemplar bzw. Instanz einer Klasse Klasse: Definiert für eine Sammlung von Objekten deren  Struktur (Attribute)  Verhalten (Operationen)  Beziehungen  Verfügt über Mechanismen, um neue Objekte zu erzeugen (Object Factory) Klassen
  33. class EineKlasse { public: // öffentlicher Teil EineKlasse() // Konstruktor

    { klassenVariable=23; } ~EineKlasse(); // Destruktor int gebeVariablezurueck(void) { return klassenVariable; } private: // privater Teil int klassenVariable; // private Variable }; Klassen in C++  Kapselung / Information Hiding
  34. Zentrales Konzept II: Vererbung  Eine Klasse kann Elemente (Variablen,

    Konstanten, Funktionen) von anderen Klassen erben Beispiel C++: class Person { string name; //... }; class Mitarbeiter : Person { long sozialversicherungsNr; //... }; Vererbung
  35. Die Klasse Mitarbeiter erbt von der Klasse Person die entsprechenden

    Methoden, um auf die Klassenelemente zuzugreifen und bildet den Spezialfall „Mitarbeiter“ ab, indem sie die Variable sozialversicherungsNr verwendet: class Person { string name; //... }; class Mitarbeiter : Person { long sozialversicherungsNr; //... }; Vererbung
  36. Martial Arts Objects Martial Arts Fighter attribute 1: name attribute

    2: gender attribute 2: two legs attribute 3: two arms behaviour 1: printName() behaviour 2: walk() behaviour 3: wave_arms()
  37. Martial Arts Fighter attribute 1: name attribute 2: gender attribute

    2: two legs attribute 3: two arms behaviour 1: printName() behaviour 2: walk() behaviour 3: wave_arms() Martial Arts Objects
  38. Vererbung beschreibt eine Beziehung zwischen einer allgemeinen Klasse (Basisklasse) und

    einer spezialisierten Klasse. Die spezialisierte Klasse ist vollständig konsistent mit der Basisklasse, enthält aber zusätzliche Informationen (Attribute, Operationen). Die allgemeine Klasse wird auch als Oberklasse (engl. super class), die spezialisierte Klasse als Unterklasse (engl. sub class) bezeichnet. Das Konzept der Vererbung ist nicht nur dazu gedacht, um gemeinsame Eigenschaften und Verhaltensweisen zusammenzufassen, sondern sie muss immer auch eine Generalisierung bzw. Spezialisierung darstellen, d.h. jedes Objekt der Unterklasse "ist ein" Objekt der Oberklasse. Vererbung
  39. /

  40. Aufgabe 1 Erläutern Sie den Begriff "information hiding" und das

    dahinter stehende Konzept. Aufgabe 2 Worin unterscheiden sich die while- und die do while-Schleife? Aufgabe 3 Differenzieren Sie die Begriffe "Klasse" und "Instanz" im Kontext der objektorientierten Programmierung. Aufgabe 4 Wofür steht die Abkürzung "MVC" (im besprochenen Kontext)? Beschreiben Sie kurz, was sich hinter dem Begriff verbirgt. Aufgabe 5 Lesen Sie die Seiten 283 bis 285 in Balzert, Heide: Lehrbuch der Objektmodellierung (http://de.scribd.com/doc/32365794/Balzert-Heide-Lehrbuch-Der-Objektmodellierung) und erläutern Sie die Begriffe "Klassenbibliothek" und "Framework". Aufgabe 6 Beschreiben Sie kurz den Aufbau und die Bestandteile der for-Schleife. Welche Ausgabe generiert die folgende for-Schleife? Hausaufgaben