Hay personas que dicen que puede escribir un objeto código orientado en cualquier idioma, y también hay personas que dicen que puede escribir código horriblemente desestructurado en cualquier idioma.
El idioma real "OO" le proporciona un puñado de mecanismos para implementar el diseño de OO: los lenguajes tienen conceptos incorporados para objeto y/o clases, para encapsular código con datos, para herencia, etc. C básicamente no tiene nada de esto, pero no hay nada que te impida hacer la programación OO en C, dadas algunas técnicas y autodisciplina (como tu libro seguramente te dice).
¿Pero quieres tú?
Mi opinión es esta: si solo está aprendiendo a hacer programación OO, podría tener más sentido aprender esto mientras es "sostenido por la mano" por un lenguaje que ya incorpora profundamente los conceptos. Un lenguaje bien estructurado, simple e interactivo sería bueno para esto: Dada una opción libre, recomendaría Ruby, Python o Groovy. Dado un lenguaje con OO "magia" incorporada, se vuelve muy obvio cuando estás haciendo OO cosas y cuando estás siendo estructurado, disciplinado y bien organizado. También puede haber cosas que aprender al pasar de C a otro idioma: las similitudes, las diferencias.
Algunas personas recomendarían aprender C++ como la progresión natural de OO desde C. No apoyo esto de todo corazón, porque considero que C++ es un feo complemento de las capacidades de OO en un lenguaje que ya era más "práctico" que elegante. Al pasar de la programación C "estándar" a la programación OO, creo que un programador debería considerar alejarse de la manipulación directa de punteros, por ejemplo, y ciertamente me resultaría oneroso tener que administrar la memoria para mis datos. Los lenguajes OO modernos automatizan esto para que un programador tenga más células cerebrales sobrantes para tareas de mayor nivel. El atractivo de C++, por supuesto, es la velocidad bruta. Debido a que puede caer al mismo nivel casi metálico que C, por lo general es el "más rápido" de los lenguajes OO.
Todo lo dicho: si tienes un proyecto grande donde el idioma requerido es C y quieres usar y practicar técnicas de OO, entonces ¡adelante! Si no es así, puede beneficiarse de aprender OO en un entorno que fomenta y apoya esto, y tal vez más tarde volver a C con su conocimiento de OO. Las técnicas que se enseñan en el libro tendrán sentido para usted en ese momento, y estará en una mejor posición para decidir si realmente desea hacer esto en C o en un idioma de OO "real".
Hay algunos realmente grandes respuestas aquí que estoy totalmente de acuerdo con! –