Po co rozdzielać program na części ? Duże programy mają tysiące linii kodu... ważna jest organizacja projektu czyli podział na mniejsze części, które wykonują pewne funkcjonalności. Również często stosuje się katalogi, które posiadają pliki z kodem źródłowym, które razem można połączyć w jedną całość (rozwiązują razem jeden większy problem), często stosuje się przestrzenie nazw, by nie było żadnych konfliktów między funkcjami, klasami...
Ważne jest również rozróżnianie tego co ma być w pliku nagłówkowym, a co w tym z kodem źródłowym.
Rozdzielając program na części nie tracimy wydajności itp, ponieważ wszelkie odwołania do metod ustawi preprocesor (podlinkuje pliki nagłówkowe, oraz zajmie się #define itp), a linker połączy wszystko w jeden plik. Trzeba tutaj również zaznaczyć, że nie musimy posiadać pliku z kodem źródłowym, aby wywoływać metody, wystarczy na skompilowany plik np. w systemie Windows (.dll), który posiada te funkcje.
Określ dokładnie czego nie rozumiesz. Pytaj w komentarzach pod tą odpowiedzią.