@startuml

namespace ecoparasite {

    class Application {
    }

    namespace ecoparasite.input {

        class InputFactory {
           - {static} String DATA_FOLDER
           + {static} String buildDataPath()
           + {static} RawData readData()
           - {static} RawData createRawData()
        }

        class RawData {
           - ArrayList<ArrayList<String>> data
           + RawData()
           + ArrayList<ArrayList<String>> getData()
           + String toString()
           + HashSet<String> getColumnsNames()
           + HashSet<String> getDataFromColumn()
           + HashMap<String,String> getEntry()
        }

        InputFactory o--> RawData

        interface DataParsing {
            + HashSet<Poisson> parse()
        }

        exception InputFileException {
            - String dataFilePath
            + String getMessage()
        }

        exception RawDataOverflow {
            - int excepted
            - int limit
            + String getMessage()
        }

    }

    namespace ecoparasite.poissons {

        class Poisson {
            - String specie
            - Double length
            - Double weight
            - Double infestation
            ---
            + Poisson()
            .. Getters ..
            + String toString()
        }

        class Merlu extends Poisson implements ecoparasite.input.DataParsing {
            + Merlu()
        }

        class Mackerel extends Poisson implements ecoparasite.input.DataParsing {
            + Mackerel()
        }

        abstract class PartiePoisson {
        }

        Poisson o--> PartiePoisson : # fishParts
    }

    namespace ecoparasite.unknown {

        note top of ecoparasite.unknown : Ce paquet est temporaire pour des classes / interfaces qui devront avoir plus de déclinaisons.

        class DataCleaner {
            + DataCleaner()
            + String toString()
        }

        interface DataCompletion {
            + void exception()
        }
    }

}
Exception <|-- InputFileException
Exception <|-- RawDataOverflow

@enduml