please implement it in a way that calling updateComponentsInfo() from the outside isn't needed when constructing a Ship