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:




Rasterlayout - Sammlung von Bauteil-Objekten in einem Objekt der Container-Klasse ArrayList

(EN google-translate)

(PL google-translate)

rl003_bruecke.zip - Dritte Entwicklungsstufe zu Rasterlayout (hier nicht dargestellter Zwischenstand).
rl004_arraylist.zip - Vierte Entwicklungsstufe zu Rasterlayout (weiter unten dargestellt).

Ähnlich wie mit Container-Klassen der Standard-Template-Library (STL) in C++ existiert in Java auch die Möglichkeit für eine bestimmte Gruppe von Containerklassen zu spezifizieren, welche Art von Objekten darin gesammelt werden soll. Auch in Java wird der Typ (Klassenname) dieser gesammelten Objekte in Spitzen Klammern hinter dem Klassennamen angegeben.

In dem hier umgesetzten Fall wird als Typ nicht ein Klassenname, sondern ein Interfacename angegeben. Alle Klassen, die dieses Interface implementieren können somit in der ArrayList bauteile mit Hilfe der Methode add(..) gespeichert werden.

Testweise werden im Folgenden Hauptklasse drei Widerstände und zwei Brücken (neues Bauteil) erzeugt und in bauteile gespeichert. In einer Schleife in der paint-Methode werden alle Bauteile abgerufen und deren zeichnen(..)-Methode aufgerufen.

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;

import hilfsklassen.Bilder;

import bauteile.*;

public class Rasterlayout extends Canvas
{
     private Image rasterbild = null;

     private Widerstand r1,r2,r3;
     private Bruecke b1,b2;

     private ArrayList<BauteilInterface> bauteile = new ArrayList<BauteilInterface>();

     public Rasterlayout()
     {
         rasterbild = Bilder.holeBild("raster.png");

         JFrame frame = new JFrame();
         frame.setBounds(10,10,900,700);
         frame.getContentPane().add(this);
         frame.setVisible(true); 

         bauteile.add(new Widerstand());
         bauteile.add(new Widerstand());
         bauteile.add(new Widerstand());

         bauteile.add(new Bruecke());
         bauteile.add(new Bruecke());

         bauteile.get(0).setTranslation(8,1);         
         bauteile.get(0).setRotation(0); 

//Hierzu muss Interface geändert werden !!!:        
         bauteile.get(0).setBeschriftung("100");

         bauteile.get(1).setTranslation(16,1);         
         bauteile.get(1).setRotation(0);         

         bauteile.get(2).setTranslation(16,1);         
         bauteile.get(2).setRotation(1);         
         bauteile.get(2).setBeschriftung("2k2");

         bauteile.get(3).setTranslation(0,0);         
         bauteile.get(3).setRotation(0);         

         bauteile.get(4).setTranslation(0,0);         
         bauteile.get(4).setRotation(1);         


     }

     public void paint(Graphics g)
     {         
         if(rasterbild!=null)
         {
             g.drawImage(rasterbild,0,0,Color.WHITE,this); 
         }

         Graphics2D g2d = (Graphics2D)g;

         for(int i=0;i<bauteile.size();i++)
                 bauteile.get(i).zeichnen(g2d);

     }

     public static void main(String[] args)
     {
         Rasterlayout rasterlayout = new Rasterlayout();
     }
}

Code 0-1: Quelltext zu Rasterlayout.java

Darstellung nach Start des Programms.

Bild 0-1: Darstellung nach Start des Programms.