@startuml

interface IMedia {
}

abstract AMedia {
- String title
- Search search
}

class Movie {
}


class Series {
}

class TextUI {
- Scanner scanner
+ String promptText()
+ void displayMessage()
+ int promptNumeric(String msg)
}

class User {
- String username
- String password
+ User(String username, String password)
'Methods
+ createUser(String username, String password)
+ confirmPassword(String password)
+ login(String username, String password)
+ checkUsernameAvailability(String username)
+ validatePassword(String password)
}

class Streaming {
- User user
- TextUI ui
- FileIO io
- Search search
- String moviePath
- String seriePath
- Amedia media
+ void runStreaming()
}

class Main {
+ static void main(String[] args)
}

class FileIO {
+ ArrayList<String> readMovieData(String path)
+ ArrayList<String> readSerieData(String path))
+ void saveFavorites(ArrayList<User> user, String path)
+ void saveWatched(ArrayList<User> user, String path)
}

class Search {
- Scanner scanner
+ Amedia media searchByTitle(String title)
+ Amedia media searchByCategory(String category)
}
class Episode{

}

Main <|-- Streaming
Streaming <|-- IMedia
Streaming <|-- User
Streaming <|-- Search
Streaming <|-- TextUI
IMedia <|.. AMedia
Streaming <|-- FileIO
AMedia <|-- Movie
AMedia  <|-- Series
Series *-- Episode
Movie o-- Episode

@enduml