Nun haben wir alle Programmierwerkzeuge zusammen und können das Gelernte in einer Synthese-Übung vereinigen.

Ähnliche Dokumente
Hydroinformatik II: Gerinnehydraulik

Hydroinformatik II: Gerinnehydraulik

Grundlagen der Informatik Entwicklung von Anwendungen mit dem Qt-Framework

Hydroinformatik I: Klassen

5. Programmierung von Benutzerschnittstellen mit Qt

5. Programmierung von Benutzerschnittstellen mit Qt

Hydroinformatik I - WiSe 2018/2019 V5: Klassen

Fortgeschrittene Kapitel: Grafische Ausgabe mit C++ Karl Gmeiner

Interaktive Simulationen Lektion 1/3: Event-Driven Design und Signals

5. Programmierung von Benutzerschnittstellen

Hydroinformatik I: Klassen

Was ist QT? Beispiele: KDE Google Earth Mathematika

Qt Programmierung Teil 1 Fenster erstellen by NBBN ( CrashKurs-Artig. Was brauche ich? -Einige C++ Kenntnisse

Hydroinformatik I: IO - Files

Praktikum IKT 3. Semester

Einführung in die Programmierung GUI Programmierung Teil 3

d:\c++\semesterarbeit\lottosix\lottosix.cpp /* ======================================================================== Dateiname: lottosix.

Workshop: Entwickeln mit Qt 4. Daniel Molkentin

Hochschule München, FK03 SS Masterstudiengang Technische Berechnung und Simulation. Programmierung von CAx-Systemen Teil 1

Objektorientierte Programmierung mit C++ (WS 2010)

Workshop: Entwickeln mit Qt 4. Daniel Molkentin

Hydroinformatik II: Grundlagen der Kontinuumsmechanik

Qt ist ein plattformübergreifendes Entwicklungs-Framework, geschrieben in C++ Framework für C++, Bindings für andere Programmiersprachen

Motivation. Einfu hrung in die Programmierung GUI Programmierung Teil 2. Problemstellungen. Problemstellungen Jan Quadflieg & Andreas Thom

Einführung in die Informatik und Programmierung (Informatik I)

Einführung in die Programmierung

0. Einführung & Motivation

Interaktive Simulationen Lektion 3/3: Grafische Ausgabe

Hydroinformatik I: Synthese-Übung Sprachelemente

Einführung in die Programmierung Wintersemester 2011/12

Probeklausur. Musterlösung

Programmieren in C/C++ und MATLAB

Lehrstuhl für Datenverarbeitung. Technische Universität München. Grundkurs C++

Lehrstuhl für Datenverarbeitung. Technische Universität München. Grundkurs C++

GUI Programmierung mit Qt

Klausur zu Objektorientierter Softwareentwicklung in C++ 4. Februar 2003 (WS 2002/2003) Beispiellösung

Lehrstuhl für Datenverarbeitung. Technische Universität München. Grundkurs C++

Einführung in die Programmierung

Praxisorientierte Einführung in C++ Lektion: "Einführung in das GUI-Toolkit Qt"

Motivation. Einführung in die Programmierung GUI Programmierung Teil 3. Problemstellungen. Problemstellungen

Das Einsteigerseminar Objektorientierte Programmierung in Java

Einführung in Qt. Im Rahmen der Vorlesung Objektorientierte Softwareentwicklung mit C++ (WS 2002/2003)

Hilfsblatt für C++ Prüfungen im 5. Semester

7. Übung Informatik II - Objektorientierte Programmierung

Praxisorientierte Einführung in C++ Lektion: Einführung in das GUI-Toolkit Qt

Vergleich verschiedener OO-Programmiersprachen

C++ Kurs Teil 3. Standard Template Library (STL) Kommunikation mit der shell Hyper Text Markup Language (HTML)

C++, STL und Qt. C++, STL und Qt. Dipl.Ing. Christoph Stockmayer, Schwaig,

Qt für C++-Anfänger. de.wikibooks.org

0. Einführung & Motivation

S7ComRaspi. Schönberger Thomas 2016 Schönberger Thomas

Felder - Arrays. Typ feldname[] = new Typ[<ganze Zahl >]; Beispiel: double vektor[] = new double[5]; auch eine Initialisierung ist möglich.

Einführung C++ GUI mit Qt

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

Grundlagen der Informatik

Alexander Niemann. Das Einsteigerseminar" < Objektorientierte ^ Programmierung in Java. bhv. i.-

Programmieren in C/C++ und MATLAB

EINFÜHRUNG IN DIE PROGRAMMIERUNG

Einführung in die GUI- Programmierung mit Qt 4. von Yannick Müller Erstbetreuer: Prof. Dr. rer. nat. Gerhard Dikta Zweitbetreuer: Uli Schmidt

Projektmanagement & Software Engineering

2 Programmieren in Java I noch ohne Nachbearbeitung

Hydroinformatik I: Hello World

Hochschule München, FK 03 SS Masterstudiengang Technische Berechnung und Simulation. Programmierung von CAx-Systemen Teil 1

Graphische Benutzungsoberflächen mit Java. Einführung in NetBeans

Einführung in die Programmierung Wintersemester 2010/11

Einführung in die Programmierung mit Qt

Java für Bauingenieure

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

Hydroinformatik I Abschluss C++ Big Data

Modellierung von Hydrosystemen Numerische und daten-basierte Methoden 2018 implizite Finite-Differenzen-Methode Selke-Modell

Hochschule München, FK03 SS Masterstudiengang Technische Berechnung und Simulation. Programmierung von CAx-Systemen Teil 1

Mapra: C++ Teil 4. Felix Gruber, Michael Rom. 24. Mai 2016 IGPM. Felix Gruber, Michael Rom (IGPM) Mapra: C++ Teil 4 24.

Informatik 1 ( ) D-MAVT F2010. Klassen. Yves Brise Übungsstunde 9

7.2 Dynamischer Speicher in Objekten/Kopierkonstruktor

Hydroinformatik I - WiSe 2018/2019 V11: BigData

Rückblick: Benutzerdefinierte Datentypen Definition der Klasse Vektor als Container für 2-dimensionale Vektoren

Konstruktor. public Rational(int i) { Zaehler = i; Nenner = 1; }

Copy-on-write und Implicit Sharing in Qt

Objektorientierte Programmierung in Java

Übung Notendarstellung

Es ist für die Lösung der Programmieraufgabe nicht nötig, den mathematischen Hintergrund zu verstehen, es kann aber beim Verständnis helfen.

1.2 Attribute und Methoden Aufbau einer Java-Klasse:

virtual Wertpapier& operator=(const Wertpapier&); // VIRTUELLE ZUWEISUNG protected: static enum {wortfeldlaenge = 20}; char* name_z; double kurs; };

Die C++ Standard Template Library Andreas Obrist

Übungen zum Bioinformatik-Tutorium. Blatt 6

EINFÜHRUNG IN DIE PROGRAMMIERUNG

Objektorientierte Programmierung Studiengang Medieninformatik

C++ Teil 12. Sven Groß. 18. Jan Sven Groß (IGPM, RWTH Aachen) C++ Teil Jan / 11

Einführung Sprachfeatures Hinweise, Tipps und Styleguide Informationen. Einführung in C. Patrick Schulz

Einführung in die Programmierung Wintersemester 2009/10

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

Einführung in Qt. von. Stephan Hellenbrandt. im Rahmen des Bachelorstudiengangs. Scientific Programming

7. Objektorientierung. Informatik II für Verkehrsingenieure

Modellierung Hydrosysteme: Finite-Differenzen-Methode (FDM)

Qt für C++-Anfänger. Wikibooks.org

Java und Eclipse Installation, erstes Beispielprogramm

Transkript:

Kapitel 10 Synthese-Übung Nun haben wir alle Programmierwerkzeuge zusammen und können das Gelernte in einer Synthese-Übung vereinigen. main() Funktion Instanzen von Klassen anlegen Dateien lesen und schreiben Arbeiten mit Containern (Listen) Grundlage ist die Übung E8.4 - Studenten-Datenbank als Konsolen-Anwendung. Neu ist die Verwendung von Qt, um eine grafische Dialog-Anwendung zu erstellen. 10.1 Programmstruktur Die Programmstruktur basiert auf der Übung E8.4 mit der main.cpp Funktion und der Klasse CStudent main.cpp student.h/cpp Die wichtigste Erweiterung der Einbettung der Übung E8.4 in die Qt Umgebung ist die Dialog-Klasse Dialog. Die Programmstruktur ist in der Abbildung 10.1 zu sehen. 85

86 KAPITEL 10 SYNTHESE-ÜBUNG 10.2 Einbindung in Qt Abbildung 10.1: Programm-Files Warum Qt? (siehe Kapitel 11) mehr als ein Kompiler Grafische Benutzerschnittstelle (GUI) Plattformunabhängigkeit (Win, Mac, Linux, Ubuntu, ) Qt Bausteine die wir benötigen (siehe Kapitel 11): E10.1: Hallo Qt E10.2: Einfache grafische Elemente E10.3: Dialoge 10.3 Qt Programmierung 10.3.1 main() Funktion Die main() Funktion kommt uns sehr bekannt vor - fast wie die von C++. Eine Besonderheit sehen wir in der QApplication.

10.3 QT PROGRAMMIERUNG 87 #include <QApplication> #include "dialog.h" int main(int argc, char *argv[]) QApplication a(argc, argv); Dialog w; w.show(); return a.exec(); Die Applikation stellt die Verbindung der Dialoganwendung mit dem Betriebssystem (OS) her (siehe Abb. 10.2) Abbildung 10.2: Programm-Files Egal welcher Datentyp (Zahlen, Container, Dialoge ) die Syntax zur Erzeugung einer entsprechenden Instanz ist in C++ immer gleich (siehe Abb. 10.3). Abbildung 10.3: Instanz der Klasse QDialog 10.3.2 Dialog Klasse Nun schauen wir uns die Deklaration der Dialog-Klasse an. class Dialog : public QDialog Q_OBJECT public:

88 KAPITEL 10 SYNTHESE-ÜBUNG Dialog(QWidget *parent = 0); ~Dialog(); private: QListWidget *listwidget; QPushButton *pushbuttonread; QLineEdit *lineeditnamefirst; QString name; QStringList names; private slots: void on_pushbuttonread_clicked(); void on_listwidget_clicked(); ; Wir haben die üblichen Verdächtigen: Konstruktor / Destruktor (public), Dialog-Elemente (private), Funktionen, die mit den Dialog-Elementen verknüpft sind (sogenannte slots). Abbildung 10.4: Konstruktor der Klasse QDialog 10.3.3 Dialog Konstruktor Der Konstruktor der Dialog-Klasse besteht aus drei Teilen (Abb. 10.4): 1. Dialog-Elemente anlegen, 2. Verbindung zwischen Dialog-Elementen und Funktionen herstellen (connect) und 3. das Layout für den Dialog designen. (Manchmal benötigen wir einen vierten Teil für das Speichermanagement (nächstes Semester))

10.3 QT PROGRAMMIERUNG 89 Dialog::Dialog(QWidget *parent) : QDialog(parent) //1 Elemente anlegen //pushbutton pushbuttonread = new QPushButton(tr("&Read DB")); //listwidget listwidget = new QListWidget(); //lineedit lineeditnamefirst = new QLineEdit(); //2 connect connect(pushbuttonread,signal(),this,slot())); connect(listwidget,signal(),this,slot()); //3 Layout QVBoxLayout *leftlayout = new QVBoxLayout; QVBoxLayout *rightlayout = new QVBoxLayout; QHBoxLayout *mainlayout = new QHBoxLayout; mainlayout->addlayout(leftlayout); mainlayout->addlayout(rightlayout); setlayout(mainlayout); Wenn der Konstruktor gelaufen ist, sehen wir folgenden Dialog auf dem Bildschirm (Abb. 10.5). Verantwortlich für die Anzeige ist die Funktion w.show(). Abbildung 10.5: Konstruktor Nun schauen wir uns einige der Dialog-Funktionen an (slots).

90 KAPITEL 10 SYNTHESE-ÜBUNG 10.3.4 Dialog Reader Die Lese-Funktion liest die Datenbank-Datei ein. Dabei verwenden wir exakt die Funktion der Übung E8.4 STDRead(). void Dialog::on_pushButtonRead_clicked() // 1 File handling // 2 Read data base STDRead(input_file); // 3 Update data list Nach dem Ausführen der Lesefunktion sehen wir den Inhalt der Datenbank- Datei (Abb. 10.6). Abbildung 10.6: Read 10.3.5 Dialog Sort void Dialog::on_pushButtonSort_clicked() // 1 Datensätze sortieren STDSort(); // 2 Aktualisierung des Listen-Elements listwidget->clear(); //?

10.3 QT PROGRAMMIERUNG 91 names.clear(); CStudent* m_std = NULL; string name_s; for(int i=0;i<(int)std_vector.size();i++) m_std = std_vector[i]; name_s = m_std->name_first + " " + m_std->name_last; name = name_s.data(); names << name; for (int row = 0; row < names.size(); ++row) listwidget->additem(names[row]); Nach dem Ausführen der Sortier-Funktion sehen wir die Datenbank-Einträge alphabetisch sortiert (Abb. 10.7). Das war s für dieses Semester. Abbildung 10.7: Sort