Si a las 2 preguntas.
Ten en cuenta que al dividir el programa en objetos, a cada objeto le puedes asignar una responsabilidad, es decir, si tienes un grupo de objetos gráficos, para dibujarlos en pantalla solo necesitas decirle a cada objeto como se tiene que dibujar y en el procedimiento general iras mandando un mensaje a cada objeto para que se dibuje en pantalla, de la siguiente forma
void dibujar(void) {
cuadrado.dibujar();
triangulo.dibujar();
circulo.dibujar();
}
Si ahora quieres dibujar rombos, solo tienes que decirle al rombo como se tiene que dibujar y mandarle un mensaje para que se dibuje, con lo cual ganas en escalabilidad. Ganar en orden lo iras viendo conforme hagas proyectos orientados a objetos.
Una ultima cosa: cuando te acostumbres a pensar en objetos y en sus responsabilidades, luego te costara pensar en funciones.