```mermaid --- title: gui --- classDiagram class JPanel class BorderPanel { #Borderpanel() } class SheetPanel { +SheetPanel(int rows, int columns) } class StatusPanel { #StatusPanel(StatusLabel statusLabel) } class GridPanel { +GridPanel(int rows, int columns) } class RowLabels { -RowLabels(int row) } class SlotLabels { -List~SlotLabel~ labelList +SlotLabels(int rows, int cols) } JPanel <|-- BorderPanel JPanel <|-- GridPanel GridPanel <|-- RowLabels BorderPanel <|-- SheetPanel BorderPanel <|-- StatusPanel GridPanel <|-- SlotLabels ``` ```mermaid classDiagram class JLabel class Observer class ColoredLabel { +ColoredLabel(String text) +ColoredLabel(String text, Color color) +ColoredLabel(String text, Color color, int alignment) } class SlotLabel { +SlotLabel() } class CurrentLabel { +CurrentLabel() } class StatusLabel { +StatusLabel() +update(Observable observable, Object object) } <> Observer ColoredLabel <|-- SlotLabel JLabel <|-- ColoredLabel ColoredLabel <|-- CurrentLabel ColoredLabel <|-- StatusLabel Observer <-- StatusLabel ``` ```mermaid classDiagram class JFrame class XL { -static final int ROWS = 10, COLUMNS = 8 -XLCounter counter -StatusLabel statusLabel -XLList xlList +XL(XL oldXL) +XL(XLList xlList, XLCounter counter) +rename(String title) +main(String[] args) } class JTextField class Editor { +Editor() } class XLCounter { -int counter +increment() +toString() } class Observable class Iterable class XLList { -List~XL~ list +add(XL xl) +isEmpty() boolean +iterator() Iterator~XL~ +last() XL +remove(Xl xl) +setChanged() } <> Iterable JTextField <|-- Editor JFrame <|-- XL Observable <|-- XLList Iterable <-- XLList ```