@startuml
'https://plantuml.com/class-diagram
abstract class Student_basis{
     -id: Integer
     -git: String
     -email:String
     -telegram:String
     -phone:String
     -contact:String
--
     +initialize(Hash)
     +contact?(): Boolean
     +validate?(): Boolean
     +get_contacts(): String
     .. getters..
     +git(): String
     +id():String
     +contact():String
     .. setters ..
     id=(Integer)
}

class Student extends Student_basis{
     -lastname: String
     -firstname: String
     -father_name: String

     +{static}from_json(String):Student
     +{static}is_val_name?(String): Boolean
     +{static}is_val_phone?(String): Boolean
     +{static}is_val_telegram?(String): Boolean
     +{static}is_val_email?(String): Boolean
     +{static}is_val_git?(String): Boolean

     +initialize(Hash)
     +set_contacts(Hash)
     +to_s(): String
     +get_info(): String
     +to_json():String
     +{static}read_from_txt(String):Array
     +{static}write_to_txt(String,Array)
     .. getters ..
     +phone(): String
     +telegram(): String
     +email(): String
     +last_name(): String
     +first_name(): String
     +father_name(): String
     .. setters ..
     +git=(String)
     +phone=(String)
     +telegram=(String)
     +email=(String)
     +last_name=(String)
     +first_name=(String)
     +father_name=(String)

}

class Student_short extends Student_basis{
     -lastname_and_initials: String
     
     {static}from_student(Student): ShortStudent
     +initialize(Integer, String)
     +to_s(): String
     .. getters ..
     +lastname_and_initials():String
     .. setters ..

}


class DataTable{
    -table : Array
    -rows_count: Integer
    -cols_count: Integer
    __
    +initialize(Array)
    +get_item(Integer,Integer): Object
    __getters__
    +rows_count: Integer
    +cols_count: Integer
    -table: Array
    __setters__
    -rows_count
    -cols_count
    -table=(Array)
}
abstract class DataList{
    -list : Array
    -selected_objects: Array
    __
    -initialize(Array)
    +select(Integer):Array
    +get_selected(): Array<Integer>
    +get_data(): DataTable
    #get_names()
    #get_fields_datatable(objects)

    __getters__
    -list: Array
    -selected_objects: Array
    __setters__
    +list: Array
    -selected_objects: Array
}

class DataListStudentShort extends DataList{
    --
    +initialize(Array)
    +get_names(): Array
    #get_fields_datatable(Student_short): Array<String>
}

DataList ..> DataTable
DataListStudentShort o-- Student_short
@enduml
