In your code, you declare "dia" to be a random number between 10 and 30, but since that's a global declaration (outside of all functions and classes), it will only be randomized once, on setup. You probably want to remove "dia" and just use:
diameter = random(10,30);
in your object constructor.
final int OBSTACLE_DISTANCE = 15;
isn't used at all in your code, and there isn't a need in Processing to declare ints as "final" (unlike Java).
Your boids don't respond to the obstacles because neither has any code instructing them how to do so. There are a variety of ways to make obstacles, but you could start by giving boids a behavior that says "if there's an obstacle within a certain distance, perform a steering behavior [shift my angle left or right] to avoid it." To do that you''ll need a loop that checks all the obstacles, by location and size, in relation to the boid.
If you reply to this post, this thread will move to the top of the queue without starting a new one. You can also change the title of the message that shows in the forum, if your question changes. And since your file host seems to make me wait 60 seconds before showing the download link, I would personally suggest
http://pasteit4me.com for no-frills public pasting.