Objects in OOP are like Lego blocks, but they also carry a wee bit of intelligence with them. An object can be similar to a file folder icon on a Macintosh screen, but one that knows it's a folder and would respond to a program's query for all file folders to list their contents. An OOP object could also be a tax form, or an employee in a firm's database, or an e-mail message. Objects know what tasks they can and can't do, and they communicate laterally with each other. Object-oriented programs create a mild distributed intelligence in software.
Errors tend to cluster.
Coding cost is nearly irrelevant compared to the cost of repairing error-prone modules. If a software unit exceeds an error threshold, throw it out, and have a different developer do the recoding. Discard work in progress that shows a tendency toward errors because early errors predict late errors. As software programs mushroom in complexity, it becomes impossible to exhaustively test them at the end. And while statistical sampling can tell if there are likely to be faults left, it can't locate them.