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:




Layout-Projekt

(EN google-translate)

(PL google-translate)

Hintergründe

Die Basiskonzepte objektorientierter Programmiersprachen lassen sich am besten anhand konkreter Beispiele erklären und motivieren. Deshalb sollen sie im Verlauf der weiteren Vorlesungen im Rahmen eines konkreten Software-Entwicklungs-Projekts dargestellt werden.

Layout-Programme für elektronische Schaltungen

Layout-Programme für elektronische Schaltungen sollen den Entwurf elektronischer Schaltungen erleichtern. Bauteilbibliotheken helfen, die richtigen Maße und Rasterungen für Bauelemente zu verwenden und zu vermeiden, dass sich Bauelemente überlappen. Autorouting hilft, optimale Verbindungen der Bauteile unterinander zu realisieren. Export-Werkzeuge helfen, den Entwurf direkt in Anweisungen z.B. für einen Fräsbohrplotter umzusetzen. Beispiele für solche Layout-Programme sind KiCad, Eagle oder Sprint-Layout.

Mit KiCad erstelltes Layout einer kleinen Mikrocontroller-Schaltung.

Bild 0-1: Mit KiCad erstelltes Layout einer kleinen Mikrocontroller-Schaltung.

Raster-Layout

Im Rahmen dieser Vorlesung soll ein spezielles Layout-Programm entwickelt werden, das eine Teilmenge an möglichen Layout-Aufgaben in besonderem Maße unterstützt, nämlich das Layout für vorgefertigte Lochrasterplatinen mit Kupferkaschierung in vorgegebenen Dreierketten.

Bestückungsseite einer Platine mit Lochraster und Dreierketten, bestückt mit einer 40-Pin-IC-Fassung für einen ATmega32, einem Widerstand und einer Drahtbrücke.

Bild 0-2: Bestückungsseite einer Platine mit Lochraster und Dreierketten, bestückt mit einer 40-Pin-IC-Fassung für einen ATmega32, einem Widerstand und einer Drahtbrücke.

Kupferseite der gleichen Platine.

Bild 0-3: Kupferseite der gleichen Platine.

Anforderungsliste "Must"

An das zu entwickelnde Programm werden folgende Anforderungen gestellt

  • Vorgabe einer Bestückungsfläche mit wählbarer Rasterbreite und -höhe.
  • Alternative zu Dreierketten als Vorgabe-Verknüpfung soll möglich sein, um z.B. geeignetere Laborplatinen für ATmega32-Anwendungen vorgeben zu können.
  • Verfügbarkeit einer Bauteilbibliothek.
  • Repräsentation der Bauteile über eine grafische Beschreibungssprache, d.h. man muß keine neue Klasse schreiben, um ein neues Bauteil zu bekommen, sondern nur eine Textdatei erweitern.
  • Verfügbarkeit von Drahtbrücken zwischen beliebigen Rasterpunkten.
  • Bestücken über eine GUI.
  • Drehen, Spiegeln und Verschieben von Bauteilen auf der Bestückungsfläche.
  • Bauteile sollen mit Freitext versehen werden können.
  • Laden und Speichern eines laufenden Projektes auf die Festplatte, Daten-Repräsentation über ASCII-Datei.
  • Export als Postscriptdatei.

Anforderungsliste "Nice to have"

  • Automatische optimierte Bestückung anhand eines Stromlaufplanes.

Die Anzahl der notwendigen Drahtbrücken und deren Länge sollte möglichst gering gehalten werden. Ein entsprechender Optimierer soll Variationen für die Bestückung durchspielen, um nach einer optimalen Lösung zu suchen.

Der "Stromlaufplan" muss allerdings nicht als grafischer Verbindungsplan vorliegen, sondern es reicht in einer Liste anzugeben, welches Bauteil mit welchem anderen wie verbunden ist.

Verzicht

Auf einige für solche Programme typische Eigenschaften soll im Rahmen dieses Entwicklungsprozesses verzichtet werden, um das Programm schlank und übersichtlich zu halten:

  • Keine Zoom-Funktion, sondern einfache Größenentsprechung zwischen GUI und Postscript.
  • Kein Greifen von Elementen über die Maus (sondern nur über Tab- und Pfeiltasten).
  • Keine Exportfunktionalität zu anderen Formaten, als zu Postscript.

Agile Softwareentwicklung

  • Das Projekt soll im Sinne einer agilen Softwareentwicklung gehandhabt werden.
  • Das bedeutet insbesondere, dass nach jeder Arbeitsphase lauffähiger Code entstanden sein muß, der eine Teilaufgabe des Projekts löst.
Übung P1 (Erste Übung zum Layout-Projekt)
  • Entwerfen Sie eine textuelle Beschreibungssprache für elektronische Bauelemente.
  • Entwerfen Sie ein Testprogramm, das in der Lage ist einen solchen Text einzulesen und eine grafische Repräsentation zu erzeugen.
  • Wie könnte eine sinnvolle Objekt- bzw. Klassen- und Vererbungsstruktur für dieses Teilprojekt aussehen?
  • Kann die textuelle Repräsentation einfacher ausfallen, als die Postscriptsprache?

Die Rasterung der Löcher beträgt in der Realität 2,54mm. Eine "Bounding-Box" um die Bauteile herum muß also nicht viel feiner ausfallen. Welches wäre eine sinnvolle kleinste Längeneinheit, um ein Bauteilschema oder auch eine "Bounding-Box" um die Bauteile herum zu beschreiben? Wie kann man die Syntax für die textuelle Beschreibung so einfach halten, dass möglichst selten Bauteilbeschreibungen durch falsche Benutzereingaben unbrauchbar werden?

Hinweise

  • Die Aufgabe ist in Java zu lösen.
  • Jedoch soll zunächst der zu verarbeitende Text als String vorgegeben werden und die Ausgabe als Postscriptdatei erfolgen.
  • Eine GUI-Umsetzung und grafische Darstellung in Java wird in der kommenden Vorlesung ergänzt.