@startuml
'https://plantuml.com/class-diagram

'Inheritance
Window <|- Terminal
Import <|- FileImport
Import <|- WebImport


Component <|- Heading
Component <|- Toolbar
Component <|- Button
Component <|- Panel

'Composition
Terminal *-- Heading
Terminal *-- Toolbar
Terminal *-- Button
Terminal *-- Panel

'Aggregation

'Used as a base class for terminal, allows for drawing and sizing
'Implement non abstract then make it abstract
abstract class Window {
int x;
int y;
}

'Implement the Terminal as one class first, then break it out into separate modules
class Terminal {
- List<Component> components

+ void DrawAllComponents()
}

abstract class Component {
- int x
- int y
- double length
- double width
- double height

+ Draw()
'Probably want some sort of polymorphic IsAt to handle all styles of rect
+ IsAt()
}

class Heading {}

class Toolbar {
}

class Button {
}

class Panel {
}

class Import {
- string/file storageLocation
}

class FileImport {
}

class WebImport {
}

class Company {
}

class Ticker {
}

abstract class Data {
}

@enduml