If your model has different materials for different parts, your obj file should specify different meshes (using 'g'), which would each use a different material file. Presumably the output of your obj loader would then contain the needed information to distinguish the different pieces (e.g. a different index buffer for each piece, say).
(Ideally though - if all that is different between different pieces of your model is the texture, your modelling program should be able to bake it all into one texture so that you can draw the entire model with a single draw call).
It loads a model and finds by itself the required textures to load.Implementing it in your project shouldn't be too hard.After all I didn't even read it,it's too early and too much for me to talk about subdivisions,just copy and paste,and it will work too.