kramann.info
© Guido Kramann

Login: Passwort:










Informatik3
1 Vom_struct_zur_Klasse
..1.1 Vom_struct_zur_Klasse
..1.2 struct_Programm
..1.3 Klassen_Programm
..1.4 Offene_Fragen
..1.5 Historie
..1.6 Objektabstraktion
..1.7 OO_Kundenverwaltung
..1.8 Objektfaehigkeiten
..1.9 Formatierung
..1.10 Motivation
..1.11 Uebung1
..1.12 Uebung2
2 UML
..2.1 Volumenberechnung
..2.2 UML_Klassendiagramm
..2.3 Konstruktor
..2.4 Statische_Variable
3 Strings
..3.1 Klassenbibliotheken
..3.2 stringUML
..3.3 Uebung3
4 Initialisierungen
4 bluej
5 Zeiger_und_Arrays
..5.1 Zeiger
..5.2 Zeiger_und_Funktion
..5.3 Uebung4
6 Vererbung
..6.1 MesswerteUML
..6.2 MesswerteProgramm
..6.3 VererbungsProgramm
..6.4 Vector
..6.5 Uebung
7 Modifikatoren
..7.1 public_Vererbung
..7.2 protected_Vererbung
8 Listen_und_Templates
..8.1 Containertypen
....8.1.1 ListeUML
....8.1.2 ListeProgramm
..8.2 Templates
....8.2.1 Listentemplate
....8.2.2 STLvectorTemplate
..8.3 Uebung5
..8.4 Uebung6
..8.5 Uebung7
9 Java
..9.1 Uebung
..9.2 GettingStarted
..9.3 Animation
..9.4 Hybrid
..9.5 Threads
10 Delegation
11 LayoutProjekt
12 Fenster
13 Uebung
14 Zwischenprojekt
..14.1 Befehle
..14.2 Planung
..14.3 JNI
..14.4 JNIumsetzen
..14.5 Anwendungsklasse
..14.6 GUI01
..14.7 GUI02
15 Rasterlayout
..15.1 Bilder_Packages
..15.2 interfaces
..15.3 ArrayList
..15.4 clone
..15.5 Uebung
16 Nuetzliches
..16.1 Threads
..16.2 Animation
..16.3 RungeKutta
..16.4 Loesungsansatz
..16.5 Internetprogrammierung
....16.5.1 Codegenerierung
....16.5.2 PHP_Programmierung
....16.5.3 PHP_OOP
....16.5.4 Java
17 Algorithmen
..17.1 RungeKutta
..17.2 Loesungsansatz
..17.3 Evoopt
..17.4 Uebung12
..17.5 Uebung8_2014
..17.6 Ausdruecke
18 Uebung10
19 UML_ALT
..19.1 Flaechenberechnung
..19.2 UML_Flaechenberechnung
..19.3 Implementierung
..19.4 ListeUML
..19.5 ListenImplementierung
..19.6 Anwendung
kramann.info
© Guido Kramann

Login: Passwort:




Übung 3

In der Vorlesung vom 15.10.2014 entstandene Programme. - Bitte beachten Sie die zusätzlich eingefügten Beispiele string/Text.cpp und string/Text.java für die nachfolgende Übung!


vorl_oop_2014_10_15.zip - Während der Vorlesung am 15.10.2014 entwickelte Programme



Während der Vorlesung am 06.10.2011 entwickelte Programme

Grundlage der folgenden Übung sind auch die in der Vorlesung entwickelten Programme



Während der Vorlesung am 13.10.2011 entwickelte Programme

Grundlage der folgenden Übung sind auch die in der Vorlesung entwickelten Programme



Während der Vorlesung am 20.10.2011 entwickelte Programme

Aufgabe 1

Schreiben Sie das Programm aus Kapitel 2.3 in Java um.


Hinweis: Benutzen Sie die API (Desktop Referenzen ... Java7), um passende String-Objektmethoden in Java zu identifizieren.

Aufgabe 2

BILDBESCHREIBUNG

Bild 0-1: UML-Klassendiagramm der Klasse Fahrzeug.

  • Obiges UML-Klassendiagramm soll in C++ - Code umgesetzt werden.
  • Der angegebene Konstruktor dient dazu die Objektattribute zu belegen.
  • Ergänzen Sie die entstehende Klasse durch ein main-Programm, das gemäß der Eingaben eines Benutzers ein Objekt vom Typ Fahrzeug anlegt und danach das Objekt wieder ausliest und den Inhalt auf der Konsole ausgibt.
  • Ergänzen Sie eine Objekt-Methode void setKenzeichen(string k), mit der das Kennzeichen neu gesetzt werden kann und die ein Default-String "X-XX-1234" einfügt, wenn ein für die BRD ungültiges Kennzeichen eingegeben wird. Verwenden Sie hierzu die Objektmethoden der Klasse string (s. Vorlesung).
  • Hinweis: Die Überprüfung bei "setKenzeichen" soll darauf beschränkt sein, festzustellen, ob erst eine Buchstabenkolonne mit Großbuchstaben kommt aus dem ASCII-Vorrat, dann ein einzelner Bindestrich, dann eine zweite Buchstabenkolonne mit Großbuchstaben aus dem ASCII-Vorrat, dann ein weiterer Bindestrich und dann nur noch Ziffern.

Aufgabe 3

Postscript ist eine Skriptsprache, die von Druckern verarbeitet werden kann. Schon die Kenntnis weniger Befehle reicht aus, um damit Vektorgrafiken zu generieren. Typischerweise kommen in einer Befehlszeile erst ein paar Parameter und dann ein Schlüsselwort. Der Koordinatenursprung ist auf einem Blatt unten links. Die typische Dateiendung ist .ps, Beispiele:

Schlüsselwort Bedeutung Beispiels-Befehlszeile Erläuterung
setregcolor Stiftfarbe setzen 1.0 0.0 0.0 setrgbcolor Stiftfarbe auf rot
newpath Beginn eines neuen Linienzugs newpath -
moveto Stift ohne zu zeichnen zu Koordinate bewegen 200 100 moveto zu Position x=200, y=100 bewegen
lineto Gerade zu neuer Position ziehen 200 300 lineto Gerade zu x=200 y=300
stroke Linienzug ausführen stroke erst jetzt wird gezeichnet
fill Umschlossene Fläche füllen fill -

Tabelle 0-1: Elementare Befehle in Postskript.

%!PS-Adobe-3.0
0.0 1.0 0.0 setrgbcolor
newpath
100 100 moveto
200 100 lineto
200 200 lineto
100 200 lineto
100 100 lineto
fill
1.0 0.0 0.0 setrgbcolor
newpath
100 100 moveto
200 100 lineto
200 200 lineto
100 200 lineto
100 100 lineto
stroke
showpage

Code 0-1: Skriptbeispiel mit Postscript, Datei beispiel.ps

Sicht auf das Resultat von beispiel.ps (z.B. mit Ghostview geöffnet).

Bild 0-1: Sicht auf das Resultat von beispiel.ps (z.B. mit Ghostview geöffnet).

Das folgende Programm erzeugt ein Postscriptfile mit farbigen Dreiecken, wenn man es folgendermassen aufruft: postscript > datei.ps, oder unter Linux: ./postscript > datei.ps Ergänzen Sie eine Klasse Dreieck, mit der sich farbige gleichschenklige Dreiecke erzeugen lassen, die die gleiche Basisbreite haben wie die Quadrate halb so hoch sind und versehen Sie im Ausgabe dokument alle Quadrate mit einem farbigen "Dach".



Schreiben Sie das ganze Programm in Java um.



#include<iostream>

using namespace std;

class Quadrat
{
    public:
        double rot, gruen, blau;
        void setzeFarbe(double r, double g, double b)
        {
             rot   = r;
             gruen = g;
             blau  = b;
        }
        void lieferQuadrat(double x_pos, double y_pos) 
        {
             cout<<rot<<" "<<gruen<<" "<<blau<<" setrgbcolor"<<endl;
             cout<<"newpath"<<endl;
             cout<<100.0+x_pos<<" "<<100.0+y_pos<<" moveto"<<endl;
             cout<<200.0+x_pos<<" "<<100.0+y_pos<<" lineto"<<endl;
             cout<<200.0+x_pos<<" "<<200.0+y_pos<<" lineto"<<endl;
             cout<<100.0+x_pos<<" "<<200.0+y_pos<<" lineto"<<endl;
             cout<<100.0+x_pos<<" "<<100.0+y_pos<<" lineto"<<endl;
             cout<<"fill"<<endl;
        }
};

int main()
{
    Quadrat quadrat[4];
    quadrat[0].setzeFarbe(1.0,0.0,0.0);
    quadrat[1].setzeFarbe(0.0,1.0,0.0);
    quadrat[2].setzeFarbe(0.0,0.0,1.0);
    quadrat[3].setzeFarbe(0.2,0.2,0.2);

    cout<<"%!PS-Adobe-3.0"<<endl;

    quadrat[0].lieferQuadrat(10.0,10.0);
    quadrat[1].lieferQuadrat(210.0,10.0);
    quadrat[1].lieferQuadrat(210.0,210.0);
    quadrat[2].lieferQuadrat(410.0,210.0);
    quadrat[2].lieferQuadrat(410.0,410.0);
    quadrat[3].lieferQuadrat(10.0,410.0);

    cout<<"showpage"<<endl;
}

Code 0-2: Programm postscript.cpp zur Generierung folgenden Bildes:

Grafische Ausgabe der Datei datei.ps

Bild 0-2: Grafische Ausgabe der Datei datei.ps